在Linux下配置GRUB实现多系统引导

我在Linux下的GRUB配置如下(并是我今天刚刚试验成功的)稍后会稍加解释:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/hda1
# initrd /boot/initrd-version.img
#boot=/dev/hda 
default=0
timeout=-1
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
title Red Hat Linux
root (hd0,2)
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /boot/initrd-2.4.18-14.img
 
title FreeBSD 6.0
rootnoverify (hd0,1)
makeactive 
chainloader +1
title Microsoft Windows XP 
root (hd0,0)   
makeactive
chainloader +1

       我在这里的系统安装顺序是Windows XP  ==〉 FreeBSD ==〉 Red Hat Linux ,而且三个系统同时安装在了同一块硬盘上,如果你想将不同的操作系统分散安装在不同的多块硬盘上的话,就需要对如上配置稍加改动即可(见最后)。
       其实系统安装顺序在这里是无所谓先后的(因为在后期这些都是可以改变的),关键是你想让那个操作系统的引导程序占据磁盘的MBR,Master Boot Recorder,然后来配置它并实现多系统引导。值得注意的是不同的操作系统,在配置多系统引导时是所采取的配置方法是有所不同的。我在这里选择了由Linux来完成这项工作(因为我认为这样比较简单,嘿嘿,其实是我不会其他方法,555555……Good Good Studying)。

        接下来让我们来看一下我是如何配置Linux下的/boot/grub/grub.conf文件的好了:
        首先,如果你也是按照我的系统安装顺序,在你的机器上也安装了这些系统的话,起初(也就是在刚刚安装完这三个系统后)在启动机器时就会由Linux的MBR程序来启动一个多引导菜单来共您选择要进入的操作系统。而这时你会发现,菜单中已经存在了我们先前安装的Windows XP(这其实就省去了我们许多麻烦)和Rad Hat Linux,可是我们的FreeBSD却不见了(同样,如果你最后安装的是FreeBSD,Red Hat Linux也不会在选择菜单中出现,这就需要到FreeBSD系统下去配置了,该问题本人还没有解决,见笑了),这是我们就需要到Linux下打开/boot/grub/grub.conf文件作少许配置就OK了。
       然后,我们先来了解一下有关/boot/grub/grub.conf文件中的配置选项:
-->  default=0
            默认的操作系统就是由default控制的。default后加一个数字n,表明是下面由title选项分别指出的第 n+1个操作系统。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一 个软驱是fd0,等等。所以,default 0 表示默认的操作系统在这儿是 Red Hat Linux 如果你修改成1就是FreeBSD作为默认启动操作系统(这一点应该很明确了)。
-->  timeout=-1 
         
   timeout表示默认等待的时间,这儿是-1秒钟,表示无限期地等待用户选择。如果改成一个大于0的正整数n的话,他就表示在秒内用户还没有作出选 择的话,系统将自动选择默认的操作系统;当然你可以改成任何你乐意的时间。
-->  splashimage=(hd0,2)/boot/grub/splash.xpm.gz 
         
   指定开机画面文件splash.xpm.gz的位置,也可以splash /boot/logo/800x600x8.img。
-->  title Red Hat Linux
           title选项用于指定在选择菜单中显示的对应操作系统的标签,可以由你任意指定,只要你愿意可以给它任何不相干的名字。
-->  root (hd0,2)
            这里用root选项来指定你的GRUB根分区(也就是Linux操作系统的/boot所在分区),值得注意的是这里的root与Linux操作系统中的root不是一码事。

-->  kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
             这里使用kernel选项来指定了Linux内核的位置,和Linux根分区的位置(也就是‘/’分区),ro就是readonly的简写拉。

-->  initrd /boot/initrd-2.4.18-14.img 
             
 initrd指定了Linux初始化影像文件。
-->   rootnoverify (hd0,1)
              和root类似,但是不mount该设备(注意这里不要安装,也就是不要使用root替换,有时会有问题)。这个命令用在当GRUB不能识别某个硬盘文件系统,但是仍然必须指定根设备是使用,尤其对这里的Windows和FreeBSD有用。
-->   makeactive
              激活当前分区,
这条指令的对象只能是PC上的主分区,不能是扩展分区。这里XP和FreeBSD这符合这一规则。
-->   chainloader +1
             
指定从当前分区读出第一个扇区进行引导。这里的用法在 Windows XP 和 FreeBSD 的来看观念都是一样的了。

       
至此,我们的GRUB配置已完成,重新启动一下机器,看下结果把,Good Luck for U!!

-->  当你有两块硬盘,一个无法从第二块硬盘启动的操作系统,例如你把Windows XP安装到了你的第二块硬盘上,就可以使用map命令.你能够将 hd0 映射为 hd1 ,将 hd1 映射为 hd0。换句话说,你可以虚拟的交换两个硬盘而启动所需要的操作系统 。也许你需要在你的/boot/grub/grub.conf配置文件中作如下改动 :
title Microsoft Windows XP 
map (hd0) (hd1)
      <== 只是做了如下两行的改动,很简单的吧,快去试试看吧,再次Good Luck for U!!!!
map (hd1) (hd0)
root (hd1,0) 
chainloader (hd1,0)+1 
makeactive

                             Jeff 真诚希望大家留下宝贵意见!

                                                                                                                    ##  Jeff.Liu        15/1/2006  04:23

你可能感兴趣的:(Unix/Linux)