多系统引导
本文描述了如何使用GRUB进行多系统的引导,使用GRUB引导3个系统:Windows,openSUSE,OSx86。所有内容只基于我的个人经验和喜好,您可以作为参照。 如果您有任何疑问,欢迎和我交流:songtime
开始前必备的工具
SPFDISK是一个对硬盘MBR进行管理的工具,它运行在DOS下,所以,您需要制备一个启动DOS盘。我使用USBoot制作了个U盘DOS,然后把SPFDISK拷到U盘上,这样,系统出了问题,我也能够在DOS下进行修复。
分区的划分
在安装系统之前,首先需要进行分区的划分,我在一块硬盘上安装3个操作系统:Windows7,openSUSE,OSx86,而且,我需要在各系统之间共享数据,所以,我将硬盘分作4个主分区,我如下规划硬盘:
sda1 | sda2 | sda3 | sda4 |
Windows系统 | NTFS数据盘 | openSUSE系统 | OSx86系统 |
启动的设置
使用默认风格的MBR
MBR是该算446Byte还是该算512Byte?我也不清楚,至少这2种说法我都见过。在这里,我将MBR当作446Byte。
即:BootSector[512Byte]=MBR[446Byte]+DPT[64Byte大小的分区信息]+0x55AA
默认的MBR会加载激活的主分区上的操作系统,或者更确切的说,默认的MBR会加载激活主分区的引导程序,然后由那个引导程序去引导它自己的操作系统。我建议使用默认风格的MBR(SPFDISK提供写入默认MBR的功能,openSUSE安装DVD的救援系统也提供这个功能)。使用GRUB进行系统引导,自然需要将openSUSE所在分区设为激活才行。硬盘的引导信息如下:
硬盘划分 | BootSector | sda1 | sda2 | sda3 | sda4 |
操作系统 | x | Windows | 数据盘 | openSUSE | OSx86 |
文件系统 | x | NTFS | NTFS | EXT3 | HFS+ |
引导程序 | 默认MBR,sda3激活 | NTLoader | 无 | GRUB | Chameleon |
OSx86的特别说明
OSx86使用Chameleon引导管理器,如果安装了某个OSx86的发行版本(iPC,iDENEB...),会提供引导管理器的安装,即HFS分区中的boot文件。我们这里使用Chameleon提供的引导管理器Chameleon项目网站,请下载一份Chameleon的bin包,其中包含boot文件,将这个boot文件改名复制到openSUSE系统的/boot目录下
cp PATH_TO_CHAMELEON_FILES/i386/boot /boot/chameleon-boot
GRUB命令行加载boot文件的命令:
kernel (hd0,3)/boot/chameleon-boot
title Windows rootnoverify (hd0,0) chainloader +1
title openSUSE 11.2 root (hd0,3) kernel /boot/vmlinuz-2.6.31.5-0.1-desktop root=/dev/disk/by-label/openSUSE splash=silent quiet showopts vga=0x317 initrd /boot/initrd-2.6.31.5-0.1-desktop
title Leopard root (hd0,3) kernel /boot/chameleon-boot