理解 Windows 启动过程有助于技术人员排除启动问题。图 1 显示 Windows 7 的启动顺序。

Windows 启动过程

要开始启动过程,先打开计算机电源。这称为冷启动。当计算机加电时,它将执行开机自检 (POST)。由于视频适配器尚未初始化,因此这时在启动过程中发生的错误会通过一串声音来报告,这些声音称为蜂鸣代码。

POST 后,BIOS 将查找并读取存储在 CMOS 存储器中的配置设置。启动设备优先级(如图 2 所示)是为了查找操作系统而检查设备的顺序。启动设备优先级在 BIOS 中设置,并且可按任何顺序排列。BIOS 使用包含操作系统的第一个驱动器启动计算机。

硬盘驱动器、网络驱动器、U 盘,甚至 CompactFlash 或安全数字 (SD) 卡之类的可移动媒体都可在启动顺序中使用,具体取决于主板的能力。某些 BIOS 还有一个启动设备优先级菜单。在计算机启动时,但在启动顺序开始之前,通过按下特殊的组合键即可访问此菜单。此菜单可用于选择要启动的设备,如果多个驱动器可启动计算机,这将非常有用。

Windows 7 和 Windows Vista 中的 Windows 启动加载器和 Windows 启动管理器

找到存储操作系统的驱动器后,BIOS 将查找主引导记录 (MBR)。此时,Windows 启动管理器 (BOOTMGR) 控制多个安装步骤。例如,如果磁盘上存在多个操作系统,BOOTMGR 会让用户选择要使用哪个操作系统。如果只有一个操作系统,或用户未在超时前做出选择,则系统运行过程如下:

1. WinLoad 使用 BOOTMGR 中指定的路径查找引导分区。

2. WinLoad 加载两个构成 Windows 7 核心的文件:NTOSKRNL.EXE 和 HAL.DLL。

3. WinLoad 读取注册表文件、选择硬件配置文件,并加载设备驱动程序。

注意:如果磁盘上的另一个操作系统版本为 Windows Vista 或更高版本,BOOTMGR 重复此过程。如果磁盘上的另一个操作系统版本是 Windows XP 或更早版本,BOOTMGR 将调用 Windows XP 启动加载器 (NTLDR)。

Windows XP 中的 NTLDR 和 Windows 启动菜单

如果包含操作系统的驱动器位于运行 Windows XP 的计算机上,BIOS 将查找 MBR。MBR 找到操作系统启动加载器 NTLDR。此时,NTLDR 控制多个安装步骤。例如,如果磁盘上存在多个操作系统,BOOT.INI 会让用户选择要使用哪个操作系统。如果只有一个操作系统,或用户未在超时前做出选择,则系统运行过程如下:

1. NTLDR 运行 NTDETECT.COM 获取有关已安装硬件的信息。

2. NTLDR 使用 BOOT.INI 中指定的路径查找引导分区。

3. NTLDR 加载两个构成 XP 核心的文件:NTOSKRNL.EXE 和 HAL.DLL。

4. NTLDR 读取注册表文件、选择硬件配置文件,并加载设备驱动程序。

NT 内核

此时,NT 内核将接管。NT 内核是所有 Windows 操作系统的心脏。此文件的名称为 NTOSKRNL.EXE。它启动名为 WINLOGON.EXE 的登录文件,并显示“欢迎使用 Windows”屏幕。