TA的每日心情 | 奋斗 前天 10:07 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览 - N' f* K, Q! A" B) j; _0 c
) r n7 a K9 l! X4 ^0 O& j+ a
从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: 6 f) R: H1 [" d" w9 T# V
6 n, P% w" ~& k: q2 D. Y, R6 j1. 预引导(Pre-Boot)阶段;
: e& w! b+ U+ }: @# D& X' A: h# z2 R3 ~4 m
2. 引导阶段;
5 P% n7 {! V( D2 G8 E
1 v/ C$ V# i- C/ L& _( W& \, R8 e3. 加载内核阶段; 9 K. E4 r( O3 ^
- k) \+ y U6 p* L
4. 初始化内核阶段;
/ C$ M; ~. @$ i$ _1 X( K; k+ x8 W/ I
5. 登陆。
- P: I+ I9 [/ [6 Q" f( h
$ I5 x- q) r1 T ~$ F-------------------------------------------------------------------------------- 4 ?# I0 A' R9 T7 e6 b
( D$ Y4 R2 ]! A' Q5 |& ]
每个启动阶段的详细介绍
1 _. P3 s5 F4 B& C7 t: i! B6 F7 J0 x" ^/ ^7 Q
a) 预引导阶段 1 Z" q4 \9 i. }. O
" ~, K& V% v) F. \* h在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。
: q L: d4 j8 p3 e" o0 o& k5 i6 G! f4 V/ i& H
b) 引导阶段 ! [/ O. y ]- f% M" y, L _. S
* t) f4 ]/ _- Z1 A. mWindows XP Professional引导阶段包含4个小的阶段。
0 f* y/ F, ]2 |7 x* u' `- a7 B' w* Q: b: d8 B/ C; A! X& k
首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。 , I2 v$ g& B! J; A& b. G' v! q C
7 c1 a' e8 @1 T/ M6 g
接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。)
' K& Q1 u/ v; {# y o
; d2 Z7 F0 T+ P在boot.ini中,主要包含以下内容:
. [% j7 T- V( `% t/ Y( V; R) j6 n" C
[boot loader]
0 U8 W, M; u: G6 F% l7 q0 a& T: O) q% T3 G/ ^! b' D* t& Z7 T3 W
timeout=30
1 Y& a J; z9 o' ?2 s6 \( k
3 { f$ V/ o) \9 R) @: Wdefault=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS ; E c8 M4 u6 w7 ^$ y$ r
: U$ p3 V. i5 w5 x, b# r[operating systems] % \4 t& `' n6 i
; S; a4 D0 \6 Nmulti(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect $ x3 _4 L4 P% D% s- b) q" h
6 Q3 B- h! h3 ?5 @! A
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional" * `) a2 V6 e3 n/ n# o; E
3 r3 y c0 r9 I, w8 K) w$ q* w5 o7 ?. X其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。 , l+ `6 f, S$ ?3 b# j
3 B! ^% S. C: [8 [6 Q5 X
在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。 - j# P% @. H( t% P* N; @
+ G# N& M! m& f7 z) S硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。
4 V/ W/ H) @& k% Q3 t7 Q$ }' G( Z' o* h- a N' v* [) r
引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。
, ~% a% U$ j$ n
" }, O: b1 z6 |6 f- B: X1 d1 }c) 加载内核阶段
, e* R8 ~; q6 L: L5 H/ g6 A3 J% i+ W: F$ q% P
在加载内核阶段,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传递控制给内核,初始化内核阶段就开始了。 / U( m ~ U: J& U- U4 E
4 x. B$ O3 |3 r' M6 ?
d) 初始化内核阶段 ; I: |8 |; ^1 h+ ]* C3 N
1 Z8 _" Z5 z8 U1 Z& M在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务: - s* s) B2 Q" M0 }
2 R' }2 R2 H" w? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。 - A( Q* f! l2 d$ U% G6 V$ F
6 _6 D# _3 U# Y: D: I4 Q
? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 8 ^, N: ?* X5 m! o" I
+ {* D7 t# J6 k* ^% ^4 d9 T
? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行 5 L2 r' g* U9 m+ P
8 P1 D# w6 K7 r) y( a% ~" q! j5 [. W+ x? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。 1 Z9 {( m& `! Y8 u5 U2 X; c
[. Q0 G; b% `6 n' f( q% N
e) 登陆
% v. u4 H {; e& n8 D
0 h& P- e% o; n2 P? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。 & g0 i$ I, B, S# @1 K
* _' L# N# ?1 Q, O& u7 g
? 提示输入有效的用户名或密码。 9 ?& d% Y) g0 ]$ `/ g
" y* a/ p+ [2 ]7 h9 e& u4 n? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。 " h9 P4 L3 D) Z4 k, j- a
# b) g, h+ a0 B* Q5 q6 l, N只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。
! K2 V; ~: O+ u \; M0 }6 n7 E9 i
1 m! s3 }3 E; W5 u& q9 T5 L |
|