巧用NT Loader实现多操作系统启动 (装载)
工作原理
我们知道,磁盘的引导扇区的内容决定了系统启动的方式,但是在多系统引导的情况下
,引导扇区的内容又取决于各系统安装的顺序。如果首先安装的是DOS,那么引导扇区就是D
OS引导扇区,它运行时将载入IO.SYS,完成正常的DOS启动工作。如果在DOS上又安装了Wind
ows NT,那么原先的DOS引导扇区将被NT的引导扇区覆盖,但是为了实现与DOS的双引导,NT
并未将其内容删除,而是保存在一个名为BOOTSECT.DOS的文件中。NT引导扇区运行时不再装
入IO.SYS,而是装入NTLDR,后者将显示一个启动菜单,提示您是启动NT还是启动DOS。如果
选择了启动DOS,那么NTLDR将运行文件BOOTSECT.DOS,也就是保存的DOS引导扇区,执行正常
的DOS启动工作。如果此后又安装了Windows 95,那么它在保持NT的启动扇区不变的情况下,
用自己的引导扇区重写文件BOOTSECT.DOS,同时安装自己的IO.SYS和MSDOS.SYS,而把DOS的
IO.SYS和MSDOS.SYS更名为IO.DOS和MSDOS.DOS。此时启动菜单中的相应项也由“MS-DOS”变
成了“Microsoft Windows”,如果选择它,NTLDR同样执行BOOTSECT.DOS,但是此时这个文
件的内容已不是DOS的引导扇区,而是Win 95的引导扇区,它将直接启动Win 95而不是DOS。
从上面可以看出,NT与DOS以及Win 95的双引导实际上是由NTLDR根据用户的不同选择执
行不同的引导扇区文件来完成的。因此,我们只要找到所有要启动操作系统的引导扇区文件
即可完成多操作系统的启动。不过,还有一个小问题需要考虑,就是IO.SYS和MSDOS.SYS的更
名问题。我们知道,MS-DOS和Windows 95都使用文件IO.SYS和MSDOS.SYS,为了防止冲突,
启动DOS时,Win 95的IO.SYS和MSDOS.SYS将分别更名为WINBOOT.SYS和MSDOS.W40,启动Win
95时,DOS的IO.SYS和MSDOS.SYS将更名为IO.DOS和MSDOS.DOS。在DOS和Win 95双引导系统中
,这些工作都是由Win 95的IO.SYS来完成的。因此,在用NTLDR来实现多操作系统启动时必须
提供一种方法来完成这种更名工作,否则将不能正常启动DOS或者Win 95。幸好,NTLDR实现
时考虑了这个问题,专门设置了两个开关参数:/Win 95和/Win 95DOS。
具体步骤
首先,必须做好安装前的准备工作,包括:备份硬盘上的数据(非常重要);制作NT安
装磁盘(插入NT的CD-ROM,在i386目录下执行WINNT32/OX);如果需要安装Linux,那么制
作Linux的Boot盘和Root盘。
其次,也是最关键的一步,就是获得不同操作系统的引导扇区文件。NT就不必说了,既
然是围绕NT来实现多系统引导,系统的引导扇区就是NT的引导扇区。下面笔者主要讨论一下
如何获得DOS、Win 95和Linux的引导扇区文件。
1. DOS
首先安装DOS,然后安装NT,此时C盘根目录下的BOOTSECT.DOS文件就是DOS的引导扇区文
件。
2. Win 95
在上一步的基础上安装Win 95。安装之前首先备份刚获得的DOS引导扇区文件,安装成功
之后,C盘根目录下的BOOTSECT.DOS文件就是Win 95的引导扇区文件,将其保存为BOOTSECT.
W40,并将备份的DOS引导扇区文件重命名为BOOTSECT.DOS。
3. Linux
安装Linux,然后在Linux系统下运行以下命令:
dd if=/dev/hda? of=/mnt/c-drive/bootsect.lnxbs=512 count=1
其中/dev/hda?是Linux的引导分区,/mnt/c-drive是C盘在Linux中的mount点。然后更
改/etc/lilo.conf文件,增加一行:
boot=/mnt/c-drive/bootsect.lnx
让LILO将Linux的引导扇区写到文件bootsect.lnx中。
由于Linux安装时重写了C盘的引导扇区,NT将不能正常启动,所以必须对其进行修复。
具体步骤为:首先用DOS启动盘引导系统,然后运行下列命令:
fdisk /mbr删除主引导记录,最后再用NT安装盘修复NT以恢复NT的主引导扇区(关于如
何修复NT,有兴趣的读者可以参见有关文章)。
至此,我们获得了所有要启动操作系统的引导扇区文件,而且正确修复了NT的引导扇区
,下一步就是修改NT的BOOT.INI文件,最终实现多操作系统引导了。
修改之前的BOOT.INI大致如下所示:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(1)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(1)partition(1)\WINNT=″Windows NT
Workstation Version 4.00″
multi(0)disk(0)rdisk(1)partition(1)\WINNT=″Windows NT
Workstation Version 4.00 [VGA mode]″ /basevideo /sos
C:\=″Microsoft Windows″
修改之后它将变为:
(相同部分略)
C:\bootsect.w40=″Windows 95″ /WIN95
C:\bootsetc.dos=″MS-DOS″ /WIN95DOS
C:\bootsect.lnx=″Linux″
其中/WIN95和/WIN95DOS的作用我们前面已经进行了讨论。
最终结果
在完成了所有操作之后重启系统,NT Loader将显示以下启动菜单供您选择:
″Windows NT Workstation Version 4.00″
″Windows NT Workstation Version 4.00 [VGA mode]″
″Windows 95″
″MS-DOS″
″Linux″
根据选择的不同,系统启动不同的操作系统,从而实现了多操作系统的启动。
总 结
以上方法是笔者实践经验的总结,已在多台PC机上实现,但是鉴于实际中的情况复杂多
变、各个操作系统版本众多,因此众多玩家在试验时还是要小心为妙,多作备份。
(塞外风情站 bbs.imu.edu.cn)