全面接触GRUB
我们把这个目录称作image directory:/usr/share/grub/i386-redhat
我们把这个目录称作boot directory:/boot/grub/
一、创建一个GRUB启动软盘方法:
#cd /usr/share/grub/i386-redhat
#dd if=stage1 of=/dev/fd0 bs=512 count=1
#dd if=stage2 of=/dev/fd0 bs=512 seek=1
该启动软盘将把系统引导进入一个grub命令提示符的界面;这种方法制作的启动软盘不具有可读的文件系统格式,不能挂接。
二、本地安装GRUB的方法:
首先准备一张GRUB启动软盘并软盘启动,
grub> root (hd0,0) 指定boot所在分区,如果不能确认boot在哪个分区可以使用find进行查找,
grub> find /boot/grub/stage1 如果boot是单独一个分区则应该去掉路径/boot
grub> setup (hd0) 将GRUB安装在MBR,如果希望安装在某个分区始端则,
grub> setup (hd0,?) GRUB将作为辅助引导程序使用
三、使用grub-install安装GRUB的方法:
#grub-install /dev/hda
#grub-install --root-directory=/boot /dev/hda 当/boot被单独列为一个分区时,有必要指出
#grub-install --root-directory=/media/floppy fd0 需要事先准备好一张软盘,格式化为ext2,挂接好。这个命令创建了一张GRUB启动盘,该盘具有ext2文件系统。
grub-install是一个shell脚本,在其识别系统中的硬件设备时存在发生错误的风险,不建议使用这种方式安装GRUB。
四、GRUB直接装载系统的步骤:
1、Set the GRUB's root device with the command 'root' . For example, root (hd0,0)
2、Load the kernel image with the command 'kernel' . For example, kernel /vmlinuz-version ro root=/dev/sda2
3、Load the initrd image with the command 'initrd' . For example, initrd /initrd-version
4、Run the command 'boot'
注:initrd 是inittal ramdisk的缩写,这个命令作用是'Load an initial ramdisk for a
Linux format boot image and set the appropriate parameters in the Linux
setup area in memory.'
五、GRUB间接装载其它系统的步骤(如windows):
原理是GRUB先调用另外一个引导软件,这个引导软件应该已经被装在某一个分区的“boot sector”
1、grub> rootnoverify (hd0,0) 'Set GRUB's root device without mounting'
2、grub> makeactive
3、grub> chainloader +1
"+1" , GRUB将读取指定分区的第一个sector中数据。
4、grub> boot
六、GRUB的安全性:
GRUB可以支持明文密码和md5加密的密码。
使用明文密码方法 password PASSWORD
使用md5加密密码方法 password --md5 PASSWORD
生成md5算法密码的方法 grub> md5crypt [回车]
编辑/boot/grub/grub.conf,使用password,lock命令实现几种加密方法如下:
1) 单纯对GRUB界面加密,而不对被引导的系统加密
在timeout一行下面加一行: password --md5 PASSWORD
2) 对GRUB界面加密,同时对被引导的系统加密
在timeout一行下面加一行: password --md5 PASSWORD
在title一行下面加一行: lock
3) 同时存在多个被引导系统,针对特定的系统实例分别加密(未对GRUB操作界面加密)
在title一行下面加一行: lock
在lock一行下面紧贴着再加一行: password --md5 PASSWORD
注:lock不能单独使用
七、GRUB image 文件:
stage1,stage2是最重要的两个映像文件;
stage1 的全部工作就是装载stage2(或者stage1.5)。PC的启动扇区(boot sector)大小是512字节,stage1的大小也是512字节,所以stage1可以被恰好嵌入在boot sector中。
stage1 以扇区列表格式(block list format)将stage2的地址信息存储起来。
stage1 encodes the location of stage2(or stage1.5) in a block list format.stage1 can not understant any filesystem structure.
stage2 是GRUB的核心映像文件。它负责除启动自己以外的其它所有工作。stage2有文件系统格式无关性。
stage1.5 是一个桥文件。stage1.5有一系列文件,每个都只支持某一个类型的文件系统。stage1不支持任何类型的文件系统。stage1装载stage1.5, stage1.5装载stage2。
八、什么是block list format
这是用于寻址定位一些未存放在任何文件系统中的文件的方法。比如chainloader。
它的格式是 [起点]+长度[,[起点]+长度].... '0+100,200+1,300+300' 这代表GRUB将读取block0--blcok99, block200, block300--block599 。