zxlben

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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,再安装别的系统。

 

posted on 2013-12-07 11:18  zxlben  阅读(325)  评论(0编辑  收藏  举报