TA的每日心情 | 奋斗 昨天 10:07 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览 . [; ]% Q4 R4 v0 V
) Y7 g6 _5 r+ U/ f- n. b& A4 [从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段:
0 {/ w; a/ X0 O. B! H2 z6 E8 A! B4 I5 M
1. 预引导(Pre-Boot)阶段; t) r$ L- Y' e# ~* D! |$ v: c/ G
9 X% k! W* @3 h9 Y! Z, r, G2. 引导阶段;
9 e* Y# S7 H U5 n9 m
0 c- U$ `; z3 h7 [$ ?3. 加载内核阶段;
% ^( | r( J- D+ Q( g) O! T4 [0 t' l6 F0 C1 i) p" m1 X
4. 初始化内核阶段;
5 o0 ~ c5 _1 X7 P' h; \: H
# Q& z# d( F4 I2 m; N: X& C& e3 e- T5. 登陆。 & z( j' V/ ?! X7 m( t; q
% \4 d. F$ H8 v-------------------------------------------------------------------------------- 5 S8 X( G' a: S$ x* _
5 W E( |2 V& Z8 U) k$ Z& _" |0 d% |每个启动阶段的详细介绍
0 c7 F9 t2 r0 e( s, b2 Y. l5 ?5 E0 F6 ^1 V0 |! J: [
a) 预引导阶段
( G& Z0 I; N( G' `% @2 m) w- N' `2 e0 E( |& x
在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。
6 c! I$ e/ ]9 u1 L" f1 y0 ~3 ?, c2 w- L5 R
b) 引导阶段
, |, ]" C1 I* n D k$ I F+ d! i
, u. F$ q6 v1 @" B5 j7 _Windows XP Professional引导阶段包含4个小的阶段。 % f8 \8 M% H! e2 q. C; K- Q
1 R& W) ]& P6 s8 Q7 C0 S/ J+ A
首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。
3 Y2 N/ t2 ]) a6 @3 P# e. N
9 r9 w+ ^9 F6 }- }+ j2 \接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。)
) m4 k: P# t" D( o6 k& d) E \) G4 I) N
在boot.ini中,主要包含以下内容:
: i6 [8 g& z0 B1 Z" _- t; G0 M7 l% }% k
[boot loader]
6 ^7 p; a K$ q. O; G* ]
6 ^1 ~ h4 I, [4 \/ ztimeout=30
; Y! o2 y; A! l& h4 u3 @
7 |! c8 t1 _1 r1 O8 F4 S( T& j0 ]default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
, n3 r, p+ {7 b$ i \" e" X3 N
` A& a( [( Y& ~! ^1 n( c- C[operating systems] $ w- c& ^3 r/ I. \) b; {
% U0 q9 W9 F; jmulti(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
& \$ q' B1 i) z' G$ `5 f$ d( X5 d3 l8 _, U g) O/ b/ l
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional" ) I$ q d( V0 O
; W" E* _0 l( F1 F# ~
其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。
$ s+ `( k% ?/ J3 | d. }5 q8 a
0 _" b$ _: j/ T' d! b( c3 i$ {在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。 8 @. e* T1 ?2 n% N3 A( H
( @! |* C8 k6 N+ G/ T硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。
/ R( k7 e! q7 N; y9 H9 U+ }( k% X0 q: v+ i- R0 j7 U
引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。
. ?# }! a+ W( a' u1 ^, V1 b' |) e/ c
5 n' c. |3 K# ~1 K: r! X: @2 ]c) 加载内核阶段 6 X7 W- p+ I7 x# H0 H) ~+ ^
; W6 R! \6 I5 L* b在加载内核阶段,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传递控制给内核,初始化内核阶段就开始了。
% N% O K4 C, j; |% A9 c4 K# G* I9 N: `+ [. o$ m" y9 n
d) 初始化内核阶段
. N3 }4 p) X: X! D7 o: J+ K
7 J" a8 H' C( c; n8 U在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务: , N" v" p2 r; m8 @7 _3 @" Y1 s
9 h0 x( F. ^/ \* K1 L& ~, k
? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。
) q0 @! ?; {; d/ i; i! j' }9 r& Q8 Z+ F" p8 |! H
? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 ; T1 L$ U* M9 R# y$ B$ P8 [, L
8 t6 `9 ]/ A, h( P3 I
? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行 ^: k( J0 A7 j/ u& ?1 A* G
& s4 {+ e9 {. I* N& `* \
? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。 " p9 D5 C( F$ I! N( s1 I$ G
5 N" _+ e$ N2 V- ue) 登陆
) Q+ {1 i: I4 N6 y% z+ |& m5 G& c" a, F |; A
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。 # d/ ?& p* T9 R
/ z$ o9 c, [- A+ y6 B' Z? 提示输入有效的用户名或密码。
: S! h* k7 A4 D A' d& R1 [$ \* f( e3 l) b# s0 n
? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。
4 g9 c! w' p- @9 z3 g. {$ _- ^
$ o$ T) ]" Q# O6 w, j) m只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。
S9 ?) ?2 @! S% b/ `+ c& y/ O0 s- b5 ^5 {; U
|
|