GRUB启动过程分析 & GRUB 引导程序配置
上一篇 / 下一篇 2007-12-08 01:45:25 / 个人分类:Linux系统配置
,aYC {%r+c0
4N2Q1a}8P:KtI0GRUB对设备的命名
6xo*N*_ S2O0
!t:RH5n/^8f-V0GRUB的执行流程
}E Rxk7U's6t~0c0安装GRUB到MBR51Testing软件测试网w/W4@ c7M Oy3N7Iw;D
r9iV?^&D1@"^)T P_,p'N+`0
GRUB配置文件示例
timeout 30 #等待用户选择菜单项的时间(以秒计),超时则引导默认的选项51Testing软件测试网wz Y2WP;kq
default 0 #默认选项,第一项51Testing软件测试网hY'b.~ pAc!K
fallback 1 #如果第一项出错,则启动下面的后备选项51Testing软件测试网wz:Wh(\
splashimage=(hd0,0)/grub/splash.xpm.gz #GRUB启动画面51Testing软件测试网Ey8R"Fz e#mA/S?5I
Vva&G?Z \0#以下是启动Linux的配置
XMO&XH([{r0titleRed Hat Linux Enterprise AS3 for syd168 #启动项的菜单标题
-~6ie-cMOb0root (hd0,0) #指定根文件系统,第1块硬盘第1个扇区中的/boot。51Testing软件测试网3ScIL#c+m$F
kernel /vmlinuz-2.4.18 ro root=LABEL=/ #内核在/boot中51Testing软件测试网5q(k1[ u"v*r#W
initrd /initrd-2.4.18-14.img #启动RAM盘在/boot下
*I@9GhN-xh051Testing软件测试网`6r6A rY I@7S
#以下是启动Windows的配置,如果只有Linux就不需要51Testing软件测试网Yvb#Tu*\
title Windows2003 Enterprise for syd168 #Windows启动菜单标题51Testing软件测试网I;r9?)iDa
root noverify(hd0,1) #该操作系统在hd0的第二分区,不mount
+y? lO$eT-nt@.nK"H0chainloader +1 #从第一个硬盘的第二个分区引导Windows
6w\:D;\/{\7t051Testing软件测试网C]^3cpp
#=================/boot/grub/grub.conf文件范例==================
Wgp5?B,s RT0
配置过程通常如下:51Testing软件测试网/Fyu!jw
a) 用root命令设置包含操作系统内核的根设备51Testing软件测试网*DK~n)} s
b) 用kernel命令装载内核映象文件,如果这个内核引导的时有参数的话,可以直接将参数加在内核文件名的后面
@PNCL T:g Y0c) 用module或modulenounzip装载内核模块
BtM/g7x#A(l0d) boot开始引导51Testing软件测试网Nw#O|%GDl!z)G/t
(2) chainload引导51Testing软件测试网(Lc8OZ/Ee,O0E
a) 设置GRUB的根设备,用rootnoverify (hdx,y)指定
PP"S1JQT~ a P0b) 开始引导,用chainloader +1指定,此处“+1”是指示GRUB读入分区的第一个扇区的引导记录。51Testing软件测试网A7FPn/G1ozo#Q
c) 执行boot开始引导51Testing软件测试网q:bsuh+Q
以上是一般的chainloader方式,对于DOS和WINDOWS,可以简单地用两条指令进行引导:chainloader (hdx,y)+1,然后boot,其中x,y用来指明所在分区号。
-{Qx8u(R1k5[0(3) 从网络引导:51Testing软件测试网l:D:Z2c]T p
为了使GRUB能够支持从网络引导,需要在编译时打开网络支持选项(请参考源文件中的netboot/README.netboot)。另外,要在网络中设置两个服务:动态IP服务(BOOTP、DHCP或RARP)和FTP服务。然后,分别针对不同的服务器BOOTP,DHCP或RARP运行bootp,dhcp或rarp。如果一切设置无误的话GRUB就会给出IP,IP netmask和TFTP服务器的IP和网关的IP地址。最后,从网上得到操作系统的映象文件。下面是一个例子:
/p ww:W\9p{!G+B?0grub> bootp
;CDfxaj#g'yi&D0Probing...[NE*000]
mx&Yn:@W1xl&y aP0NE2000 base ...
qdC#H[d{ VP6c0Address: 192.168.110.23 Netmask: 255.255.255.0
tU1y-Z E0z0Server: 192.168.110.14 Gateway: 192.168.110.151Testing软件测试网~8r+{PO*|a)w
grub> root (nd)51Testing软件测试网ZdliZ `/n3]Vw
grub> kernel /tftproot/gnumach.gz root=sd0s1
/e6w#L4SBiNSb3SC.C+X0======================================================================51Testing软件测试网KY5@M@7E
51Testing软件测试网{*g GLv
全世界linuxer都知道grub是什么东西,但对于MBR引导到grub再引导到具体操作系统的这个流程可能有不少朋友就比较迷糊了。这不,cu上一位朋友就发出了这样一个求助贴:51Testing软件测试网%fG%s6D2g\$?;H
WaA?8z)X+d0
+g/e;w+M6Z"Q051Testing软件测试网^,C:L5I.l\ u'f假如现在一台电脑上装了WIN2000系统,那么我现在在装上LINUX系统和GRUB,那么假如把GRUB装在主分区的话,GRUB直接 引导 LINUX和WIN2000,我是可以理解的,因为MBR中是GRUB的STAGE1(对不对呢?),MBR通过检查DPT分区信息引导系统跳转至DBR (活动分区),我这里想问的活动分区是什么时候设的呢?那么装GRUB到MBR里,那原来MBR中的WIN的引导信息是怎么处理的呢?是不是我们假如说装 GRUB到MBR的时候,GRUB就把GRUB所在那个区设置为了活动分区了呢?然后GRUB引导时候,MBR就找到那个活动分区找到所需要的文件,然后 继续呢?假如说把GRUB装到其他分区(非主引导区)的话,那是怎么样实现GRUB先启动的呢?不是先MBR吗?因为装到了其他分区,没有改主引导区,因 此主引导区还是WIN2000的引导数据啊,怎么会GRUB先启动了呢?这是为什么呢?跟活动分区有关系没有呢?我看资料上写的是哪个系统启动哪个系统就 是活动分区,可是那样的话,似乎就解释不通了啊,就是最最开始这个地方一直不懂,理不清楚。
*~:\'y(i7O-T051Testing软件测试网:{F.? opT(M-`'n j*g{{)~^7{Q0a#e*u:S$ib!T0下面就是cu各个玩家对这个问题分析讨论的总结。
;l2RaOL#P-_u(Em051Testing软件测试网B&` kS@!QW7x51Testing软件测试网 uI d]VP:c
51Testing软件测试网'Z O2Q1h{)a?D*R首先让我们看看传统的启动流程:加载并运行Master Boot Record(MBR)主引导区内容(如lilo等)。然后扫描分区表,定位活动分区,并将活动分区上的引导扇区内容加载到内存中执行。