TA的每日心情 | 奋斗 昨天 10:07 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览
7 y* u Q: t# i: ~) q, w) a p4 |& I- ~/ a: v6 ?
从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段:
, h- T" L4 f2 k& y
. R/ k) C* a1 P7 k4 u4 \1. 预引导(Pre-Boot)阶段;
1 J/ U& y( @- ` |5 Q8 r, ~5 W) x) U. G& y" S; |. V
2. 引导阶段;
& N$ E4 j n$ F: |+ |
+ U- \1 W S. ?" _6 D' }3. 加载内核阶段; ( X7 b5 n4 H+ G/ V% O# m+ Y& t
2 [) z8 f5 G' V
4. 初始化内核阶段; ) x5 D F, A2 a0 J
, h8 c- |9 } K
5. 登陆。 1 G5 F8 G, V+ H9 ]9 y
' L6 z- O. j5 u ~# d
-------------------------------------------------------------------------------- 0 e6 y& l, T; ]/ ?- d& v
9 x6 h, Z/ |/ ?' e* ^- u/ u* K
每个启动阶段的详细介绍 - C3 v2 u2 Y, \& U1 Q1 w! j
9 N" y, c: N" X3 J4 v3 N2 {) `a) 预引导阶段 c& P% P7 p* F8 ]! L) |
5 q W( f9 q1 o. D* i在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。 6 B# S+ k8 [4 N7 J
9 U! { e4 C( R- |+ W6 Xb) 引导阶段 7 ? B8 ^4 C3 q' P5 L+ @3 x
( W2 v3 V! k" [6 V' cWindows XP Professional引导阶段包含4个小的阶段。 , W6 _9 o- }- {
+ J) m: Z/ k- R+ ^) ?
首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。
. X2 V" h7 T: p* D( m
9 O; K6 F: c2 @+ m接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。) * c) V( V/ S" X; S
' z& _! P Z, o4 u6 ~6 l
在boot.ini中,主要包含以下内容:
+ P& V6 A1 c# P, H
/ d7 M" B0 z0 q[boot loader]
# S5 T2 |& x4 T3 ]3 a0 i) w5 Y
5 `9 Z2 {3 L) ^" z6 E$ `" \) Ztimeout=30
( L4 ?' `) N8 P- C2 z+ \: |3 J; `' \5 n! L6 }4 k
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS 9 D; G' L" w) {1 z) ~
& P3 i1 o1 t3 M! H. y0 Q6 K/ i
[operating systems] ( ^0 U- B8 D, H' |8 v3 d
! F9 v. F, ~( e( `: N. _
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect 8 C+ b4 u% T7 Y& ], R" C8 J/ p
, V% h3 f* x2 U. ^& E0 S# bmulti(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional"
( z! e, F( H1 C- _
9 }( C, S' Y$ ]3 r+ }( I e其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。 i6 ^. U, J4 G3 J
7 @0 z1 Y ^; [+ ]在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。
2 C$ `" T1 ^0 O# a; c( n' U. v: |( V4 x# C$ H- X) w! P
硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。 4 [" h: r; V" L( F3 ^8 y
" n2 f4 h& _0 c0 o" F! ?
引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。 ' S8 n4 _! V4 T0 q
* ]& c) v- P, W: L
c) 加载内核阶段 : M" \# S0 b: \5 p4 f% n4 e, U
+ R: _3 h2 h2 V1 ?8 n; \在加载内核阶段,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传递控制给内核,初始化内核阶段就开始了。 6 H" Q0 G& L$ {! v
; A4 Z7 K1 y7 o l O
d) 初始化内核阶段
+ ^. ~ d1 {. b$ A
& \8 E/ _1 D H" W8 x在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务: % P5 `4 d7 K# Z* C
$ }; @) I9 `7 i o) i8 O$ R8 `2 W( m? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。
+ R4 ?9 E, j- B8 D. N! l# z% ~& H: b2 n Q- e- B# y( z4 E3 V
? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 5 @* e5 c e" ^& d9 w# L
% e$ v6 P1 j! g! L: Y? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行 4 P) x/ X g; k; K8 g) b
( Z3 z. U5 W7 U( A2 @. z
? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。
7 c# t) ^% B" G, N/ Z" @% \& ]& @6 A+ j1 r2 q# G
e) 登陆 6 M8 c; j8 L# h
( o" D$ A- w- B# d# w6 x% r$ C
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。 : U9 {2 e) C5 s/ K
, f# s. ?8 D9 b+ [ N" ~
? 提示输入有效的用户名或密码。
0 s( i: \+ Z7 l& k) o5 ~3 h7 ?8 E+ q. ~
? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。 0 Y, o1 l4 O, z0 G' z
% g- B% e& L0 h0 j# m* T4 v9 S8 j只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。& }4 m3 J: y) c& ~* M" Q
( T( o/ J- \8 ^7 ~' n5 I5 e7 d |
|