Windows XP \Windows 2003启动过程的学习及故障分析处理
                
(七)
 
Windows XP \Windows 2003系统的完全建立
Ntoskrnl- hal.dll – Winlogon
NTOSKRNL.EXE建立Windows2000/XP内核(Windows系统架构),
         
运行此阶段时,最明显的表现是屏幕出现了Windows XP的标志了,同时还会显示一条滚动的进度条,这个进度条可能会滚动若干圈(如下图),这个大家一定眼熟吧。
 
              

随后,硬件抽象层(HAL)(与NTOSKRNL.EXE在同一个文件夹里——C:\WINDOWS\system32)被引导进程加载,硬件抽象层(HAL)的作用是:隐藏特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。

接着系统将载入设备驱动、启动服务。注意两点:一、具体加载哪些驱动、服务是由注册表的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services里的内容决定的。二、驱动、服务很多,他们是有加载顺序的优先等级的。当然最先加载的是系统建立启动过程中运行系统所必需的,这样才能用最短的时间显示出登录界面,供用户登录。比如有的服务必须依赖其他服务,所以,其依赖的服务优先级应该比他高、先加载才可以。
 在NTOSKRNL.EXE建立Windows框架的同时,NTOSKRNL.EXE 也启动WIN32子系统, 再由WIN32子系统启动WINLOGON.EXE,并由它启动LOCAL SECURITY AUTHORITY(LSASS.EXE) 同时加载GINA(Grapical Identification and Authentication),就出现用户登录显示登录对话框,等待用户登录(如下图)
 

             

用户登录后,出现微软之声和我们熟悉的个性化桌面,此时WINDOWS2000/XP还会继续载入非关键性的设备驱动、启动服务及配置网络设备和用户环境。(为什么自己的系统已经成功登录了,可是非要过好几分钟之后桌面上才会显示出任务栏以及桌面图标等内容。屏幕上的光标也是有程序运行时的模样。其实用户刚登录,出现桌面时,系统的启动还没有真正全部完成)

最后,所有设定的驱动、服务加载结束后,WINDOWS2000/XP漫长的启动过程才终于完成。现在,你想怎么用就怎么么用——上网、写作、购物、看电影、玩游戏……
 
Ntoskrnl- hal.dll – Winlogon阶段
可能出现的故障现象及处理方法:
从计算机开始运行Ntoskrnl.exe开始,全是运行或调用系统分区里的程序及文件,如果启动到了这个阶段出现问题,大部分原因是由于这个分区里的程序及文件损坏或丢失。
他们是怎么损坏的呢?大致有这几种情况吧:
1、硬盘坏了。出现坏道、坏区,而那些启动文件、程序刚好在坏道、坏区,系统无法读出、执行。硬盘坏或者部分坏时,系统启动中往往会自动出现磁盘自检过程。好的硬盘自检过程很快,有坏道、坏区硬盘自检过程很长(有种很吃力的感觉),最后会显示检查结果,从结果中可看出异常。这种情况建议换硬盘吧,因为继续使用这样的硬盘不仅是无法进入系统,估计其他分区的文件(你的照片、资料、电影)也有可能损坏了。硬盘坏没有什么修复的价值,因为现在的硬盘不贵,修好的硬盘很容易再坏(有的坏道像癌细胞一样会扩展的),把你在此硬盘宝贝资料赶快考出去,考出后看看能否打开正常,如果没问题,庆幸吧。
2、非法关机。正常的关机是“开始”——“关闭计算机…”——“关闭”,如果非法关机——突然断电,很容易将系统文件(如启动文件、程序等)搞坏,也有可能将你的文件搞坏(如你正在写一篇WORD文档,没有保存、退出就非法关机的话)。正常的关机后,系统在完全停运前还需做一些善后工作,这样方能安全关机。这种情况可以用cmd中的指令chkdsk c: /f尝试修复。(可参见我的博文
3、启动文件、程序被病毒感染后被杀毒程序干掉。病毒***文件总想开机自启动、隐藏深处、避免查杀,很自然的就盯上了系统启动文件、程序,偷换、修改系统启动文件是经常用的伎俩。一般说来,病毒***偷换、修改系统启动文件、程序还是能够保证系统的启动的,道理很简单,系统不能启动,他们的病毒、***也没有了运行的平台。杀毒程序运行后,他发现了有问题的系统启动文件、程序,通常会剥离病毒、修复文件,但有的杀毒软件是乎只能发现问题,但不能很好地剥离病毒、修复文件,而是最后将问题的系统启动文件、程序一刀斩去,病毒没有了,系统也瘫了(真是欲想成功,必先自宫;即使自宫,未必成功,呜呼!)
可能还有其他原因,我就知道这些了。
现象:1如下图

 

      

根据屏幕提示hal.dll文件丢了或坏了,我们可以复制(在PE环境中或挂为从盘)一个好的hal.dll试试,但并不能保证成功。原因是出现这种提示的原因并不唯一,如我们前面说的Boot.ini不对,就会出现此提示。另外设驱动有问题,有时也会出现这种提示,情况还是比较复杂的。

处理方法:重装系统吧。

 
现象:2如下图
     
首先我们需要知道CONFIG\SYSTEM是一个什么文件?他主要就是注册表文件。他里面包含了庞大数量的注册表键项、键值等配置数据的文件,。通过前面的学习知道,系统在启动过程中既生成一些注册表键项、键值,也会根据其他键项、键值对计算机进行初始化工作(如加载驱动、启动服务),各个计算机注册表并不完全一样,所以我们用复制其他计算机中的CONFIG\SYSTEM方法是不行的,(计算机的注册表是可以备份的,但实际有几人做了?)因此情况也比较复杂。
处理方法:重装系统吧。
 

现象:3如下图

      

处理方法:和现象1类似复制(在PE环境中或挂为从盘)一个好的ntoskrnl.exe试试;不行的话,重装系统吧。

 
                                                         
(待续)