TA的每日心情 | 奋斗 21 分钟前 |
---|
签到天数: 2279 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览 7 c0 y/ D" ?% y" `8 e. |
5 h. @8 l; Y# A4 h( L5 e" s1 R从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: 9 l9 c+ f& T1 o" U8 x7 `+ ^2 X+ P
$ n |9 w4 c6 m
1. 预引导(Pre-Boot)阶段; . P8 X2 ]9 J. S) M$ K
* F, [; _ a$ J
2. 引导阶段; / V. `4 e G! \- B# w
]9 d- Q/ V y3. 加载内核阶段;
" ?. R9 M8 ]) C
" t- B" I) D' j$ d0 d8 V* K8 q4. 初始化内核阶段;
$ N9 z& @$ Q% X' t- F
: X' G& c% U( Z5. 登陆。
# \& j7 O, f, R/ _2 t1 G$ Y4 M& V I- E6 `; x
--------------------------------------------------------------------------------
( T5 _* f2 D. h( F! X$ K0 ?$ O" U8 q G
每个启动阶段的详细介绍
, {" [ o7 f- q! x7 E
9 u4 B8 F8 g( Q( {0 X" Za) 预引导阶段
3 X6 S) O6 _) l* i
+ T, |5 f; a' t X在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。 U. E( Q9 b4 |( ^
$ |1 U( K7 Z" Y8 _8 o" Q
b) 引导阶段 5 S& m# c. Y% W1 [8 p# h
/ H' c& {* Y8 nWindows XP Professional引导阶段包含4个小的阶段。 - Q8 H. U0 a! G, X0 S& q1 y ]
$ X7 _: s s) w. M
首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。
( R+ E: w D) D* c3 g( E/ f5 F* Z
接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。) . T& S! g4 ~5 y+ h. L; P' z% y& J
( Z' w# [8 `6 m) t0 a
在boot.ini中,主要包含以下内容: 0 `& `- X @) J
- J+ t5 Z; @9 T
[boot loader] + \+ T. a: b/ v* ?3 u+ B; o, G
% ]3 v: w* H( F" J7 S+ Otimeout=30 . p1 ]2 ?6 u2 Y8 S, B
- w9 X9 n9 ]% B* H) d" \3 F9 Jdefault=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS 5 R- _: o' @5 \: N4 j
3 R7 O/ \7 E! B2 ~0 |, n3 a
[operating systems] x9 [ @4 P: k! J7 h. g2 P/ Q
7 r/ J m8 W7 ^* m o: L
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
9 v4 L c! s, m- a& |6 x, ^6 C; y8 a3 @3 z4 z
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional" r" M; k1 q* i! V9 f
6 q+ w" l6 i, Y其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。
8 X2 {( j0 \/ b0 e5 j9 f
: v8 G4 \. x' p ^! @在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。
- F1 A c4 t* ^$ N4 x, d% t/ v3 q: I+ \9 r
硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。 0 b% `" o, h" o( y5 c3 o7 w9 o
# G# \6 M* M7 |+ Q$ r8 Y
引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。 6 m# n, H4 y' n) z ?4 D
( q' y) t( t$ u% }% z
c) 加载内核阶段 4 w% w# M4 Z7 f; p4 [/ F
v- e h- C* L8 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传递控制给内核,初始化内核阶段就开始了。
; r! \0 y) [2 G7 @4 l
3 t* Z) \: a3 @0 s; C3 ~d) 初始化内核阶段
0 B0 a. y6 n% Q# F9 r, O6 t2 j+ x1 U' j5 k4 Y+ ^% a$ F+ {
在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:
8 R0 E2 O9 w. f/ S: U# N" p/ B6 N& f1 x- M# B
? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。 / v# r7 l/ g& h5 ]. w0 x
% t# D, M- T) P6 ~5 z? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 5 v5 a; V/ H$ o3 n
6 n% u+ C- a- z% H. x( w
? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
! t8 s) d7 N4 H/ g! J9 |+ G7 x) ~; o
? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。 4 g: F$ j5 {" I0 B6 S' p
8 ]6 F* c- I4 j; \- k& R, F* Ge) 登陆 6 ~ b1 ?" e; I3 K9 \% S3 \
+ _' q# L. o) {1 I5 j+ G: N
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。 ( f! K9 z7 G5 ?" W& t8 I2 H# u# N7 f1 e
2 g! B9 e) h+ l* ?9 N
? 提示输入有效的用户名或密码。 - T7 G. d/ U& M B0 K; [
' N$ ]- Z* e% j1 I+ J% k: [4 ~. o? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。
1 ~# w3 \* o6 `/ W3 X7 @: A1 J: ?' F$ n7 V' e
只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。" y/ o& M" ?4 d
1 }! N. E1 E& c
|
|