stage1.5
第一阶段446字节的bootloader无法存放内核位置,/boot/grub/grub.config里面有内核位置,但是/boot的文件系统需要加载,即想办法识别/boot的文件系统 来读取config文件加载内核。MBRbootloader太小无法容下文件系统的驱动代码,而且文件系统的类型有很多种,比如ext2 xfs ext4 fat32等,MBRbootloader无法容下这么多种文件系统的驱动,所以,只能提供一个中间的过度bootloader即stage1_5 bootloader
1.5阶段是MBR后面的分区,grub-install 时候,会将/boot/grub所在文件系统类型对应的stage1_5硬编码到MBR扇区后第一个分区前15个扇区中,因此这段空间位于MBR分区后,第一个分区之前。
能够识别启动分区文件系统
grub访问/boot下的stage2的文件,将stage2载入内存并执行
stage2
<br>
分区文件/boot/grub/<br>
解析/boot/grub/grub.conf
显示操作系统启动菜单与背景图片,并提供交互式接口
a内核参数
e编辑模式用于编辑菜单
c命令模式,交互式接口
设置等待秒数
加载内核镜像到内存
为菜单提供了保护机制,为编辑启动菜单进行认证<br>为启用内核或操作系统进行认证
通过/boot/initrd开头文件建立虚拟文件系统
转交控制权给内核
default=0<br>timeout=5<br>splashimage=(hd0,0)/boot/grub/splash.xpm.gz<br>hiddenmenu<br>serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1<br>terminal --timeout=3 console serial<br>title CentOS (2.6.32-642.6.2.el6.x86_64)<br> root (hd0,0)<br> kernel /boot/vmlinuz-2.6.32-642.6.2.el6.x86_64 ro root=/dev/vda1 console=ttyS0 console=tty0 panic=5 rd_NO_LUKS rd_NO_LVM LANG=C rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM<br> initrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img<br>title CentOS 6 (2.6.32-642.el6.x86_64)<br> root (hd0,0)<br> kernel /boot/vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/vda1 console=ttyS0 console=tty0 panic=5 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM<br> initrd /boot/initramfs-2.6.32-642.el6.x86_64.img<br>
default=#: 设定默认启动的菜单项;落单项(title)编号从0开始<br>timeout=#:指定菜单项等待选项选择的时长<br>splashimage=(hd#,#)/PATH/XPM_FILE:菜单背景图片文件路径<br>password [--md5| --encrypt] STRING: 启动菜单编辑认证<br>hiddenmenu:隐藏菜单<br>title TITLE:定义菜单项“标题”, 可出现多次<br>root (hd#,#):查找stage2及kernel文件所在设备分区;为grub的根<br>kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核<br>initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件<br>password [--md5|--encrypted ] STRING: 启动选定的内核或操作系统时进行认证<br>