TA的每日心情 | 奋斗 前天 11:21 |
---|
签到天数: 2393 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览 + m3 y- N, C. [- h4 u
/ g- p/ d5 y5 y从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: - o3 K& T. i5 C; k3 _- C% c- P
6 Q+ t! L) [6 K6 a* e1. 预引导(Pre-Boot)阶段;
" u" V" x: v: k4 H0 X4 U7 }0 @' I$ A; |
2. 引导阶段;
+ T3 l0 j9 W& g5 b: |
4 h \+ E% T( P ?3. 加载内核阶段; ; `+ X$ ~- A' F( M( r5 e( Z7 b
1 b c3 I7 _! b: F7 |4. 初始化内核阶段; ; }8 G+ x* ^( s* i2 k. y
9 U8 ?* I+ B8 v- m5. 登陆。 , J9 R+ @5 t# u( c; t* J* O4 E
: W/ U" t# m! U# g# [7 }! a
-------------------------------------------------------------------------------- 2 F' c/ N9 u, G G. G7 v- E
8 I5 I$ x, e$ Y- m4 w. p/ n# R4 Y& g
每个启动阶段的详细介绍 & B$ T) Q. o! k1 q" t# j. W7 |
+ @) Z* s5 O; d) U! w- `: s' c$ n( A9 ~
a) 预引导阶段 - ^; Z; m" f1 y
. Z i' \$ m* |; R2 s
在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。 : E) V% k+ }2 _9 }9 d" k
1 W! Q, ^+ M, n
b) 引导阶段
0 w! s8 o; {8 D9 z
% K# g: Z2 @- G8 |Windows XP Professional引导阶段包含4个小的阶段。
5 }" T; Y7 \: H2 [7 U- @: H/ ~% M5 q2 }0 i8 C" I
首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。
. I( j5 Z. L) h
* ^6 \) D% X$ B. h接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。)
( a1 \5 |) g+ P2 k9 C. q6 q8 l
* _- ?4 w2 b. @在boot.ini中,主要包含以下内容: - P6 K: ?3 C1 Z# D
* o* s$ g1 @9 ?6 r" e[boot loader] 5 Q& E. ~! t2 _ ^6 u: \% s
: X7 t' Y5 G6 A& g, {( g: itimeout=30
! Z- K3 t/ V S; n
. K8 L) M9 A `5 u+ G4 a1 W" `default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
% U+ A! [& S1 @* k$ F9 b
' m5 T8 y1 w/ G[operating systems] 0 S+ b. {+ W Y
9 M z1 F$ B* j
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
5 M6 W1 R2 ~, Q. p/ j$ h8 u K) @9 b; R
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional"
' {* G8 V6 i8 k' G+ ^) e7 o8 P3 y
. d; P' z5 r' E2 O2 h) ?1 c1 R其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。
" q! r4 a s2 _* j) x! U) R: R, b
9 X/ D: d9 d, y* u: k在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。 + d3 ], B- {( N# F8 |# O. o
% D! H9 U: a w8 K, l硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。 3 p6 R5 T/ c- q* q: w) y
/ D" w1 J- Q# J% g, l引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。
" |$ {' d" }0 y
& ^6 H/ n4 G/ A+ U4 dc) 加载内核阶段
A8 B) f' y; {1 G5 R G2 Q& z- F: U1 }+ {
在加载内核阶段,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传递控制给内核,初始化内核阶段就开始了。
! T, a9 _/ z; b' _# {: b6 J
+ K7 Q. R# A0 [% l% o8 ~. nd) 初始化内核阶段
' X7 h6 E: c0 S$ [% m" g$ g8 M- A8 N5 J5 X/ ?/ X
在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务: ( G- B7 L$ `, ?- R. O1 P
. n( t* E' a% e5 X, p
? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。
" ^: R4 q2 S5 H
- l# X. L) T% `# O* W0 o; S? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 h/ |5 v* [. G* [0 P+ V# W- Q! B
: e$ `* Z6 V5 U# ~4 H- J/ d
? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
* S& t/ p1 F0 @3 C _+ u8 q. _9 r5 x" Z' l6 G
? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。 4 n/ P3 v8 k4 z9 y8 B, `
6 b1 [8 F- [1 @/ ye) 登陆 . l: F2 \, P9 [% \- n; ]+ i
, ?1 `4 k1 D9 D8 g, T? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。 0 R- E" q7 _" P& ?5 }1 [
5 ^1 i5 ^9 L" }6 O& N# Q? 提示输入有效的用户名或密码。 * T9 j9 s- \+ J! C
7 [# C. o# a$ H) Z
? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。
- m7 E1 v. B4 o" y. y$ X& \) _, e+ }, P
只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。( m( w$ s: b& O: z
! D2 X# P, ^) s8 _" A3 j& i+ h B& B |
|