admin管理员组

文章数量:1530518

2024年7月31日发(作者:)

Windows 2008/Vista Windows 2000/2003/XP 引导过程

引导过程

Windows 2008/Vista

1) BIOS中的代码选择引导设备(注:这在BIOS中

设置;有些新的BIOS可以在开机时按F9来人为干

1) BIOS中的代码选择引导设备,并读取MBR中的

预),例如某一个硬盘。然后去该硬盘的第一个扇代码

区读取MBR

2) MBR中的code会扫描分区表,找到带有Active2) MBR中的code会扫描分区表,找到带有Active

标志的那个分区(即活动分区) 标志的那个分区(即活动分区)

Windows 2000/2003/XP

3) 将活动分区的第一个扇区(也就是引导扇区)中3) 将活动分区的第一个扇区(也就是引导扇区)中

的代码读取到内存,并将控制权移交。 的代码读取到内存,并将控制权移交。

4) 引导扇区中的代码做:i) 读取Volume的结构和4) 引导扇区中的代码:i) 读取Volume的结构和格

格式,ii) 并从根目录读取Bootmgr

5) 如果找不到bootmgr,则显示出错信息

分区必须是NTFS)

6) Bootmgr运行在x86 real mode,也就是没有

physical-virtual内存的转换,都直接用物理内存寻

址。这时候只有最低位的1MB内存可以访问

7) Bootmgr的第一个动作就是将模式转换成保护模

式(protected mode)。等到最低16MB内存都能访问

了,Bootmgr就启用paging。带有paging enable

的保护模式,就是windows运行的常态。

8) 运行在保护模式下的bootmgr这时候仍然依靠

BIOS中的驱动程序来访问IDE硬盘和控制显示。与

引导扇区代码不同的是,此时bootmgr已经可以认

子目录了

式,ii) 并从根目录读取ntldr

5) 如果找不到ntldr,引导区是FAT时显示

NTFS时显示“NTLDR is missing”

6) 此时NTLDR运行在x86 实模式,此时仍没有物

理-虚拟内存地址的转译

“BOOTMGR is missing ” (注:Vista/2008的引导“BOOT: Couldn't find NTLDRP”,引导区是

7) NTLDR的第一个动作就是将模式转换成保护模

式(protected mode)。等到最低16MB内存都能访问

了,Bootmgr就启用分页机制(paging)

8) 此时,NTLDR仍然依靠BIOS中的驱动程序来访

问IDE硬盘和控制显示。与引导扇区代码不同的是,

此时NTLDR已经可以认子目录了

9) Bootmgr 清屏(这个时候你将看见一个黑色的屏9) NTLDR清屏(这个时候你将看见一个黑色的屏

幕)

10) 如果上次关机时选择的是Hybernating状态,

则将控制权移交给

11) Bootmgr读取BCD,如果其中只有唯一的项,

则跳过引导菜单。否则显示引导菜单。

12) 读BCD中的引导入口信息(boot entry point),

通常这是Windows目录。

(2008/Vista不同时支持DOS)

幕)

10) 如果系统卷根目录下存在一个有效的

文件,将此文件读入内存,并将控制权

交给一段能恢复休眠状态的代码。

11) 从根目录下读取,如果其中只有唯一的

引导项,则跳过引导菜单。否则显示引导菜单。

12) 中的选项告诉NTLDR,被选中的

Windows系统驻留在那个分区;

12.1) 如果指向一个MS-DOS系统,NTLDR

将文件内容读入内存,并切换回16位

实模式;中的代码继续进行MS-DOS

的引导过程。

13) NTLDR清除屏幕。并(Windows 2000)显示

“Starting Windows”进度条。进度条下显示“For

troubleshooting and advanced startup options for

13) 运行 并将控制权移交。

Windows, Press F8”。此时按下F8,可以进入一个

菜单,包括选择安全模式。

(Windows 2003/XP),显示带Windows Logo的启动

屏幕。

运行ntkrnl???

本文标签: 引导内存代码显示分区