为什么要做DOS启动盘?
目前在MS平台下需要涉及到开机引导的工作,如各种的PE系统、U盘工具箱、Win7的OEMBIOS激活等,基本上全部是使用grub4dos作为第一引导,即启动分区中有一个grldr文件。
这个时代需要进DOS操作的应用目前并不多,大多数人都习惯了PE。然而除了个人偏好以外,还是有部分软件需要在DOS下运行,如以前提到的HDD Regenerator。在grub4dos中进DOS并不难,找来io.sys与command.com然后在grub里打chainloader /io.sys就成了。
“老师,能不能给力点?”好的,我们知道grub4dos正如其名字,原本是个在DOS版的grub,名叫grub.exe,开机引导的grldr大概是之后才添加的。那么能不能在U盘或移动硬盘上只装DOS的启动,再在DOS下以一个程序的身份运行grub.exe,DOS–>grub–>chainloader /bootmgr或者DOS–>grub–>kernel /vmlinuz是不是显得NB些?
于是笔者就开始折腾,然后发现这道题还不是那么容易解决——这个问题实际上是如何在高版本系统下搞出一个带Win98引导记录的FAT32硬盘分区。笔者试了几款常用的软件,如USBoot、HPUSBFW,发现都不能如愿,遂只好自己解决。USBoot的HDD模式会把U盘缩水到2G,说明他可能用的是FAT12分区;HPUSBFW不支持选择单个分区,大概会把我500G的移动硬盘清理干净来着。以下内容需要读者了解系统启动的基本知识,诸如MBR、DBR、分区表等笔者不再详细复述。
在DOS/Win9X下,可以用format C: /s命令格式化一个FAT32分区并复制相关引导文件。格式化时分区的DBR将被填写DOS/Win9X的引导代码,即从IO.SYS文件启动。但是在高版本的Windows中,虽然也可以在我的电脑中右键格式化分区,但DBR会被填写另外的代码,对于NT5系统是从NTDLL启动,NT6系统从BOOTMGR启动。NT系统中格式化时也有一个“创建MS-DOS启动盘”选项,但这个选项仅在格式化软盘时有效,格式化硬盘时这个选项是灰色的,而且软盘分区为FAT12格式,其DBR引导代码也与硬盘分区不同。
笔者首次采用的方法是将U盘或移动硬盘映射为vmdk虚拟硬盘,然后使用虚拟机启动Win98的启动盘后format。这样需要注意一个问题,即Win7系统出于安全考虑,直接读写磁盘时会写保护有分区的空间,如需操作写保护的空间,必须使用DeviceIoControl锁定分区,显然,我们拿不到虚拟机软件的代码,所以需要想点办法。笔者想出的办法是用WinHex将移动硬盘MBR扇区结尾的55AA去掉使分区表失效,拔掉重插后Windows便不能加载分区,再用WinHex将其改回来,然后挂到虚拟机上用Win98启动盘进DOS格式化,效果很好。注意必要的时候还要用fdisk将分区设为活动,以及fdisk /mbr填写默认的MBR代码。Win98(DOS7.1)启动盘的镜像可以在此处下载。
“老师,能不能再给力点?”好的,上面的办法有点复杂,要用上虚拟机,还要用改分区表的危险办法避免写保护。我们既然知道MBR–>DBR–>IO.SYS的启动顺序,何不试试直接用WinHex在相应的地方填写引导代码?
笔者找到一篇神文章,详细地dump并分析了启动盘的引导记录。请猛击此处阅读(什么?不懂鸟语?那还学个蛋计算机,洗洗睡吧)。文章分析指出,Win98的DBR代码存在于分区的第一扇区和第三扇区。文章并不能方便地直接把十六进制代码拷出来,不过我们可以在format.com里寻找。
WinHex打开format.com,查找MSWIN4.1,可以查到两条记录,可以看到第一条记录之后不远写着FAT12,第二条是FAT32。找到FAT32的这段扇区数据复制5A-1FD范围的内容(即format.com 39C4-3B67),粘贴到U盘分区首个扇区的相应位置,再往后找到第三扇区的引导代码(即format.com 3D6A-3EEF),粘贴到U盘分区第三扇区的相应位置。U盘MBR也要初始化并设置分区标志为活动分区(80),Partition Manager之类的软件都可以做。
这样即免去了格式化分区而做到了刷写引导代码。最后拷贝io.sys、command.com两个文件,如果需要还可以拷贝himem.sys等文件,即做好了DOS启动盘,将grub.exe拷进来并编辑menu.lst即可进一步启动bootmgr、linux等其他系统。
哦对了,开机时会闪过Win98的蓝天白云,瞬间穿越的赶脚,有助提升逼格。如果不喜欢或者觉得很傻,可以创建0字节的logo.sys,或自建256色位图设计自己的开机画面,高端点亦可直接修改io.sys。
博主这是要吃透操作系统底层的节奏?
非也非也,MBR、DBR等电脑启动知识为早先在十年前从您处借阅的《电脑报合订本》中习得,从此博主从做启动盘装系统到写win98开机批处理再到写程序一步步走向不归路,每每回忆及此,博主真的是爱死您了~
求不黑…
我可真是得惭愧死了…
楼上是要表白出柜的节奏吗
博主雄起!