电脑软硬件维修大全(实例精华版)
上QQ阅读APP看书,第一时间看更新

技巧13 Windows系统启动流程

基本上,操作系统的引导过程是从电脑通电自检完成之后开始的,而这一过程又可以细分为预引导、引导、载入内核、初始化内核及登录5个阶段。

流程1:预引导阶段

当我们打开电脑电源后,预引导过程就开始运行了。在这个过程中,电脑硬件首先要完成通电自检(Power-On Self Test,POST),这一步主要会对电脑中安装的处理器、内存等硬件进行检测,如果一切正常,则会继续下面的过程。

接下来电脑将会定位引导设备(例如第一块硬盘,设备的引导顺序可以在电脑的CMOS设置中修改),然后从引导设备中读取并运行主引导记录(Master Boot Record,MBR)。至此,预引导阶段成功完成。

流程2:引导阶段

引导阶段又可以分为:初始化引导载入程序、操作系统选择、硬件检测、硬件配置文件选择这4个步骤。在这一过程中需要使用的文件包括:ntldr、boot.ini、ntdetect.com、ntoskrnl.exe、ntbootdd.sys、bootsect.dos(非必需)等。

1.初始化引导载入程序

在这一阶段,首先会调用ntldr程序,该程序会将处理器由实模式(Real Mode)切换为32位平坦内存模式(32-bit Flat Memory Mode)。不使用实模式的主要原因是,在实模式下,内存中的前640KB是为MS-DOS保留的,而剩余内存则会被当作扩展内存使用,这样Windows系统将无法使用全部的物理内存。

接下来ntldr会寻找系统自带的一个微型的文件系统驱动。加载这个系统驱动之后,ntldr才能找到硬盘上被格式化为NTFS或者FAT/FAT32文件系统的分区。如果这个驱动损坏了,就算硬盘上已经有分区,ntldr也认不出来。

读取了文件系统驱动,并成功找到硬盘上的分区后,引导载入程序的初始化过程就已经完成了,随后将会进行下一步。

2.操作系统选择

如果电脑中安装了多个操作系统,将会进行操作系统的选择。如果已经安装了多个Windows操作系统,那么所有的记录都会被保存在系统盘根目录下一个名为boot.ini的文件中。ntldr程序在完成了初始化工作之后就会从硬盘上读取boot.ini文件,并根据其中的内容判断电脑上安装了几个Windows,它们分别安装在第几块硬盘的第几个分区上。如果只安装了一个,那么就直接跳过这一步;如果安装了多个,那么ntldr就会根据文件中的记录显示一个操作系统选择列表,并默认持续30秒。如果用户没有选择,那么30秒后,ntldr会开始载入默认的操作系统。至此操作系统选择这一步已经成功完成。

3.硬件检测

这一过程中主要需要用到ntdetect.com和ntldr程序。当我们在前面的操作系统选择阶段选择了想要载入的Windows系统之后,ntdetect.com首先要将当前电脑中安装的所有硬件信息收集起来,并列成一个表,接着将该表交给ntldr(这个表的信息稍后会被用来创建注册表中有关硬件的键)。这里需要被收集信息的硬件类型包括:总线/适配器类型、显卡、通讯端口、串口、浮点运算器(CPU)、可移动存储器、键盘、指示装置(鼠标)。至此,硬件检测操作已经成功完成。

4.硬件配置文件选择

硬件检测操作完成后,系统会自动创建一个名为“Profile1”的硬件配置文件,缺省设置下,在“Profile1”硬件配置文件中启用了所有安装Windows时安装在这台电脑上的设备。

流程3:载入内核

在这一阶段,ntldr会载入Windows系统的内核文件:ntoskrnl.exe,但这里仅仅是载入,内核此时还不会被初始化。随后被载入的是硬件抽象层(hal.dll)。

硬件抽象层其实是内存中运行的一个程序,这个程序在Windows系统内核和物理硬件之间起到桥梁的作用。正常情况下,操作系统和应用程序无法直接与物理硬件打交道,只有Windows内核和少量内核模式的系统服务可以直接与硬件交互。而其他大部分系统服务以及应用程序,如果想要和硬件交互,就必须通过硬件抽象层进行。

流程4:初始化内核

当进入到这一阶段的时候,电脑屏幕上就会显示Windows操作系统的标志,同时还会显示一个滚动的进度条,这个进度条可能会滚动若干次。从这一步开始我们才能从屏幕上对系统的启动有一个直观的印象。在这一阶段中主要会完成4项任务:创建Hardware注册表键,对Control Set注册表键进行复制,载入和初始化设备驱动,启动服务。

1.创建Hardware注册表键

首先要在注册表中创建Hardware键,Windows内核会使用在前面的硬件检测阶段收集到的硬件信息,来创建HKEY_LOCAL_MACHINE\Hardware键。也就是说,注册表中该键的内容并不是固定的,而是根据当前系统中的硬件配置情况动态更新。

2.对Control Set注册表键进行复制

如果Hardware注册表键创建成功,那么系统内核将会对Control Set键的内容创建一个备份。这个备份将会被用在系统的高级启动菜单中的“最后一次正确配置”选项。例如,如果我们安装了一个新的显卡驱动,重启动系统之后Hardware注册表键还没有创建成功系统就已经崩溃了,这时候如果选择“最后一次正确配置”选项,系统将会自动使用上一次的Control Set注册表键的备份内容重新生成Hardware键,这样就可以撤销之前因为安装了新的显卡驱动对系统设置的更改。

3.载入和初始化设备驱动

在这一阶段里,操作系统内核首先会初始化之前在载入内核阶段载入的底层设备驱动,然后内核会在注册表的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services键下查找所有Start键值为“1”的设备驱动。这些设备驱动将会在载入之后立刻进行初始化,如果在这一过程中发生了任何错误,系统内核将会自动根据设备驱动的“ErrorControl”键的键值进行处理。“ErrorControl”键的键值共有4种,分别具有如下含义:

❑“0”忽略,继续引导,不显示错误信息。

❑“1”正常,继续引导,显示错误信息。

❑“2”恢复,停止引导,使用“最后一次正确配置”选项重启动系统。如果依然出错则会忽略该错误。

❑“3”严重,停止引导,使用“最后一次正确配置”选项重启动系统。如果依然出错则会停止引导,并显示一条错误信息。

4.启动服务

系统内核成功载入,并且成功初始化所有底层设备驱动后,会话管理器开始启动高层子系统和服务,然后启动Win32子系统。Win32子系统的作用是控制所有输入/输出设备以及访问显示设备。当所有这些操作都完成后,Windows的图形界面就可以显示出来了,同时我们也将可以使用键盘以及其他I/O设备。

接下来会话管理器会启动Winlogon进程。至此,初始化内核阶段已经成功完成,这时候用户就可以登录了。

流程5:登录阶段

在这一阶段,由会话管理器启动的winlogon.exe进程将会启动本地安全性授权(Local Security Authority,lsass.exe)子系统。到这一步之后,屏幕上将会显示Windows XP的欢迎界面或者登录界面,这时候用户已经可以顺利进行登录了。不过与此同时,系统的启动还没有彻底完成,后台可能仍然在加载一些非关键的设备驱动。

随后系统会再次扫描HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services注册表键,并寻找所有Start键的数值是“2”或者更大数字的服务。这些服务就是非关键服务,系统直到用户成功登录之后才开始加载这些服务。

到这里,Windows系统的启动过程就算全部完成了。

Windows系统故障一般分为运行类故障和注册表故障。运行类故障指的是在正常启动完成后,在运行应用程序或控制软件过程中出现错误,无法完成用户要求的任务。

运行类故障主要有:内存不足故障、非法操作故障、电脑蓝屏故障、自动重启故障等。

注册表故障指的是注册表文件损坏或丢失,导致系统无法启动或应用程序无法正常运行的故障。注册表故障主要有:运行程序时弹出“找不到*.dll”信息故障,Windows应用程序出现“找不到服务器上的嵌入对象”或“找不到OLE控件”错误提示故障,单击某个文档时提示“找不到应用程序打开这种类型的文档”信息的故障,Windows资源管理器中存在没有图标的文件夹、文件或奇怪的图标故障,Windows系统显示“注册表损坏”故障等。