先来说说MBR(主引导扇区)和系统引导扇区:
主引导扇区位于硬盘的首部,负责搜索硬盘可以启动的分区,对于DOS来说,它是由Fdisk生成的;而系统引导扇区位于每个分区的首部,用来引导本分区相应的操作系统,它是由sys命令负责的。
其次来说说系统的启动:
一般来说,Win98的启动是由5个文件负责的:io.sys,msdos.sys,command.com,autoexec.bat和config.sys。
而Win2000和WinXP的启动是由Ntldr和Ntdetect两个文件负责。
Win98和Win2000/WinXP双系统启动的时候就比较复杂,是由OS Loaer来引导启动,用户可以选择启动哪个系统,若用户选择了启动Win2000/WinXP,那么就装载Ntldr和Ntdetect两个文件启动到Win2000/WinXP下;如果用户选择启动Win98,那么就装载Bootsect.dos这个文件,Bootsect.dos文件其实就是Win98引导扇区的镜像。
这里顺便说一句:Win2000和WinXP里都有 Ntldr和Ntdetect两个文件,但是却是不同的,如果你的双系统里缺少这两个文件,你可以从Win2000或WinXP安装盘里的I386目录下拷贝。如果是Win2000的话,可以采用Win2000或WinXP的都行;如果是WinXP的话,必须采用WinXP光盘里的,用Win2000盘里的这两个文件是不能引导WinXP的,这一点在安装包含Win2000和WinXP在内的多系统里表现得尤为明显,比如你重装了Win2000以后,照样无法启动WinXP,原因就是你用Win2000的Ntldr和Ntdetec这两个文件覆盖了WinXP的Ntldr和Ntdetec这两个文件。因此一定要注意!
再次来说说Windows的多操作系统引导管理工具:OS Loader。每一种多操作系统引导管理工具都有所不同,比如BootMagic和System Commander是常驻于MBR的;而OS Loader
则是常驻于系统引导扇区的;而Linux的多系统引导工具LILO或GRUB既可位于MBR,也可位于系统引导扇区。
以上是一些理论知识,既然都说清楚了,下面进入理论分析阶段,看看格式化C盘重新安装Win98后,为什么不能双启动了:
其实原因很简单,当你把C盘重新安装Win98后,你的C盘中比以前少了四个文件,分别是:Ntldr, Ntdetec,Bootsect.dos和boot.ini(多系统启动的配置文件)。但是在重装之前仅仅备份这四个文件,重装之后再拷贝回来,同样是不能实现双启动的!原因在于你的C盘的系统引导扇区已经被Win98给覆盖了:它将以前的由OS Loader控制的系统引导扇区变成了Win98的系统引导扇区,因此尽管你拷贝回了那四个文件,因为引导扇区依然没有恢复成双启动时的样子,所以你依然不能实现双启动。
知道了原因,解决起来才有了思路和目标。那就是想办法恢复系统引导扇区。方法有好几种,
方法一:
可以在重装Win98之前备份系统引导扇区,需要用到DEBUG命令!
备份命令为:
a:>debug
-L 100 2 0 1
-na:OSLoader.REC
-rcx
CX:0000
:200
-rbx
BX:0000
:0
-w
-q
这时软盘上生成的OSLoader.REC文件就是OS Loader引导扇区的备份,如果不小心删除了Bootsect.dos文件,可用类似的方法生成该文件,只需把第三行的保存文件的名称改为Bootsect.dos即可。
只要把以上生成的OSLoader.REC文件重新写如硬盘引导扇区就可以恢复OS Loader的引导功能。命令为:
A:>debug
-Na: Bootsect.dos
-L
-w100 2 0 1
-q
OS Lode菜单修复以后,如果C盘缺少Bootsect.dos文件,可以将上述生成的Bootsect.dos文件拷贝到C盘下(注意:不同机器上生成的Bootsect.dos文件不能通用)。
方法二:
用Win2000或WinXP的故障控制台来恢复引导扇区:
进入故障控制台,输入:
Fixboot c:
Exit
重起计算机即可。
当然,这两种方法都是在提前备份并恢复了以上四个文件的前提下才能成功实现找回双启动功能的,如果事先没有备份这几个文件,就比较麻烦了,简单一点的方法是用Win2000或WinXP安装盘修复的办法,也就是假安装的办法;麻烦一点的办法是从Win2000和WinXP的安装盘里先拷贝出Ntldr和Ntdetect两个文件,在用DEBUG命令生成Bootsect.dos文件,然后用Win2000或WinXP的安装盘进入故障控制台,生成Boot.ini文件(当然,如果对该文件的语法十分熟悉的话,就像我师傅那样当然也可以在Win98下用记事本自己根据机器的配置编写一个Boot.ini文件),然后再