2024年1月15日发(作者:)
DOS WinPE双启动优盘制作详解
前缘:
随着软盘淡出市场,系统维护盘也改用光盘了。不过光盘还是存在容易磨花,体积较大等缺点。现在的电脑基本上都支持USB设备启动,优盘可以做成小巧而容易携带的系统维护盘;可重写的存储媒体也为更新提供了方便。
目标:
对于系统维护来说,WindowsPE是不可缺少的利器;除此外,有一些问题还是需要启动到DOS环境来解决。我的目标就是制作一个DOS/WinPE双启动的系统维护优盘。下次再遇到某电脑系统崩溃的话,从衣袋里面摸出一精致的优盘,启动电脑之后,把问题解决于弹指间。何其潇洒也!
技术背景:
其实,优盘启动电脑,主要是各种引导工具的合理灵活运用,所有的操作和调试,也都是围绕引导工具的安装和配置进行的。我们知道,作为操作系统的主要载体,磁盘一直是最重要的存储媒质。因此,基本上所有的OS引导的模式都大致相同,都是由磁盘来装入的。
首先,需要在OS所在磁盘的MBR(主引导记录)扇区写入特定的引导代码,电脑启动后会按照BIOS里面设置的启动顺序轮询对应磁盘的MBR区,如果找到有效的MBR记录,就按照MBR记录的指针去装入OS引导文件,如果OS引导文件正常,就加载对应的操作系统。
因此完成一个操作系统的启动,需要两个必须的步骤:1、MBR引导;2、OS引导。
基于上述基本原理,各种操作系统都有自带的引导器,例如WindowsNT以上系统的NT Loader(NTLDR)、Linux的Lilo、各版本的Grub引导器等等,当然还有一些第三方的多系统引导工具,如System Commander等等。
对于我们目前的这个应用,目的是能够在优盘上实现DOS/WinPE双启动,并且具有相对较好的兼容性。要达到这个目的,就有一些技术要求。首先,方案要能够适应优盘移动存储这种盘符变动的情况;其次,要实现双启动,一般都会用到虚拟盘镜像,也就是引导器需要支持RAMDisk加载各种常见磁盘镜像启动的方式。
虽然优盘具有小巧轻量并且可以反复擦写等诸多优点,但如果要做成启动盘,还存在一些需要解决的问题。最大的问题是:USB启动并没有统一的行业规范。主板制造商不同、BIOS不同,USB引导方式也有差异。作为移动存储设备,主板对优盘的识别不同,会使盘符变化。这些直接导致优盘启动的通用性和兼容性不理想,表现就是在有些电脑上无法引导。这是需要重点解决的问题。
OS选择:
DOS系统选用MSDOS 7.1(你也可以选择MaxDOS或矮人DOS,我觉得MaxDOS不错,其中带了很多可能需要用到的DOS工具);WinPE选用“WinPE 老毛桃修改 撒手不管版(Build 070911)”。
方案一:NT Loader + AVLDR + Avlgo
MBR用NT Loader引导,在NTLDR引导菜单中设置选项:用AVLDR引导WinPE;而用Avlgo引导DOS;由于Avlgo不支持选单方式多重启动,为了解决不同主板识别优盘的盘符不同的问题,对Avlgo引导配置文件稍作修改,以适应盘符变化的启动需求。
工具准备:
【PeToUsb】——用来把优盘格式化成NT引导模式;【WinImage】——用于制作DOS启动软盘镜像;【Avlgomgr】——用于生成Avlgo引导文件;【UltraEdit】——用于编辑
修改Avlgo的引导文件。【BootFlashDos】——格式化为DOS启动盘(成功率高)。
数据准备:
PeToUSB是一款免费软件,专门用来把优盘引导区格式化成NTLDR引导代码(实际上,好像也用不着这个专门工具,只要将优盘真正格式化成DOS引导盘就行)。启动PeToUSB,从“Destination Driver”栏选择目标优盘,点击下面的“Start”按钮,它询问“Continue”是否继续,点击“是”,弹出一个警告窗口,提示目标盘的所有数据都将会丢失,是否继续?还是选择“是”,然后片刻就完成格式化。
1、用WinImage制作一个2.88M的启动软盘镜像,将MS-DOS 7.1装入镜像,并把常用的DOS工具也放到镜像里面。
(1)启动WinImage后,点击最左边的按钮新建一个镜像,这里选择标准格式2.88MB,为的是尽量能多存放一些工具。
(2)然后向这个镜像中添加文件,把事先准备好的MS-DOS系统文件从资源管理器里面拖拽到WinImage窗口中。其它DOS工具也这样添加进来。
(3)文件添加完毕之后,点击“映像”菜单——“引导扇区属性”,选择“Windows 95/98”并确定,这一步很重要,漏做这一步的话,这个软盘镜像就不能引导电脑了。
(4)最后保存成ima格式的镜像文件。
2、先备份好C盘的文件。
注意默认状态看不到这个系统、隐藏属性的文件,需要到资源管理器里面“工具”菜单“文件夹选项”当中修改查看方式,取消“隐藏受保护的操作系统文件”复选框,并切换为显示所有文件。
3、启动Avlgomgr
(1)在“虚拟磁盘完整路径”浏览,找到刚才用WinImage制作的镜像文件。
(2)然后,点击“装配”按钮,Avlgomgr将自动修改文件,并在目标盘(本例为C盘)生成我们需要的和两个关键文件,把这两个文件拷贝到某处备用。完成以后,恢复在前面备份的、原C盘的文件。
4、启动UltraEdit
(1)->:先打开,在编辑屏右边的ASCⅡ码区域,可以找到“”的字符串,把它改成“”,文件另存为。
(2)->:然后,打开,在右边ASCⅡ码区域找“(hd0,0)/”字符串,把它修改成“(fd0)/”。
修改的时候要注意:由于修改后的字符串比修改前的短,为保证文件长度不变,剩下的部分要切换到左边16进制码区域,用“00”填充,这样才能保证文件长度不变。
(3)修改完后另存为。
开始组装:
1、首先,在优盘的根目录,用记事本创建一个文件,内容如下:
[boot loader]
timeout=30
default=C:
[operating systems]
C:="Windows PE By LaoMaotao"
C:="MS-DOS 7.1 form USB-HDD"
C:="MS-DOS 7.1 from USB-FDD
完成以后,把这个文件的属性修改成 只读/系统/隐藏(可以用DOS命令 attrib +r +s +h
修改文件属性)。
是NT Loader的菜单配置文件。timeout参数设置的是菜单等待时间,如果在设定的时间(本例为30秒)用户没有进行选择,就自动加载default项默认的C:,从而启动WinPE。
[operating systems]小节是菜单中出现的引导选项,第一个就是前面default设置的老毛桃WinPE。双引号里面的是注释行,会显示在引导菜单里面。下面两行分别是为主板识别优盘为USB-HDD和主板识别优盘为USB-FDD两种模式对应的引导项。
2、把硬盘系统的NTLDR和两个文件拷贝到优盘根目录。这是NT
Loader引导器的必须文件。
3、把下载到的老毛桃WinPE的ISO文件解压缩到一个临时文件夹
(1)把其中“WINPE安装”文件夹里面的拷贝到优盘的根目录;
(2)把“WXPE”文件夹下的 也拷贝到优盘根目录并改文件名为
LDRXPE(注意:没有后缀,不是 )。
(3)把临时文件夹里面的 拷贝到 U 盘的根目录下。
(4)把临时文件夹里面的“MINIPE”文件夹拷贝到 U 盘的根目录下。
做完这一步,优盘就可以引导到WinPE下了。
如果启动的时候选第一项“Windows PE By LaoMaotao”,系统将依照“NTLDR->->->_”这个顺序链,把电脑启动到Windows PE环境下。
4、把软盘镜像文件拷贝到优盘根目录。
5、把前面生成的和两个文件拷贝到优盘根目录。(这两个文件是干什么用的?)
对照文件可知,这两个文件是对应于菜单中第二行 for USB-HDD模式。如果启动的时候选择第二项“MS-DOS 7.1 form USB-HDD”,系统将依照“NTLDR->->->”这个顺序链把电脑启动到MS-DOS环境下。
6、把前面UltraEdit编辑生成的和两个文件拷贝到优盘根目录。
对照文件可知,这两个文件是对应于菜单中第三行 for USB-FDD模式。如果启动的时候选择第三项“MS-DOS 7.1 form USB-FDD”,系统将依照“NTLDR->->->”这个顺序链把电脑启动到MS-DOS环境下。
至此DOS/WinPE双启动系统维护优盘制作成功。
方案二:NT Loader + Grub4DOS
因为Avlgo引导器默认是不支持多重配置选单的,所以,前面我使用了特殊的方式编辑处理Avlgo的引导配置文件,以期解决优盘启动盘符变动引发的问题。从网友的反馈看,这种方式引导DOS启动软盘镜像,失败率还是比较高。基本上出问题的情况都是NT Loader引导正常,但是到Avlgo的环节出错。因此这套方案,依然保留NT Loader作为MBR引导器,用Grub4DOS来引导OS。
1、给优盘写入NTLDR的MBR,此项工作可以用PeToUSE来完成,也可以用其它方式达成目标。具体操作见方案一。
2、把NT Loader所需的文件NTLDR和拷贝到优盘根目录。
3、编辑NTLoader启动菜单。用任何文本编辑器创建一个文件,内容如下:
[boot loader]
timeout=0
default=C:grldr
[operating systems]
C:grldr="Boot Menu"
菜单各个项目的含义请对照方案一的说明。
4、拷贝Grub4DOS文件,把Grub4DOS里面的grldr拷贝到优盘根目录;
在优盘根目录创建一个Boot文件夹,把Grub4DOS的中文字体文件和菜单背景图片文件拷贝到这个文件夹下。或硬盘XP系统根目录下考入,和Grub4DOS4.4中有两个大小不一的文件,都拷贝到优盘boot目录下。
在优盘根目录创建一个文件,内容无所谓。
5、把DOS软盘镜像文件拷贝到优盘的Boot文件夹下。
6、把老毛桃WinPE里面的拷贝到优盘根目录;把WXPE文件夹下面的拷贝到优盘根目录下并更名为LDRXPE(注意:没有后缀,不是 )。将“MINIPE”文件夹拷贝到优盘根目录下。
7、创建Grub引导菜单文件,用任何纯文本编辑器在优盘根目录创建一个文件,内容为:
timeout 30
default 0
splashimage /boot/
foreground ffff00
fontfile /boot/
title 启动 WindowsPE
find --set-root /
chainloader /ldrxpe
title 启动 MS-DOS 7.1
find --set-root /
map --mem /boot/ (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
做完这些,优盘就可以启动了。
菜单项目说明:
第一行设置等待30秒的等待时间;
第二行,设置如果30秒用户没有选择,就默认启动第一个引导项目,即“启动
WindowsPE”;
splashimage项目设置Grub4DOS启动菜单的背景图片,图片路径为/boot/;
foreground项设置启动菜单文字颜色为亮黄色;
fontfile项设置中文字体文件为/boot/
下面两个以title开头的小节就是启动菜单的两个启动项,title后面的文字将显示在菜单中;
find --set-root /这一项是自动搜索这个事先创建好的特征文件,它只要找到这个文件,就把文件所在的路径设置为根设备,这样就不会被盘符变化困扰了。至于特征文件的内容,那就无所谓了。
chainloader /ldrxpe就是启动WinPE的XPE镜像。
map --mem /boot/ (fd0)是装入/boot/这个软盘镜像,并且虚拟成fd0。
map --hook是让装入的软盘镜像立即加载生效。
rootnoverify (fd0)指定把刚才虚拟的fd0设置为根设备。
本来,Grub4DOS可以直接安装到优盘的根目录,但反复尝试了多次,MBR是写进去了,可总是报错无法引导。所以还是用NT Loader做MBR引导器,由于NTLoader不支持加载镜像文件,所以MBR引导成功后,把控制权交给Grub4DOS,由Grub4DOS来加载WinPE的XPE镜像以及MS-DOS的软盘镜像实现启动对应OS的功能。
方案三:MS-DOS 7.1 + Grub4DOS
本来这个方案是着手制作双启动优盘最早选用的方案,但是在华擎845E主板上始终没法使用,所以开始没有发布。这次发布出来供大家测试,看看是不是那主板的特例。
本方案的MBR由DOS引导,WinPE由Grub4DOS加载启动。相对前面的方案,这个方案制作起来最简单。
1、用HP USE Disk Storage Format Tool把优盘格式化成FAT可引导盘。
也可直接在Windows系统下,通过在“我的电脑”上右击选择“管理-磁盘管理”来格式化优盘。然后,用BootFlashDos(可从网上搜寻下载得到)来把优盘格式化成FAT可引导盘(我觉得这种方式的成功率极高)。
2、根据自己的需要,把其它DOS文件和一些DOS工具拷贝到优盘。
3、把老毛桃WinPE里面的文件拷贝到优盘根目录;把“WXPE”文件夹下面的拷贝到优盘根目录下并更名为LDRXPE(注意:没有后缀,不是 )。将“MINIPE”文件夹拷贝到优盘根目录下。
4、把NTLDR(可从硬盘XP系统根目录下考入)和两个文件拷贝到优盘根目录,这是启动XPE格式WinPE镜像必须的文件。
5、把和(或,可从硬盘XP系统根目录下考入)两个Grub4DOS的程序文件(可到网上去下载Grub4DOS4.4,Grub4DOS4.4中有两个大小不一的文件,都拷贝到优盘根目录下)和中文字体文件拷贝到优盘根目录。
6、用任何文本编辑器在优盘根目录创建,内容如下:
timeout 0
default 0
fontfile /
title 启动 WindowsPE
find --set-root /
chainloader /ldrxpe
在优盘根目录创建一个文件,内容无所谓,作用是配合作为Grub特征文件查找确定根设备。
7、自行编辑和,构建DOS多重开机选单,加入启动Grub4DOS的项目。要保证启动Grub的时候不装入任何的内存管理程序和其它驱动程序、驻留程序,以免跟Grub4DOS发生冲突。可以简单地在里面加入一行:
grub
这样就可以启动Grub4DOS了。
当然,由于要实现双启动,所以要把这两个配置文件编辑成多重选单的方式,在需要的时候可以启动对应的配置。我把我的配置文件内容放在下面供参考。
的内容:
[MENU]
MENUITEM=1,XMS without CD-ROM support
MENUITEM=2,XMS with CD-ROM support
MENUITEM=3,XMS and EMS
MENUITEM=4,DOS real mode(no XMS,no EMS)
MENUITEM=5,Windows PE
MENUDEFAULT=5,30
[1]
DEVICE= /TESTMEM:OFF
DEVICE= NOEMS
INCLUDE=PUB
[2]
DEVICE= /TESTMEM:OFF
DEVICE= NOEMS
DEVICEHIGH= /D:SSCD001
INCLUDE=PUB
[3]
DEVICE= /TESTMEM:OFF
DEVICE= RAM
INCLUDE=PUB
[PUB]
DOS=HIGH,UMB
FILES=30
BUFFERS=20
STACKS=9,256
LASTDRIVE=Z
[4]
FILES=10
BUFFERS=10
LASTDRIVE=Z
[5]
而的内容为:
@ECHO OFF
PATH=A:;C:;A:Diskgen;C:DiskGen;A:DM;C:DM
GOTO %CONFIG%
:1
GOTO COMMON
:2
LH /D:SSCD001
GOTO COMMON
:3
GOTO COMMON
:4
GOTO END
:5
GRUB
:COMMON
LH /X
@ECHO Install mouse driver?
CHOICE /C:YN Yes,No /T:N,6
IF ERRORLEVEL 2 GOTO END
LH
:END
按照这个配置,启动的时候如果选择第5个项目,或者超过30秒没有做选择自动执行第5个项目,那就经由里面对应的语句启动Grub4DOS,然后Grub4DOS会根据的设置启动WinPE。
DOS多重启动配置的具体做法,请参考有关资料。


发布评论