TA的每日心情 | 擦汗 7 天前 |
---|
签到天数: 2402 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览 % I' V" m& P# I! j; e
5 z8 I7 b. P/ C. e; a从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段:
' L: O }4 g4 M- s6 o6 i$ ~/ a: U1 b! T
. N, a4 u \% G! t1 V" ]5 H1. 预引导(Pre-Boot)阶段; ) Y" S7 B0 Z. ]6 f" S
W/ _! t% A5 b3 J$ r/ `) G
2. 引导阶段;
. X& ]6 S) x7 G7 e- e; G
: J, W+ R1 h# R# k: \3. 加载内核阶段;
0 }, `: Z0 N# R; V% v% d2 B0 N; ]7 {; ?
4. 初始化内核阶段; 7 [0 F6 _7 E* v" q
! ~' Q9 Z# D) P$ s; z; C
5. 登陆。 6 g) C+ \( H i: s6 a" X
# J9 w7 ?9 Q4 |-------------------------------------------------------------------------------- 2 j. _. I7 e% r; O
) f- r- R7 j% k8 {每个启动阶段的详细介绍
/ F$ w' r; b8 }. _4 y7 }5 {3 }) A$ ?1 o7 q. k2 q( A+ E
a) 预引导阶段 3 C- [: `) D* m2 J( n
( O: W6 W" S% I* T- _% W
在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。
# S/ J+ R! `( r6 {
' Q! F1 L# [ w7 `b) 引导阶段
; V# U z' [4 e3 P7 H0 s. _; w1 I6 B6 Z7 m3 i/ Q0 f$ P
Windows XP Professional引导阶段包含4个小的阶段。
' D" r* R; y; [+ V
Y: w: k( o: ~" N首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。 . B" o7 L6 T. D5 S
- L, z" h2 T8 A接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。)
1 y1 |- \8 |( V9 ?3 v8 o4 M8 W
2 o- _5 s# Z* [* j( D! u/ R在boot.ini中,主要包含以下内容:
* v5 d+ v0 H4 @6 Y
* [5 V0 M. x4 {# g; s/ q[boot loader]
2 v: D) ^, u! V! E8 |! @/ w8 w" e B5 L8 n9 }- b0 s! X9 c
timeout=30
( J. {# Q6 l# g6 D* O. `- ~* l' A/ z. E F
8 ?* |0 c. [7 p y7 j+ k% Odefault=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
( x' [1 r1 {( D% e4 W, e7 C9 K; |: m6 o" M7 i
[operating systems] 2 Z5 E% n9 A2 u6 T* e/ R: d
/ Z; Y; c! b7 d' B% Wmulti(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect & l) _, V- ^& t/ X5 y+ ~- i4 b
/ M" s$ p" N8 d/ H0 tmulti(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional" # c) y9 E( w. \6 J# F% o& M
+ f! A3 z' T3 e4 u1 V3 z* P$ i
其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。
, n! h* X1 r8 _1 \$ F) A; I
. d3 [5 f, p1 }! L+ L. Q% J; A在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。
5 M, M+ t2 @. {& C" E- z- G$ d1 {
$ V: ]3 K% w+ i1 a: T硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。 2 s; q9 G' V. N0 i- ~- h* O
& z& a+ H8 J" k: x, L% ]引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。
0 w0 u& x V. V4 r
8 k+ F" a& J1 U" [. j' T0 vc) 加载内核阶段
$ X+ z, G) X8 S( k+ u: \
9 d ^% L Q! m' U. ]2 `在加载内核阶段,ntldr加载称为Windows XP内核的ntokrnl.exe。系统加载了Windows XP内核但是没有将它初始化。接着ntldr加载硬件抽象层(HAL,hal.dll),然后,系统继续加载HKEY_LOCAL_MACHINE\system键,NTLDR读取select键来决定哪一个Control Set将被加载。控制集中包含设备的驱动程序以及需要加载的服务。NTLDR加载HKEY_LOCAL_MACHINE\system\service\...下start键值为0的最底层设备驱动。当作为Control Set的镜像的Current Control Set被加载时,ntldr传递控制给内核,初始化内核阶段就开始了。
* M! ?5 i s x. w$ Z! t3 }) L Q$ A# t
d) 初始化内核阶段
/ p* R- E3 R7 n1 J
3 h O% t; N$ d* K: x4 G! {8 w: }在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务: # P! G8 q( \7 F' I( n- O5 }% J
: R2 ^4 i- Q& q' p' j E- C* b; N
? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。
4 S- R, ?; p% r" r+ G$ L6 ~! \3 r4 x! `3 W1 N/ k0 V
? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。
( L- o' [2 z6 Q8 j+ C6 E4 e) w+ w8 G5 y2 J
? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行 Q+ q `' B* T9 v
) y. L" W h5 H5 q1 L* h* l) g? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。 + e) D U6 d! J
. [ |2 j2 A8 M8 [8 }. r
e) 登陆
6 [# b( `( y4 i+ }5 w4 a }7 v9 ]
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。 ' f$ f1 ^" O; B. n4 e
# _! h# p# [8 y9 `6 Q4 m |
? 提示输入有效的用户名或密码。
, p! t& V$ Q a: W% h0 X: a4 l
# N) H9 E3 b/ I P: \& G3 ^? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。
/ s' y2 w% B% R& j! O: W8 ^) c
4 J6 k+ t5 X1 y* k0 Y, n只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。
P8 S, T' A5 W0 b: ], f; j$ `7 g9 i5 A( v: M2 B9 i* u" u
|
|