TA的每日心情 | 奋斗 昨天 10:21 |
---|
签到天数: 2398 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览
7 d8 \0 N; \* p$ ^: K& t; B3 C( m9 W# e
从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: % N# _) l( c! z( D6 p
2 |9 Q: E* }# _
1. 预引导(Pre-Boot)阶段; 4 B! D# ^* F% k6 n. q1 I
) ^7 R4 I. H9 `' p2. 引导阶段;
0 h) k+ O- |9 E% O0 ^* B2 K; u
* j, J, D8 Q+ V% J) l3. 加载内核阶段; 9 S3 @" i# Y4 Y# T% I7 p0 C
5 \( a+ @4 h5 l4 |
4. 初始化内核阶段;
) W6 E1 a1 V+ W9 @4 T# O u: O1 P a/ g `# w( P v* i K D2 U
5. 登陆。
) ]+ a8 ?# S' M4 \6 x1 Q) A- w5 e3 m7 w: S5 `4 G0 F5 U
-------------------------------------------------------------------------------- 6 ~( Z; C6 C% @
; t2 P% W7 d5 d$ y+ p3 W0 Z/ m
每个启动阶段的详细介绍 8 d6 h6 T) z0 W8 t. m% a
) l! J$ K& N* _
a) 预引导阶段 ' @6 ~" C4 n& g
. B" g7 e: X: s# A3 |
在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。 ; w S7 T C$ i9 t/ x6 @
+ Y0 x3 f3 \6 S- _/ u% r, ^
b) 引导阶段
. j7 H- D4 }( I( t$ M" p0 j# m, J2 d2 w8 I/ W8 N1 b
Windows XP Professional引导阶段包含4个小的阶段。 % _+ y+ ?5 U! N9 q2 S" }$ A
" w, z L1 Q" T' U9 ?首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。 4 ?& ~" I' v" j: `& ]
; C0 O- I' H$ _0 H: e( r
接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。) + e" u6 l; I5 |% d9 P
1 A0 A' F' Q% s @6 \% D
在boot.ini中,主要包含以下内容:
+ t( r) C/ s6 n: q* x" T, `: A
+ P4 m$ g' y8 A/ F8 K[boot loader]
8 f. C) B. ]+ j& A$ V" |9 J$ [
timeout=30
) a! t T7 a) u+ C* G4 c, n/ p1 H, b- T! x$ F
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS / j# X/ X5 S# E
. u% y% N- x! [ c
[operating systems] & f* f9 i$ E0 p' H! v1 Q; [1 A1 k
0 T6 q2 b. {6 n5 z0 Y+ h& z' N
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
# n7 i! ~! T/ S; N- H8 E
% D- @2 U T% Qmulti(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional"
2 Y. b1 j0 `3 i$ T% B) h5 m! t: ]7 r; k8 @
其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。 {7 z& U; P# u( `+ H9 E/ e
E( M# v/ o' R* V. d在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。
: m# ]- x% [1 b6 s- Q3 S0 F$ d% X+ J
硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。
0 }5 U& j6 q- T9 Q# `% i. s) x( V5 Q
. k# ? Q& j2 H' k引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。
4 h5 v% }: x, `; _& c* c. Q& ^: p+ p8 |; k1 {
c) 加载内核阶段
1 B" A* X( v( N; v9 @- s$ B# D- R* I1 B j4 s' p2 q
在加载内核阶段,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传递控制给内核,初始化内核阶段就开始了。
# z+ ?0 G% g% _) g7 T8 @
3 U6 L% E2 c0 S7 Z5 _d) 初始化内核阶段 ) z$ X: {0 W8 Y' C2 e, i& @# p
* g9 c5 V/ a2 F; }
在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:
9 i4 r+ n$ Y3 m2 i* R' _' O% |7 p8 c4 I* \& G1 j& |
? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。
3 ^ ]+ k. X, Q$ }: ]3 U# c( C: m+ r0 \
? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 . @/ x% P) ~- w% I: O' v
; b2 \# L8 R9 e, q. ^
? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行 7 S% U/ J* M5 v/ o
5 V; |! W1 m, B2 e' ^% Y/ P
? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。
. e7 B/ J# g: G
+ y& |) U; t" z9 ze) 登陆
) F( w+ d: B* B3 O/ I5 Y/ _' U w7 ~
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。
. p. \; F0 a* l, [/ I" Z) [% f, Z8 @7 c" H% [3 J2 y
? 提示输入有效的用户名或密码。
# G, [ u; I$ ?3 w& D- y8 r# B' [6 a! \# b
? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。
3 @( n4 v5 L- X7 @- f+ F& p
; ]1 @2 f+ j: ?& X8 K, h只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。, r/ T; w |: q% K3 s' {
! ?: x% y% Q( y+ c1 b |
|