Linux下Grub引导之进阶

上一篇详细介绍了我们的个人电脑开机时的启动顺序,以及Grub引导程序怎么配置、各个配置项的详细释义等,这一篇将介绍Grub是如何实现多系统(2个或者2个以上的操作系统)引导;在引导的过程中,如何传参给内核;/boot/grub/grub.conf文件配置错误时,又该如何引导系统。

我们以引导双系统为例。我们知道,MBR的分区信息部分有64Bytes大小,每个分区信息要占用16Bytes的空间,因此,这里最多只能保存4个分区的信息,如果这块硬盘上的分区数大于4个,那么需要借助扩展分区来实现,我们有以下公式帮助记忆:

X(p)+Y(E)=4

其中p(primary)表示基本分区,E(Extend)表示扩展分区。假如我们安装的第一个操作系统占据了4个主分区,即X=4,Y=0,那么待安装第二个操作系统时,除非删除第一个操作系统的某个分区,否则由于没有多余的分区支持,将无法安装,所以,在安装多个操作系统时,基本分区最多只能占3个,这个很重要。

假设我们安装的双操作系统,其中一个是操作系统是MicroSoft的Windows操作系统,另一个是Linux操作系统,那么强烈建议,先安装Windows操作系统,再安装Linux操作系统。这是因为Windows操作系统的内核引导程序一般用NTLDR,这只引导程序不怎么支持Linux,现在少数Windows的引导程序能够引导Linux,但又何必冒险呢?而Linux的引导程序Grub是支持Windows操作系统的引导的。那么如果先安装Linux,后安装Windows时,NTLDR引导程序将会重写MBR区,将Grub抹去,由于NTLDR不支持Linux操作系统的引导,Linux系统就作废了;如果先安装Windows,再安装Linux的话,Linux的引导程序Grub会重写MBR区,把NTLDR抹掉,由于Grub是支持Windows引导的,因此它允许我们配置Windows的引导信息,或者自动继承过来,实现双系统的引导。

下面贴出一个双系统引导的Grub.conf配置详情,谨供参考:

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

passwd linuxsir

title Red Hat ES(2.6.9-5.EL)

root (hd0,0)

kernel /vmlinuz-2.6.9-5.EL ro root=LABEL=/ rhgb quiet

initrd /initrd-2.6.9-5.EL.img

title WindowsXP

rootnoverify (hd0,6)

chainloader +1

开机后,进展到Grub引导程序时,会有一个操作系统的选择菜单(如果/boot/grub/grub.conf有hiddenmenu一行,那么需要按下键盘的enter才会显示),我们选中linux操作系统,再在键盘上按a键,就进入了传参的提示画面:

grub append> ro root=LABEL=/

此时需要我们从键盘上输入一个数字(0-6),代表了系统启动的级别,例如0代表关机,1代表单用户模式,3代表多用户命令行界面,5代表多用户图形界面,6代表重启等。我们输入1后,会一路自动运行下去,不用输入用户名和密码,自动就进入了系统,而且是root用户,这样极其不安全,因此在grub.conf文件中建议加入passwd 这一行,使得用户在传参时,要密码才行。我们最好--md5加密,不用明文显示,MD5加密的方法是:进入操作系统后,在root帐号下输入

grub-md5-crypt <password>

回车后系统会自动算出一串md5密文显示出来,将这串密文拷贝到grub.conf 文档中passwd --md5 后面即可。

如果我们不小心把Grub.conf配置错了又怎么办呢?

例如本来应该是root(hd0,0),被配置成了root(hd0,1),这是肯定无法引导系统启动的,此时我们可以用以下的方法来实现:选中了待修改的操作系统后,我们按键盘上的e键,会出现3行提示

root (hd0,0)

kernel /vmlinuz-2.6.9-5.EL ro root=LABEL=/ rhgb quiet

initrd /initrd-2.6.9-5.EL.img

此时我们可以对这3行做编辑(vi),待编辑好了后,直接按b键就可以正常引导了。

当然还有别的办法,例如进入rescue模式,修改grub.conf后,再重新引导,由于rescue模式不是一两句话可以讲完的,我们以后将做详细的介绍,这里不再多说了。

Linux下Grub引导之进阶

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: