TA的每日心情 | 奋斗 昨天 10:07 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览
1 i& I% a: _+ t& a/ f( O- Y; |; \3 X; o5 b
从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: ' D* G/ L) H4 M* K1 f( \( e4 {
# c* P+ e1 K' l. N1. 预引导(Pre-Boot)阶段; 9 Y% u0 m: M% T! n( t
. e2 f" ]* y8 Y6 J
2. 引导阶段; 1 `+ V# m* H3 A- q5 Q( v8 S
( v! p- C! Q1 @9 W3 Y! e1 Z
3. 加载内核阶段; ( d9 a, Y1 D) ~" Z2 i* P( j5 s/ s
/ k ^! j1 \! t6 {4. 初始化内核阶段; - r' x& S4 N9 F! z' C
8 o. h" C" I1 T5. 登陆。
/ I# ?& Q* N$ \& U8 f5 B/ b
4 V3 j. e1 h. Z$ y. f3 ^* M, C' x--------------------------------------------------------------------------------
* M4 ^5 D* o+ q7 i5 M! k3 F& |0 A% A
每个启动阶段的详细介绍 6 Q: G+ P1 q1 P2 h4 A; p" i2 ?% z0 J
! F9 _( O( _, T4 ^( m. Ja) 预引导阶段
& l! G6 e3 I4 h3 `; w0 p
% r2 F5 ] A5 {6 @ ^6 @8 ^在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。
3 X: W+ t$ G* U2 f# D+ |9 f( \* \- J# J! ?2 I! q$ v) S
b) 引导阶段 / U0 g" }7 \4 d( _* N
: O7 ?" @; o3 mWindows XP Professional引导阶段包含4个小的阶段。
' I+ f) c9 c" _* n8 o. O
+ G. k& e2 \8 z2 \6 G首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。 ) N$ x, w! y7 T2 S( D3 n
G2 V% q; p U接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。) . K/ `/ Q) A4 y& m
' F+ s, o) N" E- h1 F' ?在boot.ini中,主要包含以下内容:
2 w+ Y$ G7 Y" F" r6 i" i& ^+ p* M, T7 Z- @- u1 W) u! a3 ?
[boot loader] . r1 s2 W8 X b) S+ t- _' y
k- t+ a# ~ X" ]
timeout=30
( P( Z( e, R$ u' _4 ~! |- T7 e0 H* k: Y) v5 H7 H
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS ( I1 {- p( [! c! U1 m
& R( g* ~$ v3 l4 ~# f0 O* q7 ^
[operating systems] : a1 y$ G3 F& H. w
h/ P, u& ^7 v( E' V" b
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect 5 X: D4 _* z! I3 X# T, O- k3 d
- ]- s, W8 |, J( Ymulti(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional"
$ J2 V3 e6 Z: `+ ]7 b
3 D4 Y2 D' e R4 K9 ]: x其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。
! Z D5 r9 H* [& l/ L- a4 j5 r. E2 C6 n0 u/ N6 U
在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。 4 h, E1 M5 X# _; u9 x
0 x% ^# ] S# Z0 e5 ~' b4 L& b
硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。 3 e ?7 x( B' t" w& n& p' u
( i4 f% W$ Y: Y p% C
引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。 ( F4 u* a- g$ X, v" v6 p
, c! n+ t" V2 A
c) 加载内核阶段 2 R' `# H+ q8 I' M% @
a4 ^. K, R6 b9 Y a1 J* z在加载内核阶段,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传递控制给内核,初始化内核阶段就开始了。 ; J" e2 Q1 u. o2 [
9 S x6 `" H, J. C
d) 初始化内核阶段
6 F3 B+ K6 K# S" K' N7 P2 k' I) ]$ y. |9 {8 V) W% H' Q
在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务: ! W+ R; c; N9 @7 G1 X2 {
. {4 g0 U1 r& J3 S? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。
" ^5 F$ a0 A+ e/ M
& f: g/ }4 n w) @5 U? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 7 Z |* Q8 }3 z; ]# ^
, b) O( v* N% t/ ^5 O0 @% V2 Z
? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
! _3 ]; v6 `- c9 N: R; \ K) J+ A3 x
? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。
* {& c* E7 t/ V& T, B5 D# G2 O* q% \. |6 W5 C8 M
e) 登陆 ) ? G. U8 g7 y- k
7 t# H) A6 D* ?. w+ O5 V% A
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。
# l2 @: r* P, Y7 N3 F. G
+ X9 P6 M8 G/ v% n& o? 提示输入有效的用户名或密码。
/ D! e8 W$ `9 X. x2 q) b- Q/ I8 a
! i4 j5 g% S5 J? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。 ( C$ v+ L. ]- s! q# q m
3 n& t* n" p8 a' C! J只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。% r. Q3 W& u$ H
& v: S6 @: q0 a9 v8 q2 k. }1 F |
|