grub详解(待续)

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说明
grub详解(待续)_第1张图片
CentOS6.8grub配置文件
其配置项如下:
    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   # 回车

你可能感兴趣的:(grub详解(待续))