stage2及内核等通常放置于一个基本磁盘分区:
功能:
1. 提供菜单、并提供交互式接口
e:编辑模式、用于编辑菜单
c:命令模式,交互式接口
2. 加载用户选择的内核或操作系统允许传递参数给内核可隐藏此菜单
3. 为菜单提供了保护机制、为编辑菜单进行认证、为启用内核或操作系统进行认证
如何识别设备:
(hd#,#):磁盘编号,用数字表示,从0开始
#:分区编号,用数字表示,从0开始编号
grub的命令行接口:
help: 获取帮助列表
help Keyword:详细帮助信息
find (hd#,#)/path/to/somefile
root (hd#,#)
kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件。额外还可以添加许多内核支持的cmdline参数。例如 init=/path/to/init, selinux=0
initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk
boot: 引导启动选定的内核
grub的配置文件/boot/grub /grub.conf说明
其配置项如下:
default=# : 设定默认启动的菜单项,编号从0开始
timeout=#:指定项等待选项选择的超时时长
splashimage=(hd#,#)/path/to/xpm_pic_file:指明菜单背景图片文件路径。
hiddenmenu:默认隐藏菜单,即需要在指定时间(即上面的timeout)内按任意键才会出现。
password [--md5] STRING: 菜单编辑认证(grub提供了`grub-md5-crypt`命令生成加密的密码)即给grub添加密码.
title TITLE:定义菜单项“标题”,可出现多次
root (hd0,0): grub查找stage2及kernel文件所在设备分区,
为grub的“根”。对grub而言,所有类型硬盘一律为hd,
第一个0表示第一个磁盘,第二个0表示对应磁盘的分区
kernel /PATH/TOVMLINUZ_FILE [PARAMETERS] ,启动的内核路径
及传递给内核的参数(与`cat /proc/cmdline`)。
initrd /PATH/TO/INITRAMFS_FILE; 内核匹配的ramfs文件。
passwd [--md5] STRING: 启动选定的内核或操作系统时进行认证。
如果无法提供则启动不了指定系统.
利用grub启用单用户模式可以查看这里。
安装grub(即grub被破坏时如何进行安装)
1. mbr中的前446个bytes被破坏但没有重启系统时
dd if=/dev/zero of=/dev/sda bs=1 count=100 # 破坏前100个字节的数据
sync # 同步到磁盘
# 这时再重启系统会发现已经重启不了了.在数据破坏但没有重启系统的情况下,可以使用下面方法来恢复.
grub # 进入grub命令行
grub> root (hd0,0) # 这里不一定是hd0,0 所以要事先确认/boot目录所在磁盘号
grub>setup (hd0)
2. mbr中的前446个bytes被破坏但系统又重启了
grub-install --root-directory=xxx /dev/sdx (xxx指的是/boot所处的目录)
3. grub配置文件被删除后如何恢复
# grub配置文件没有的话重启会进入到grub提示行
grub> root (hd0,0) # 指定/boot目录所在的磁盘分区,不确定的话可
# 以用find命令 find (hd0,0)/TAB补全 的形式逐个查找
grub> kernel /vmlinuz-TAB补全
grub> initrd /initrd-TAB补全
grub> boot # 回车