Ntoskrnl.exe异常或丢失造成系统不能启动,截图如下
造成这个问题的原因是多种多样的,大体有这么2种原因
1.  Ntoskrnl.exe 损坏或丢失
2.  硬件损坏或兼容性问题
硬件损坏或兼容性问题比较少见,但确实存在;硬件损坏多见于内存,我们可以将内存更换,来检查是否解决问题;兼容性问题则多见于兼容机, Dell, IBM, HP的服务器是不会出现此问题。如果此类问题反复问题,则要怀疑兼容性的问题,我就碰见过这样的问题;单个硬件没有任何问题,但组装在一起就会爆发异常。
我们主要讨论第一种情况
Ntoskrnl.exe 文件作用:
1.       系统启动时被Ntldr调用,
2.       调用Windows的启动Logo画面
流程图如下:
Windows深入了解故障恢复控制台5--控制台修复具体实例2-ntokrnl_高级讲解_02
 
注意一点:RNL.EXE HAL.DLL 文件一样, NTOSKRNL.EXE 不一定是原始的文件名。对于multi-processor 系统来说, NTOSKRNL.EXE 是由 Ntoskrnlmp.exe 改名而来。
方法1 从系统安装光盘修复
1.  插入光盘,开机启动,进入windows故障恢复台
2.  假设原先系统安装在C盘;光盘盘符为F盘;使用expand命令进行解压缩,直接复制是不可以的。
Expand sp2.cab –F: ntoskrnl.exe   c:\Windows\System32
3.  解压缩完毕后,重启,应该就可以正常工作
方法2从系统备份文件夹dllcache修复
正常情况下,windows操作系统会有一个重要系统文件的备份文件夹;路径为C:\WINDOWS\system32\dllcache 我们可以从那里直接还原
1.  插入光盘,开机启动,进入windows故障恢复台
2.  ntoskrnl.exe重命名
c:\Windows\System32\ntoskrnl.exe重命名为ntoskrnl_bk.exe
Ren c:\windows\system32\Ntoskrnl.exe  c:\windows\system32\Ntoskrnl_bk.exe
3 复制4个文件
C:\WINDOWS\system32\dllcache中的 Ntkrnlmp.exeNtkrnlpa.exeNtkrpamp.exeNtoskrnl.exe4个文件复制到
Copy C:\WINDOWS\system32\dllcache\***.exe  c:\Windows\System32\***.exe
4 然后我们一个一个的尝试把它们重命名为ntoskrnl.exe
Ren c:\windows\system32\****.exe  c:\windows\system32\ Ntoskrnl.exe
每尝试一下,您可以重启一下,看是否可以启动。
Mp 表示多CPU
PA 表示使用了/PAE4G以上内存
您可以根据您的机器的硬件配置,来排个优先级。比如如果是小于4G内存的多CPU服务器,那我们就从ntkrnlmp.exe开始改起,如果大于4G的多CPU,则先改ntkrpamp.exe
方法三:修复启动项
如果前面两个办法都无法解决问题,我们可以使用第三个办法。
FixMBR
FixBoot
来进行修复
方法四:制作启动盘,进入系统,修改分区Active属性
前三个方法,也不可行的话;我们可以猜测可能我们误操作,将操作系统所在的分区,设置成了“非活动分区”,造成的异常
我们可以使用软盘或WinPE启动盘(启动软盘的制作参照http://support.microsoft.com/kb/325879)进入系统;
点我的电脑,右键“Manage”,---》“Storage-à”Disk Management”, 选中原系统盘,右键;判断“Make Partition as active”是否变灰,如果没有变灰,点中它,设置为active即可。