一、NTLDR损坏或丢失
这种情况解决起来比较简单,而且比较常见,所以也是我们遇到该故障时首先采取的一种方法,即在Recovery Console或其他系统下,把系统的安装光盘中i386目录下的NTLDR文件复制到系统分区(通常为C盘)中即可。
二、NTLDR没有损坏或丢失
如果把光盘中的NTLDR文件复制到C盘后重新启动,问题依然没有解决,这时我们可以认识到,导致该故障的不是NTLDR损坏或丢失,而是系统视而不见。为什么会这样呢?一般说来,导致该现象的原因有以下几点:
1、采用非系统磁盘来启动电脑。如果用一些非系统磁盘引导启动电脑,比如软盘、光盘、USB移动存储设备等,就可能会出现此问题。解决的方法是取出这些设备,然后重新启动电脑即可。
2、BIOS中硬盘中的信息被更改,检测方式被设置为手动。
由于硬盘信息被篡改,导致系统找不到硬盘中的系统分区,所以就找不到系统分区中的启动文件NTLDR了。只要在BIOS的“Standard CMOS Setup”中,把硬盘检测方式设置为“Auto(自动)”即可。
3、系统分区没有被激活。如果用于存放启动文件(包括BOOT.INI、NTLDR、NTDETECT.COM)的系统分区没有被激活而是激活了其他主分区,那么就会导致系统启动时找不到NTLDR文件。解决的方法时用Windows 98启动盘启动电脑,然后运行Fdisk,选择“Set active partition”来激活系统分区。如果仍无法解决,就需要在Recovery Console下运行FIXBOOT命令来使活动分区成为可启动的分区。
4、硬盘中的主引导记录(MBR)被破坏,导致系统找不到系统分区。解决的方法是在Recovery Console下运行fixmbr命令,或者是用Windows 98启动盘启动电脑,然后运行FDISK /MBR。
5、系统分区的MFT根文件夹碎片较多。主文件表(MFT)是一个卷上每一个文件的索引,如果 MFT 根文件夹包含多个文件,则MFT就会变得非常零碎,以至于需要另外创建一个分配索引。因为文件是按字母顺序映射到分配索引中的,NTLDR 文件可能会被推到第二个分配索引中。一般情况下不建议用户将文件直接写入根文件夹,尤其是大量文件。如果有某个程序定期在系统分区的根文件夹中创建和删除临时文件,或者将许多文件误复制到根文件夹,就会造成这一情况。但是,请神容易送神难,如果我们此时去删除那些临时文件或是复制到根文件夹的文件,主文件表(MFT)分配索引并不会降到原来的大小,所以故障依然存在。
这时候我们需要使用微软提供的一个叫bcupdate2的工具(下载地址:
http://www.poseidon.org.uk/bcupdate2.exe)来强制更新启动代码(Boot Code)。使用方法是在其他硬盘的系统上,运行 bcupdate2 x: /f (x:代表需要修复的硬盘的系统分区),然后按“Y”确认更新启动代码即可。
6、安装了EZ-BIOS。EZ-BIOS是西部数据公司提供的一个可以通过重写分区列表来允许用户创建比 Windows 95 或 Windows 98 支持的分区更大的工具。如果安装了EZ-BIOS,那么在使用Windows 95或Windows 98升级到Windows 2000 或 Windows NT 4.0期间就会出现该故障。解决的方法是卸载EZ-BIOS。
7、BIOS过时。如果主板上的BIOS程序过时,可能会导致该故障,解决的方法是升级BIOS程序。
8、FAT32 BIOS Parameter Block (BPB) 中存在无效头(边)值。如果把一个硬盘上的系统(包括Windows 95、Windows 98 或 Windows Me)做了镜像后克隆到其他不同大小的硬盘上,然后使用这个克隆系统升级到Windows 2000或Windows XP时,就会出现在复制文件后重新启动提示“NTLDR is missing”。因为Windows 95、Windows 98 或者 Windows Me 启动代码忽略 BPB 中的头值,并且即使在值无效时仍启动程序。但是,Windows 2000 和 Windows XP 中的启动代码需要这个值,如果此值无效则启动过程不会成功。这种情况解决方法比较复杂:
step1:使用包含 Sys.com的 Windows 95、Windows 98 或者 Windows Me 启动盘来重新启动电脑。
step2:运行以下命令,在系统分区的根目录下备份msdos.sys文件:
attrib -h -r -s c:/msdos.sys
rename msdos.sys *.ysy
step3:在命令提示符中,输入 sys c:。此命令用正确的 BPB 信息重写 Windows 95、Windows 98 或者 Windows Me 启动代码。
step4:在Recovery Console下运行fixboot命令重写Windows 2000或Windows XP的启动代码。
按照以上操作后,一般可以使原来的安装程序继续进行。
总结:以上列举的故障现象及其原因都是按照由易到难,由常见到少见来排列的。大家在遇到此故障时,可以按照本文的顺序,进行故障排除。