TA的每日心情 | 奋斗 3 天前 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览 / X3 X$ x7 Y$ }' W- A+ S6 `
* x0 C7 _, E4 @+ g从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: 6 [9 p7 F. v5 c( y! g4 E
9 ], R% i/ g8 r ]2 n
1. 预引导(Pre-Boot)阶段;
) u5 Q4 A" U7 H! i- |
9 o5 r3 W4 M5 f: W& C2. 引导阶段;
) H5 h! C6 ? G8 I4 t! Z$ k f
0 W' q- u6 T, P, J3 E3. 加载内核阶段; , o6 j. S V/ t* _
/ U7 ~" ^1 @7 ~- {$ G- T3 K/ M* @4. 初始化内核阶段;
' {$ E, H1 D4 S8 Y5 b. w
' b# e$ ]* ?4 C5 \* d5. 登陆。 . d% |& J4 r$ p8 \7 \! D9 ~
# l# K1 d: q. t6 o+ i2 l--------------------------------------------------------------------------------
7 J0 X1 Q/ k/ f* K0 \3 `
" g* ` O7 A. \3 [& l; U每个启动阶段的详细介绍
% M: k& T5 P; r; Y% J+ i( M! ?! `! T, k& l" \
a) 预引导阶段
: m7 C) n: s9 D6 E9 U) o2 I! m! f" Z2 L6 J" v
在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。
8 s, N; ]3 j3 a3 ?
: s: N9 S, T+ x* ^& o( H6 u* r# X mb) 引导阶段
9 j( J- [( D# ^" ^ U3 m+ h
" i' k" X8 p/ U" NWindows XP Professional引导阶段包含4个小的阶段。
$ R3 g) P8 v) ~1 U' J
+ Z; n3 I0 B" ~6 O0 F! P8 t首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。 % o2 \. l% c2 M' e! R G
. B$ W* I0 z4 C' }% w8 q0 L$ x9 {( ^接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。) & x7 Q; S3 k0 i; ?+ x- N
% Y- y9 {7 F$ b9 s; t t3 g5 ?在boot.ini中,主要包含以下内容:
8 j6 H( }- X5 t- @/ H5 D
5 \9 k' q- t' q! ^# k: R& m[boot loader]
& d( }8 f- H2 e3 s" H7 p+ B% o' B0 D9 ^# {: L1 c0 Q- P, A2 m; H+ ?
timeout=30 . T2 Y& F- m' e+ b1 C( m
) m- b, w3 _! z4 p* \) m6 ?- }default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
& k" p; E! Y( b3 @2 w- Q0 v- l4 H
0 n; d5 D. l( F2 r[operating systems] " b8 M4 N0 P4 m2 d$ G
% b) f; o6 P( o% v2 d4 }3 z+ x
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect ; Y3 X( d: K) S: \
) o% x" b- H& \9 Q$ q$ hmulti(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional"
7 F( F$ q9 V( \( }$ `9 `! f
8 {; [/ ` L. l9 x: F- Z$ z* z" u其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。
# D" x' \3 Z0 r! v4 Z8 A+ F* C% U
5 ~& M' b3 m- |3 D! W- {在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。 " u; s9 T/ l) x) y$ m2 v
. x& G }. B$ @; S% C/ W硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。 / R* }' A" s4 p k& j
% d1 r$ d! t6 c" }3 Q7 P7 P c% e" s引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。
( b" }. x# s2 B. {$ M) W# C$ p: H8 Q$ C7 W/ g0 F
c) 加载内核阶段
0 }- B0 B) ? z* b
2 R, i! L: h7 F' _4 h& B+ r$ G# E在加载内核阶段,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传递控制给内核,初始化内核阶段就开始了。 4 Z: N) {. C. c3 ]; Q% ^# |
$ W C6 v8 f4 K, {6 v; G( [
d) 初始化内核阶段
( q7 i4 Z: T! K5 q, T3 I
0 K8 w |, n9 H, h/ K- p在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务: & k- q* h9 |- y k7 c, F
7 Q J8 j4 V& w2 l
? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。
2 x8 d* l+ o- q
! X. {" c" _- r; M; ?? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。
# ^6 n( q; Z( e/ u
( g" k" J* i) Z, I; U6 [* q4 q. ^? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行 6 ^ t# b2 U8 T( I) b& i% c7 u
& l* v; `, p% X( M( P2 C? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。
) Q$ R7 P1 h" x3 ^" m
$ ]# J' R/ K4 X7 c9 y; D% X9 Me) 登陆 5 u+ D0 J7 P$ e( n+ S8 f
, G3 J `" L# |+ t/ f? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。
& M/ p2 @4 ^/ a R6 K) a1 v) M1 W0 Z
? 提示输入有效的用户名或密码。
- P8 i) h* [" N( h0 `; G& V
1 ?! z& N# e5 m( B) a( w? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。
4 E# Q# p+ q1 m) S0 t @) K# w% g
只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。0 p8 h; q/ E, C6 f7 f F, T1 `- \
2 [' B: {; f5 {; s+ ~ |
|