NT Loader + Grub4DOS
因为Avlgo引导器默认是不支持多重配置选单的,所以前面我使用了特殊的方式编辑处理Avlgo的引导配置文件,以期解决U盘启动盘符变动引发的问题。从网友的反馈看,这种方式引导DOS启动软盘镜像,失败率还是比较高。基本上出问题的情况都是NT Loader引导正常,但是到Avlgo的环节出错。因此这套方案,依然保留NT Loader作为MBR引导器,用Grub4DOS来引导OS。
1、给U盘写入NTLDR的MBR,此项工作可以用PeToUSE来完成,也可以用其它方式达成目标,如bootsect。
2、把NT Loader所需的文件NTLDR和NTDETECT.COM拷贝到U盘根目录。
3、编辑NT Loader启动菜单Boot.ini。用任何文本编辑器创建一个Boot.ini文件,内容如下:
[boot loader]
timeout=0
default=C:\grldr
[operating systems]
C:\grldr=”Boot Menu”
Boot.ini是NT Loader的菜单配置文件,timeout参数设置的是菜单等待时间,如果在设定的时间(本例为0秒)用户没有进行选择,就自动加载default项默认的项目。
4、拷贝Grub4DOS文件,把Grub4DOS里面的grldr拷贝到U盘根目录;在U盘根目录创建一个Boot文件夹,把Grub4DOS的中文字体文件Fonts.tz和菜单背景图片文件Splash.gz拷贝到这个文件夹下。在U盘根目录创建一个grubidx.txt文件,内容无所谓。
5、把DOS软盘镜像文件dos.ima拷贝到U盘的Boot文件夹下。
6、把老毛桃WinPE里面的WINNT.XPE和WINPE.IS_文件拷贝到U盘根目录;把WXPE文件夹下面的SETUPLDR.BIN拷贝到U盘根目录下并更名为LDRXPE,注意没有后缀哦。把“外置程序”文件夹拷贝到U盘根目录。
7、创建Grub引导菜单文件,用任何纯文本编辑器在U盘根目录创建一个Menu.lst文件,内容为:
timeout 30
default 0
splashimage /boot/splash.gz
foreground ffff00
fontfile /boot/fonts.gz
title 启动 WindowsPE
find –set-root /grubidx.txt
chainloader /ldrxpe
title 启动 MS-DOS 7.1
find –set-root /grubidx.txt
map –mem /boot/dos.ima (fd0)
map –hook
chainloader (fd0)+1
rootnoverify (fd0)
做完这些,U盘就可以启动了。
菜单项目说明:
第一行设置等待30秒的等待时间;
第二行设置如果30秒用户没有选择,就默认启动第一个引导项目“启动 WindowsPE”;
splashimage项目设置Grub4DOS启动菜单的背景图片,图片路径为/boot/splash.gz;
foreground项设置启动菜单文字颜色为亮黄色;
fontfile项设置中文字体文件为/boot/fonts.gz
下面两个以title开头的小节就是启动菜单的两个启动项,title后面的文字将显示在菜单中;
find –set-root /grubidx.txt这一项是自动搜索grubidx.txt这个事先创建好的特征文件,它只要找到这个文件,就把文件所在的路径设置为根设备,这样就不会被盘符变化困扰了。至于特征文件的内容,那就无所谓了。
chainloader /ldrxpe就是启动WinPE的XPE镜像。
map –mem /boot/dos.ima (fd0)是装入/boot/dos.ima这个软盘镜像,并且虚拟成fd0.
map –hook是让装入的软盘镜像立即加载生效。
rootnoverify (fd0)指定把刚才虚拟的fd0设置为根设备。
本来,Grub4DOS可以直接安装到U盘的根目录,但是我反复尝试了多次,MBR是写进去了,可总是报错无法引导。所以还是用NT Loader做MBR引导器,由于NT Loader不支持加载镜像文件,所以MBR引导成功后,把控制权交给Grub4DOS,由Grub4DOS来加载WinPE的XPE镜像以及MS-DOS的软盘镜像实现启动对应OS的功能。
Leave a Reply