TA的每日心情 | 奋斗 昨天 10:07 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览
0 A: m7 Q. F6 N- X# _ I @+ a9 W" R* \9 L3 T. C/ i0 N
从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段:
9 y I: C8 p0 r# d- \$ K3 G0 X' ?" X* P& V$ ~2 @
1. 预引导(Pre-Boot)阶段; ; T8 t$ [6 n( I& `
: G ]% e/ s9 F* x& O2. 引导阶段; 2 D+ K8 w( X( G" }
; Q' ]; ~9 z; ^4 o; Q& n
3. 加载内核阶段;
2 W9 ~0 D2 m4 P. ~4 Y/ A7 Z8 P3 n0 O8 k5 t, ^4 ?" Z; V
4. 初始化内核阶段; 4 G( ?* X/ s% g( Z- y4 x
: f+ W7 C5 s2 Q
5. 登陆。 ; P7 ~, Z' v# [* I
6 D8 I/ |9 S. Q. u
--------------------------------------------------------------------------------
+ A5 n0 t, d# X1 r; K, U" J- r8 @ u
每个启动阶段的详细介绍 1 Y6 n5 E. E* f2 V6 J
( r9 F6 H; _& u8 `
a) 预引导阶段
* l) w( R) I; ^* {: T- T( l/ D. g! m! Z: Q- ]* g6 P' V+ c9 y
在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。
s9 L0 m+ i" |, ?. p# b8 c; q5 L% ?% b: \9 M0 |
b) 引导阶段 / O% |, @" Z: [. G
- y" v$ n, j6 jWindows XP Professional引导阶段包含4个小的阶段。 K( B* g( _% F
& x2 m7 j2 ]7 {- ?首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。
. l7 [; F1 t7 v: g/ O$ X
. H; s6 D0 S- {; w# P接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。)
& _( D U5 _+ g& K& w# K+ Q1 e" S) h ?# p
在boot.ini中,主要包含以下内容: , [9 z$ Z/ \4 S
% h9 |$ ~- `0 b; j5 x! F2 m/ S
[boot loader] 9 u4 i! |0 m. L M C2 Z
' i. C y7 d, X9 b O" ytimeout=30
7 t0 {8 A; _. N q: e3 E% Q, `
7 w( W* N+ N# n- \8 X5 _default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
2 ?8 `) i- K( W! F/ d+ _
- `, w# o1 p4 h1 f. R) j[operating systems] $ F* l: q y/ H) D" @9 r: y
/ [7 q" {( l, {+ W) n4 H$ @& h b& [ \
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect 7 i+ S& a: C& g- Q+ V% B( [1 l
4 M+ P* e1 A- t% S0 ymulti(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional"
+ T6 K4 N; E7 u; @3 S* m5 F |. q5 B+ _
其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。 / J# Z1 g/ T3 f8 K' u7 E& u/ ^7 u
3 S/ R+ t. A( }9 A
在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。 1 W2 ]+ [& |9 x: S
; k& \; g) U! n/ [9 l% b硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。 3 h( x2 l% N* ?) M6 Q$ r }9 [
/ ^0 [7 G3 e' l: a2 p引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。
5 e' S" E. s) c/ Q9 C' q( X: l. q" V( x6 R* y1 B
c) 加载内核阶段
3 {4 Y+ D; C9 S3 T+ U5 q
$ v* y8 i) j; e& m' R1 ~" k在加载内核阶段,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传递控制给内核,初始化内核阶段就开始了。 4 T$ j) u5 y* n+ ~
2 j8 A8 j+ g2 X7 G9 ]d) 初始化内核阶段 ' `. S3 Q) g2 x
* }2 w/ v- ~9 m1 ~- K在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务: ' p8 J" b4 t" J v
. O- X& r1 T; i
? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。 6 b' \5 y5 l4 h6 g( B
. S9 r1 {- g% y. t: W Y/ A
? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。
# M d8 c( [' _% c6 |: Y, @5 L4 G) v6 m3 I
? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
8 n% p3 R' E4 B$ @7 D, S
. y; I1 q7 d y z2 P! x? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。
1 J9 i) t/ r& B. ?& A9 c
/ ~7 [3 U- d& s2 ~& q- ~9 oe) 登陆
8 `$ S! F4 x# a) ?% _) W/ e) P; Z5 X) ?7 T' J; G
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。 - R9 }. l* G, P6 E; Z, Z, N) l
! `3 M3 X: e* p
? 提示输入有效的用户名或密码。
5 Q: n/ N/ L6 B* ^ ^4 T( W+ ]
[$ |* q' [1 Q; Q4 D6 M Y8 P? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。 . ^, o& I' R& d7 p
. z% e O" v- B" P2 x, O) y' |: y只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。5 E+ o0 N5 Y6 ?, Y+ t1 C
5 h1 r; J o( N0 r, F' q
|
|