今天一个同事的笔记本开机,没有反应,屏幕显示“NTLDR is missing”,他的系统是Windows XP,磁盘分区NTFS。
前一阵子另一个同事的Windows XP系统(磁盘分区NTFS)也出现过这样的问题。当时从网上找的资料时复制Windows XP光盘上的NTLDR(在光盘i386目录下面)到C:\下。但是复制之后,重新开机,笔记本一直在重新启动(引导还没有通过)。最后没有办法,重新安装操作系统。
这次想到要重装系统,头很大,要重装系统,之前安装过的大部分应用程序要重新安装。关键是“我的文档”中有很多重要的文件,用Windows XP安装光盘启动到系统修复模式。试图进入“c:\documents and settings”目录,系统提示拒绝访问。想起上次同事重装Windows XP以后,试图进入之前的“documents and settings”特定用户目录下面的时候,操作系统提示没有权限访问。
重要文档不能复制出来,只能在想办法修复操作系统了。于是利用Windows XP的安装光盘,启动笔记本,进入Windows修复状态,察看C:\目录发现没有文件NTLDR,复制Windows XP安装光盘上的i386目录下面的文件NTLDR到C:\,重新启动笔记本,发现笔记本无法引导,一直在重新启动,发现Windows XP报的错误信息好像少什么文件(这个错误信息只显示零点几秒)。再次利用windows XP安装光盘启动笔记本,进入修复状态,利用dir命令查看C:\目录下的文件,发现没有文件NTDETECT.COM,将光盘i386目录下面的文件NTDETECT.COM复制到c:\目录下面。重新启动机器,发现笔记本可以通过引导,但是很快提示一个错误,说<windows root>/system32/hal.dll丢失或无效。
再次利用Windows XP光盘启动机器,进入Windows XP光盘i386目录下面查找,只能找到hal.dl_文件,发现c:\windows\system32目录下面存在文件hal.dll认为它损坏,保险起见将hal.dll更名文hal.old,复制光盘hal.dl_到system32下面为hal.dll。重新启动笔记本,发现还是那样的错误。
说明不是文件hal.dll的错误,再次利用Windows XP光盘启动机器,用dir命令查看c:\目录下面,发现没有boot.ini、IO.sys、msdos.sys、CONFIG.SYS、bootfont.bin(说明windows Nt引导方式和MSDOS不一样,不需要IO.sys、msdos.sys、CONFIG.SYS,windows XP下面这三个文件大小均为0),笔记本没有软驱,只有USB口,还好我们这里有个U盘,到其他Windows XP机器上,找到boot.ini、IO.sys、msdos.sys、CONFIG.SYS、bootfont.bin这些文件,复制到U盘上(因为WIndows XP均是默认安转在c:\windows目录下面的,如果不是需要修改boot.ini文件)。将U盘插入机器USB口,重新用Windwos XP光盘启动笔记本进入修复模式,发现U盘可以访问,于是复制文件到c:\目录下面,重新启动机器。OK,Windos XP启动界面出现了,但是系统很快就蓝屏了(错误信息没有记),突然想起,之前把c:\windows\system32\下面的文件hal.dll替换过,重新用光盘启动windows XP,将c:\windows\system32\hal.dll删除,将hal.old更名为hal.dll,重新启动笔记本。OK,系统正常。
补充说明,在之前dos模式下运行过 fixmbr,fixboot c:命令,应该没有什么关系,这两个命令只有在修复状态下的dos模式下有,而且windows XP最变态的是dir 命令不支持参数,没有办法遍历查找目录,很不爽。
总结:Windows XP出现“NTLDR is missing”错误,少的文件是 c:\NTLDR、c:\NTDETECT.COM、c:\Boot.ini、IO.sys、msdos.sys、CONFIG.SYS、bootfont.bin文件。修复方式,到好的Windows XP机器上复制这些文件到U盘(软盘),然后启动到Windows XP修复模式,将文件复制到c:\目录下面。唯一要注意的是boot.ini文件的内容,记录了系统引导的硬盘以及分区。