2011年1月5日星期三

grub 中 chainloader 命令的使用

chainloader一般只在多系统并存的时候才会出现,典型的如linux和windows双系统并存。但在要求多个linux系统并存的环境中,也可以通过正确配置 chainloader 减少工作量。chainloader 的主要用途就是加载安装在PBR(Partation Boot Record)位置的bootloader,比如在一台机器上同时需要安装Fedora和opensuse,可以有以下两种方法。

第一种方法:首先安装Fedora,然后将 grub 安装在 MBR 上,然后再安装opensuse,但这时选择不安装 grub。在opensuse 安装完毕后,进入 Fedora,然后修改 grub.conf 文件来启动 opensuse。这种办法的缺点很明显,如果opensuse存在两个kernel,则需要在 grub.conf 中添加两条引导记录。内容大概如下:
title OpenSUSE-desktop
root (hd0,1)
kernel /vmlinuz-desktop root=/dev/sda2 ro
initrd /initrd-desktop.img

title OpenSUSE-default
root (hd0,1)
kernel /vmlinuz-default root=/dev/sda2 ro
initrd /initrd-default.img

一旦某天打算将 opensuse 更换成 ubuntu,则需要再次修改 grub.conf 。

第二种方法:首先安装Fedora,然后将 grub 安装在 MBR 上,然后再安装opensuse,但这时选择将 grub 安装在 PBR上,在 opensuse 安装完毕后,进入 Fedora,然后修改 grub.conf 文件,添加如下内容:
title Other Linux
root (hd0,2)
chainloader +1
即可进入opensuse的启动界面。
这样无论将 (hd0,2) 的 opensuse 更换为何种系统或者新加多个内核,都无须再次修改 Fedora 中的引导记录。