平时,我们偶尔会遇到系统启动时显示“NTLDR is missing”而无法进入系统的情况。其实导致该故障的原因多,但网上绝大部分文章都只针对一种情况进行讨论。下面笔者将各种情况和原因进行汇总,希望对大家有所帮助。
01.NTLDR损坏或丢失
这种情况解决起来比较简单,而且比较常见,所以也是我们遇到该故障时首先采取的一种方法,从系统安装光盘i386目录下复制NTLDR到系统分区根目录中即可。
系统启动所必需的文件有ntldr、boot.ini、bootfont.bin、NTDETECT.COM、arcldr.exe、arcsetup.exe
C:\WINNT\system32目录下NTOSKRNL.EXE、HAL.DLL
C:\WINNT\system32\config目录下default、SAM、SECURITY、software、system
其它IO.SYS、MSDOS.SYS、CONFIG.SYS、AUTOEXEC.BAT
02.Bios中启动顺序不是首选从硬盘启动,而光驱或软驱中有非系统盘片未取出
03.BIOS中硬盘信息被更改,检测方式被设置为手动。
由于硬盘信息被篡改,导致系统找不到硬盘中的系统分区,所以就找不到系统分区中的启动文件NTLDR了。只要在BIOS的“Standard CMOS Setup”中,把硬盘检测方式设置为“Auto(自动)”即可。
04.系统分区没有被激活
如果用于存放启动文件解决的方法时用Windows98启动盘启动电脑,然后运行Fdisk,选择“Set active partition”来激活系统分区。如果仍无法解决,就需要在控制台恢复模式Recovery Console下运行FIXBOOT命令来使活动分区成为可启动的分区。
05.硬盘中的主引导记录MBR,Master Boot Record被破坏,导致系统找不到系统分区
解决的方法是在控制台恢复模式下运行fixmbr命令,或者是用Windows 98启动盘启动电脑,然后运行FDISK /MBR。
06.Boot.ini文件内容不正确
以下是Boot.ini文件内容示例:
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
其中timeout=5表示开机显示多操作系统选单时间为5秒
multi(0)disk(0)rdisk(0)partition(1)是Windows NT系统以ARC命名是用来定位其引导分区所在的路径,也就是利用它指明引导分区在哪一个磁盘控制器,哪一个硬盘,哪一个分区内。
multi(0)disk(0)rdisk(0)partition(1)\WINNT就是表示C:\WINNT
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS就是表示D:\WINDOWS
该电脑是双系统的,C盘装的是Windows2000,D盘装的是WindowsXP,默认进Windows2000。
ARC命名可分为两大类,以scsi为首或以multi开头,现分别说明如下:
磁盘控制器是IDE或ESDI的以multi开头,以multi开头的ARC命名的disk项总是disk(0)
即形如multi(x)disk(0)rdisk(y)partition(z)\
multi(x):表示第几个控制卡,x以0为起始数字。
rdisk(y):表示该控制卡下的第几块物理磁盘,y以0为起始数字。
partition(z):表示该物理磁盘上第几个分区,z以1为起始数字。
磁盘控制器为SCSI卡的以scsi开头,以scsi开头的ARC命名的rdisk项总是rdisk(0)
即形如scsi(x)disk(y)rdisk(0)partition(z)\
scsi(x):表示第几个控制卡,x以0为起始数字。
disk(y):表示该控制卡下的第几块物理磁盘,y以0为起始数字。
partition(z):表示该物理磁盘上第几个分区,z以1为起始数字。
07.系统分区为NTFS格式,其主文件表MFT碎片较多
主文件表MFT是一个卷上每一个文件的索引,如果根文件夹包含多个文件,则MFT就会变得非常零碎,以至于需要另外创建一个分配索引。因为文件是按字母顺序映射到分配索引中的,NTLDR 文件可能会被推到第二个分配索引中。一般情况下不建议用户将文件直接写入根文件夹,尤其是大量文件。如果有某个程序定期在系统分区的根文件夹中创建和删除临时文件,或者将许多文件误复制到根文件夹,就会造成这一情况。但是,即便我们此时去删除那些临时文件或是复制到根文件夹的文件,主文件表MFT分配索引并不会降到原来的大小,所以故障依然存在。
这时候我们需要使用微软提供的一个叫bcupdate2的工具来强制更新启动代码Boot Code
下载地址:http://www.poseidon.org.uk/bcupdate2.exe。
使用方法是在其他硬盘的系统上,运行 bcupdate2 x: /f (x:代表需要修复的硬盘的系统分区),然后按“Y”确认更新启动代码即可。
08.BIOS版本太低
如果主板上的BIOS程序过时,可能会导致该故障,解决的方法是升级BIOS程序。
09.逻辑分区首扇区DBR,DOS Boot Record中的BPB,BIOS Parameter Block信息中存在无效头值
如果把一个硬盘上的系统做了镜像后克隆到其他不同大小的硬盘上,然后使用这个克隆系统升级到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:在控制台恢复模式下运行fixboot命令重写Windows 2000或Windows XP的启动代码。
10.逻辑分区首扇区DBR中的文件分配表损坏
用Dir /p /w 命令查询C盘,提示“File allocation table bad,drive C”
用PQMagic检测C盘提示
“FAT copies are not identical”
“An invalid cluster was found in a directory entry”
“Too many errors found,process halted”
硬盘文件分配表庞大无法手工修复,只能依靠工具。FAT表记录着硬盘数据的存储地址,每一个文件都有一组FAT链指定其存放的簇地址。FAT表的损坏意味着文件内容的丢失。庆幸的是DOS系统本身提供了两个FAT表,如果目前使用的FAT表损坏,可用第二个进行覆盖修复。但由于不同规格的磁盘其FAT表的长度及第二个FAT表的地址也是不固定的,所以修复时必须正确查找其正确位置,一些工具软件如NU等本身具有这样的修复功能,使用也非常的方便。采用DEBUG也可实现这种操作,即采用其m命令把第二个FAT表移到第一个表处即可(不建议这样做)。如果第二个FAT表也损坏了,则也无法把硬盘恢复到原来的状态,但文件的数据仍然存放在硬盘的数据区中,可采用CHKDSK或SCANDISK命令进行修复,最终得到*.CHK文件,这便是丢失FAT链的扇区数据。如果是文本文件则可从中提取出完整的或部分的文件内容。
11.安装了EZ-BIOS
EZ-BIOS是西部数据公司提供的一个用于解决老主板不能识别大容量硬盘问题的软件。如果安装了EZ-BIOS,那么在使用Windows 95或Windows 98升级到Windows 2000 或 Windows NT 4.0期间就会出现该故障。解决的方法是卸载EZ-BIOS。