GRUB的加载流程
GRUB是GNU的一款多重引导软件。GRUB包含了3个重要的文件:stage1 ,e2fsstage1_5,stage2。这三个文件分别代表了GRUB运行的3个阶段。
1.stage1
stage1实际存在于MBR的bootloader段中,由BIOS加载执行,stage1会加载stage1.5(例如e2fsstate1_5表示ext2文件系统的stage1.5)。
stage1.5用于让GRUB可以识别对应的文件系统。问题是在stage1没有加载stage1.5前不能识别文件系统,那么stage1如何找到stage1.5的呢?
2.stage1.5
stage1.5实际上存在于MBR之后的32K中,这样stage1在没有文件系统的情况下就可以找到stage1.5了。stage1.5的作用是加载文件系统,并且
找到stage2加载对应的stage2
3.stage2
stage2是GRUB的主程序,实现了GRUB的主要功能:提供选单,读取配置文件(/boot/grub/grub.conf),连接下一个引导扇区(Boot Sector)。
GRUB的设置
grub一般讲设置文件放在/boot/grub下,有些系统还会子啊/etc下建立一个grub.conf的链接文件。
default=0 timeout=10 splashimage=(hd1,2)/boot/grub/splash.xpm.gz title Windows2K rootnoverify (hd0,0) chainloader +1 title RedHat9 root (hd1,2) kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/ initrd /boot/initrd-2.4.20-8.img title Mandrake9.1 kernel (hd1,4)/boot/vmlinuz root=/dev/hdb5 quiet devfs=mount acpi=off vga=788 initrd (hd1,4)/boot/initrd.img
hiddenmenu:隐藏菜单
default=0 :指定默认系统
password:grub的密码,用于保护grub引导选项不被修改。可以用grub-md5-crypt指令产生
开机选项:
title:操作系统的名称,可以自行指定,显示于启动画面中
root:指定kernel以及initrd所在的硬盘,用hd(x,x)指定,例如(hd0,0)表示第一块硬盘的第一个分区。
kernel:加载kernel的位置
多重引导管理
GRUB指派可以分为2种:直接加载和链接加载
1.直接加载
用于加载原本就支持多重引导的系统:Linux,FreeBSD,UNIX等,可以直接加载其kernel
2.链接加载
用于加载不支持多重引导的系统:windows。安装windows时会强制重写MBR,导致别的系统无法正常加载,所以一般安装系统时
要先安装windows,再安装别的系统。