grub: GRand Unified Bootloader

grub0.x: grub legacy

grub1.x: grub2

 

grub legacy:

stage1:mbr

stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;

stage2:磁盘分区(/boot/grub/)

 

配置文件:

/boot/grub/grub.conf <-- /etc/grub.conf

 

GRUB 功能

(1) 提供菜单、并提供交互式接口

e: 编辑模式,用于编辑菜单;

c: 命令模式,交互式接口;

(2) 加载用户选择的内核或操作系统

允许传递参数给内核

可隐藏此菜单

(3) 为菜单提供了保护机制

为编辑菜单进行认证

为启用内核或操作系统进行认证

 

boot目录单独分区:

boot挂载至根,访问boot中的文件:/boot/vmlinuz

boot单独分区:访问boot中的文件:/vmlinuz

注意:boot是否单独分区,决定着访问boot中的文件路径不同。

 

GRUB中如何识别设备

(hd#,#)

hd#: 磁盘编号,用数字表示;从0开始编号,表示第几块硬盘;

#: 分区编号,用数字表示; 0开始编号;表示硬盘上的第几块分区;

(hd0,0):第一块硬盘的第一个分区

 

grub的命令行接口

help: 获取帮助列表

help KEYWORD: 详细帮助信息

find (hd#,#)/PATH/TO/SOMEFILE  查找磁盘文件上是否有某个文件

root (hd#,#)   设定某个磁盘文件作为根设备

kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的命令行参数;

例如:init=/bin/bash, selinux=0    //bash作为第一个启动进程(而不是init);关闭Selinux

initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk

boot: 引导启动选定的内核;

手动在grub命令行接口启动系统:

grub>root (hd#,#)

grub>kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE

grub>initrd /initramfs-VERSION-RELEASE.img

grub>boot

 

配置文件:/boot/grub/grub.conf

配置项:

default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;

timeout=#:指定菜单项等待选项选择的时长;

splashp_w_picpath=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;

hiddenmenu:隐藏菜单;

password [--md5] STRING: GRUB菜单编辑认证;不使用--md5,只要放明文串就行了;

加密存放:

#grub-md5-crypt命令,复制生成的字符串至STRING

title TITLE:定义菜单项“标题”, 可出现多次;

root (hd#,#)grub查找stage2kernel文件所在设备分区;为grub的“根”;

kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核

initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件;

password [--md5] STRING: 启动选定的内核或操作系统时进行认证;

 

进入单用户模式:

(1) 编辑grub菜单(选定要编辑的title,而后使用e命令);

(2) 在选定的kernel后附加1, s, Ssingle都可以;

(3) kernel所在行,键入“b”命令;

 

安装GRUB

GRUB损坏,但系统未关机:

(1)grub-install

grub-install --root-directory=ROOT/dev/DISK     //--root-directory=ROOT指定boot的父目录; /dev/DISK指定本地硬盘

 

(2)grub

grub>root (hd#,#)

grub>setup (hd#)

GRUB损坏,系统关机:

插入系统安装光盘,进入救援模式;使用grub-install修复。