前言:
由于帮别人修电脑的时候发现主板容易掉电,无法保存BIOS的设置,每次默认都是从软驱启动,在这个科技发达的时代,软驱已成为股东了吧,所以总是不能正常开机。后来换了电池也还是不能保存设置,估计是电池板的问题,我也不太清楚,所以只能换个方法解决。然后我就打算修改BIOS的默认设置。上网查了下,修改BIOS最好在纯DOS下进行,我就打算先弄个纯DOS的启动盘。本来以为上网下个MS-DOS7.1做成启动盘就行了,没有想到过程是那么的艰辛。下面就是我制作启动盘的心里路程。。。
第一步:上网下载纯MS-DOS的镜像
本来以为百度一搜应该会有很多地方可以下载,但没有想到基本都是一些加工过的DOS,如FreeDOS、MaxDOS等DOS工具箱。虽然它们的功能都很强大了,但当时我也没有想那么多,只想找个纯DOS的DOS镜像。后来只好到google.com去搜MS-DOS,凭借我的poor English终于艰难的找到了一个DOS的镜像。
第二步:用UltraiSO制作启动光盘
百度了一下DOS启动盘,百科说DOS启动盘必须包含三个文件io.sys,msdos.sys,command.com,但不是简单的把这些文件放到光盘里面就能做成启动盘了,还需要引导记录。上网搜启动盘的制作大部分都是制作U盘的启动盘,要么就是把软盘格式化成启动盘就行了,很少有介绍光盘启动盘的制作。其实用UltraISO就可以把光盘做成启动盘。选择文件-->新建-->数据光盘映像。此时显示是“不可引导光盘”。
然后选择启动-->加载引导文件,选择下载好的DOS映像文件。此时可以看到变成了“可引导光盘”。但光盘的内容依然为空,不是把映像放到光盘里就能做成启动盘。用虚拟机测试一下能不能启动,如果能启动那么一个简单的DOS启动盘就做成功了。
第四步:加强DOS镜像的功能
如果你就这样把它刻成光盘那你就真的不懂什么就资源节约型社会了,把仅有1.44M的DOS刻在了4,.7G的DVD上,这个利用率你自己去算吧。当然你也可以直接把一些文件添加到光盘里面,但这只是简单的储存文件而已。要加强启动盘的功能还有很多事要做:
(1)添加一些DOS命令,MS-DOS自带的一些命令是比较少的,需要我们自己加进去,比如XCOPY.EXE(拷贝目录的命令)、doskey.exe(调用和建立DOS宏命令)。
(2)添加一下DOS下常用的工具,比如doslfn.exe(让DOS支持长文件名)、ghost.exe、diskgen.exe。如果要支持中文可以加入天汇汉字系统tw.exe。
(3)添加一些驱动程序,虽然本意是要制作纯DOS系统,但为了加强DOS的功能,可以制作成多启动菜单,有不带驱动和带不同驱动的DOS。因为DOS下是不支持NTFS分区的,而现在大硬盘用的都是NTFS分区,所以要让DOS支持NTFS分区就要借助一下NTFS驱动来完成。一下几个软件都可以完成对NTFS的支持:IFSDRV.EXE、NTFS4DOS、NTFSDOS PRO、READNTFS。它们都可以查看NTFS分区,但还是有一些区别的,具体的可以上网搜一下(以后补充)。还有一些设备的驱动,光驱驱动:VIDE-CDD.SYS、SHSUCDX.EXE。USB驱动:USBASPI.EXE、DI1000DD.SYS、USBCD.SYS、DUSE.EXE、MASSUSB.EXE等。其中NTFS的驱动我找了好久才找到,翻遍了很多网站,由于都是一些很小的软件,所以很少有说明,我一般都是到google去找的英文介绍。
第四步:配置CONFIG.SYS和AUTOEXEC.BAT文件
CONFIG.SYS中包含一些DOS的配置信息,告诉DOS如何初始化。而AUTOEXEC.BAT是DOS启动后会自动运行的批处理文件,在里面装载每次必用的程序,如:path(设置路径)、SMARTDRV.EXE(磁盘加速)、SHSUCDX.EXE(光驱驱动程序)等。首先是配置CONFIG.SYS文件,可以通过device(high)来加载驱动,还可以用menuitem来编写选择菜单。下面是我的CONFIG.SYS的配置:
[MENU]
menuitem=IDE_CDROM, DOS with IDE/ATAPI CD-ROM support
menuitem=DOS_ONLY, DOS Prompt only
menudefault=IDE_CDROM,30 menucolor=7,0
[IDE_CDROM]
DEVICEHIGH=VIDE-CDD.SYS /D:MSCD000
[DOS_ONLY]
[COMMON]
DEVICE=HIMEM.SYS /TESTMEN:OFF
DOS=HIGH,UMB
COUNTRY=001,437,COUNTRY.SYS
SHELL=COMMAND.COM /P /E:640
FILES=30
FCBSHIGH=4,0
BUFFERSHIGH=20
LASTDRIVEHIGH=26
STACKSHIGH=9,256
SET TEMP=.
SET TMP=.
REM MS-DOS 7.10 Boot Disk
其实这些都很好理解,第一项[MENU]用来设置启动的选择菜单,menuitem用来设置标签与下面的对应。这里我支持光驱的标签加载了一个通用的光驱驱动VIDE-CDD.SYS ,/D的参数用来设置光驱的名称为MSCD000,这在AUTOEXEC.BAT中加载驱动程序是要用到[COMMON]标签里面放的是都要用到的配置。其中SHELL:是指定DOS 使用的命令解释程序的名称和位置,一般为COMMAND.COM加上一些参数。FILES/FILESHIGH:指定可以同时访问的文件数量。FCBS/FCBSHIGH:指定可以同时打开的文件控制块 (FCB) 的数量。BUFFERS/BUFFERSHIGH:为指定数量的磁盘缓冲区分配内存。LASTDRIVE/LASTDRIVEHIGH:指定可以访问的驱动器的最后有效的驱动器字母。STACK/STACKHIGH:指定使用的堆栈数量,通常为9.256。.最后SET设置临时目录为当前目录。接下来配置AUTOEXEC.BAT:
@ECHO OFF
GOTO %CONFIG%
:IDE_CDROM
lh SHSUCDX /D:MSCD000 /Q /L:X /~+ >nul
goto OK
:DOS_ONLY
goto OK
:OK
PROMPT $P$G
PATH=A:;X:;..;
LFNFOR ON
SET DIRCMD=/4
MODE CON RATE=32 DELAY=1
LH KILLER>nul
LH DOSKEY>nul
LH SMARTDRV>nul
LH DOSLFN>nul
tw /np>nul
NTFSDOS
%CONFIG%是DOS默认的系统变量,它的值为CONFIG.SYS中选择的标签。可以通过GOTO %CONFIG%命令执行不同的程序。PATA是设置路径,当执行命令或程序时,系统会现在当前目录下查找,如果没有就会按顺序从PATA里设置的路径开始找,批处理执行的命令也是一样。原来我就是没有设置好路径,在运行批处理是老师提示文件未找到,所以一定要注意。接下来我为选择带光驱时执行SHSUCDX /D:MSCD000 /Q /L:X /~+ >nul,这是一个光驱驱动,/D参数后跟的光驱名字要和前面CONFIG.SYS配置中的一样/L:X是设置光驱盘符为X:,>nul表示不回显。SHSUCDX还有很多参数,可以到google去搜,虽然是英文的,但还是可以慢慢看,解释都比较全的。其实很多类似的程序或命令都可以到google去搜*.exe或*.com,很多网站都会有解释,国内的就比较少了。或者在DOS在执行*.* /?也会有程序自带的解释,建议用程序的时候都去看一下。后面我还加载的一些其他的程序,大家可以去搜一下用途。
然后用UltraISO打开DOS镜像,把这些软件和驱动添加进去,替换掉CONFIG.SYS和AUTOEXEC.BAT文件。
再打开光盘镜像加载引导信息,选择添加好的DOS镜像,这样一个稍微多些功能的DOS启动盘就做好了。用虚拟机测试一些能不能启动,能不能加载这些驱动或运行这些程序。但这样的启动盘任然不够强大,下面我要用grub来加强启动盘的功能。
第五步:用grub添加PE、CDlinux多重启动盘
在一次次的试验中,我发现每次用虚拟机连接启动盘后就从启动盘引导,要从硬盘引导就要断开连接或更改虚拟机BIOS启动顺序,非常麻烦。于是就上网搜了下,发现grub可以用菜单选择从不同的系统引导。于是就开始研究grub,其中两个关键的文件是grldr和menu.lst,这两个文件可以再grub4dos中提取,用这两个文件就可以完成多系统引导。
(1)组织文件。比如在F:ak下建个grubcd目录表示光盘根目录,把menu.lst拷贝到此目录下,menu.lst文件将在光盘根目录下。在grubcd目录下建bootgrub目录,保存各种img,根据需要可以自己添加一些文件。注意把文件名改成小写,因为menu.lst中引用的文件在硬盘中显示必须是小写。这里我存放的是刚才制作好的DOS镜像文件。
然后把menu.lst放到grubcd目录下,编辑menu.lst引导DOS映像文件
timeout 30
default 0
title DOS
map --mem (cd)/boot/grub/msdos71.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title reboot
reboot
title halt
halt
map命令可以启动硬盘映像(img)或者光盘镜像(ISO)文件,大家可以仿造类似的写法启动其他的映像文件。它的参数有很多,大家可以上网搜。reboot是重新启动,halt是关机。然后把grub4dos中的grldr改名为grldr.bin。再用UltraISO添加引导信息选择grldr.bin。保存后就完成的一个用grub引导的光盘。在用虚拟机测试一下,此时再用虚拟机测试的时候就不用把光驱弹来弹去就可以完成从硬盘启动或从镜像启动了。其实grub的功能非常的强大,它的用法不是两三篇文章就能讲完了,想深入了解grub也可以自己去寻找相关的资料。
这里我还用grub0制作了WinPE和CDlinux系统,上网下载了深山红叶winpe和CDlinux社区版的镜像文件。用UltraISO打开它们,把关键的文件提取出来,然后按原来的目录结构添加到自己的启动盘里。把深山红叶winpe镜像中:深山红叶系统工具箱.EXE、WINNT.XPE、WINPE.IS_、WXPESETUPLDR.BIN放到关盘的根目录下,把BOOTWINPE.INI文件放到自己启动盘中的BOOT目录下,把WXPE和PROGRAMS两个文件夹也放到光盘的根目录下。然后把SETUPLDR.BIN改名为ldrxpe,不用后缀名。再把CDlinux镜像中的CDlinux文件夹放到光盘的根目录下。最后光盘根目录的文件如下图
编辑menu.lst文件
timeout 30
default 0
title Windows
rootnoverify (hd0,0)
makeactive
chainloader +1
title WinPE
chainloader /ldrxpe
title DOS
map --mem (cd)/boot/grub/msdos71.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title CDlinux
root (cd)
kernel /CDlinux/bzImage quiet CDL_LANG=zh_CN.UTF-8
initrd /CDlinux/initrd
title reboot
reboot
title halt
halt
保存后在用虚拟机全部测试一遍,全部都能启动后,那么一个强大的启动盘就制作好了。你还可以自己添加一些其他的工具,在编写一下menu.lst就行了。编写的方法可以参考一下我的写法,或者上网搜一些别人做好的。
当我全部弄好后我却发现我最初的目的是要刷BIOS,但DOS镜像里面却没有BIOS的工具。于是我就上网下搜集了一些刷BIOS的工具想放到DOS的镜像里面,可是当我想添加进去的时候却发现镜像文件已满。找了一下菜单发现了一个修改镜像文件的选项,于是我把镜像文件大小增加到了5M,保存的时候我把输出镜像文件直接设置成了原来那个,没想到悲剧就发生了。我再用虚拟机测试的时候发现DOS怎么也启动不了,检查了好久终于发现了问题,DOS镜像里的文件大小虽然没变,但内容却全部都变成空白的了,当然启动不了啊。所以要注意在用UltraISO修改完镜像后输出镜像文件不能和原来的一样。重新做完一次后终于可以用grub来引导启动DOS镜像了。但我还是有一个问题:用grub能引导启动,但如果直接新建一个光盘数据加载5M的DOS镜像却不能启动了。现在我也还没找到原因,如果有谁知道也可以告诉我。不过,能用grub制作的启动盘总算是做好了,在添加一些GHOST的镜像文件后就可以拿去刻碟了。
总结:
经过这一次艰难的制作DOS启动盘的经历,我也学到了好多东西。因为问题总是一个接着一个,解决一个问题是又会弄来一个新的问题。比如当我想了解驱动的问题时又迎来了CONFIG.SYS的配置问题,而搜CONFIG.SYS时,里面的各种命令和参数又是新的问题。就这样一层一层的往下套,真是学无止境啊。从中我还学到了有些问题虽然很小,但是直接搜也找不到什么答案,而是要从大的方面去查阅资料。比如要找一个DOS的命令,有可能要把整个DOS的书给翻阅了一遍。我还学到了到google.com这样的外国网站去搜一些东西会有意外的惊喜,不仅能得到比较详细的解释,还能锻炼我的poor English。总之这篇文章只是记录了我做启动盘的整个过程,也希望能给有需要的朋友一些帮助,其中当然也有错漏的地方,也希望大家来指正。
附件:MS-DOS 7.1镜像 http://u.115.com/file/dn67mfa0#msdos71b.zip
DOS下访问NTFS分区的4个软件 http://u.115.com/file/bhz2g7wh#4DOSNTFS.zip
grub4dos 最新版 grub4dos-0.4.5 http://u.115.com/file/aq7futc9#grub4dos-0.4.5-2009-12-20.zip
资料:《grub4dos初级教程_CHM图文版》 http://u.115.com/file/dnh5oo47#grub4dos初级教程_CHM图文版_090411.chm
DOS一些有用的驱动和程序 http://www.hiren.info/downloads/dos-files
DOS的驱动或命令的详细解释 http://help.fdos.org/en/