A: grub4dos与官方的grub legacy有一个很大的区别就是启动方式的多样性。grub legacy只能将自己的引导代码安装到mbr或者分区的引导扇区,而且,它的代码被分成了三部分:引导代码、Stage1.5、Stage2,主体程序就是stage2,前两部分都是为加载stage2做准备的。而grub4dos基本上将grub legacy的这三部分合成一体了,所有的东西都集成在grldr和grub.exe这两个文件中,另外,为了兼容Vista的启动(Vista不能加载超过64K的引导文件),grub4dos又多了一个grldr.mbr,grldr.mbr相当于grub4dos的引导扇区,类似于NT下引导DOS时用到的bootsect.dos,它的主要功能就是在本地硬盘、软盘、U盘根目录下查找grldr文件并加载,凡是支持加载引导扇区的引导软件(又称为链式加载,也就是chainload)都可以通过加载grldr.mbr来引导进入grub4dos。grub4dos的启动方式有下面这些(不见得全面):
一、通过链式加载方式。
1、从NT下通过boot.ini加载:修改boot.ini,通过链式加载grldr或者grldr.mbr来加载。前提是你的某个分区根目录下一定要放置一个grldr,分区类型支持FAT(12/16/32)、NTFS、EXT(2/3)。
复制内容到剪贴板
代码:
c:\grldr="Grub4DOS"
或
c:\boot\grldr.mbr="Grub4DOS"你一定注意到了,grldr.mbr不一定要放在根目录下,其实,grldr也不一定放到根目录下,不过,它们最终的目的都是搜索各分区根目录下的grldr文件并加载找到的第一个grldr。
另外,这种方式的一个变形形式是将grldr改名成ntldr(或者bootmgr)替换NT的ntldr(Vista的bootmgr),这是通过NT/Vista的引导扇区直接加载grldr。
2、在Vista中通过修改BCD加载grldr.mbr。详细修改方法请参考grub4dos官方文档。
3、通过其它支持链式加载的引导器(例如grub4dos、syslinux/isolinux/pxelinux等)来加载grldr.mbr(或者grldr)。例如,你可以在grub4dos中用:
chainloader --force /grldr #注意,这里一定要加上--force参数
或者
chainloader /boot/grldr.mbr的形式加载。
二、将grub4dos的引导代码安装到MBR或者分区引导扇区。
这个是目前比较推荐的一种方式,你可以用bootlace、grubinst或者手工的方式来完成这个任务。这种方式也要求某个分区的根目录下必须存在一个grldr文件,其中,如果将grub4dos的引导代码安装到了分区的引导扇区,恐怕就必须将grldr文件放到该分区的根目录下。
三、通过grub.exe加载。
grub.exe是一个三栖的程序,它可以作为实模式的DOS程序直接从纯DOS环境下进入grub4dos,也可以作为DOS的设置驱动程序,从DOS的config.sys中以device=grub.exe的形式加载,还可以以Linux内核格式,使用kernel方式加载(凡是支持加载Linux内核的程序都可以使用这种方式,例如grub4dos自身,syslinux系列、lilo、DOS下的loadlin,Linux下的kexec)。
四、作为PXE启动文件加载。
你可以将grldr直接作为PXE服务器的启动文件通过网络加载grub4dos,也可以通过pxelinux加载,通过pxelinux加载时,需要将grldr改名为grldr.0,或者用kernel grub.exe的形式,注意追加keeppxe参数。
五、将grldr作为光盘启动文件加载
你可以直接将grldr作为光盘的启动文件来制作启动光盘,注意,要遵循推荐的mkisofs命令行格式来制作。跟这个有关的是你可以用其它的光盘启动软件来加载grldr,例如ezboot、bcdw等,不过这样加载就失去了让grub4dos直接通过bios访问光驱的能力(也就是说不是eltorito模式了)。
我能想到的大概就是这些加载方式吧,可能不是很完全,不过应该囊括了大部分的方式,就算有别的方式,应该也是这几种方式的扩展。