TA的每日心情 | 奋斗 昨天 10:07 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览
' d( p- j3 d* p6 H8 V
) @" k6 B7 m' t" ?从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: ) N% a* X' V$ r9 c" E1 C3 @
2 Z0 T8 f. l% U1. 预引导(Pre-Boot)阶段; 1 m& c3 g7 x* m3 K5 \! e# f
5 U' _' ]2 c: \% O9 |5 [
2. 引导阶段; * i' I) G4 V0 q- q( [" c+ a
, I1 y) @. N: W v7 Z
3. 加载内核阶段;
5 K8 Q7 \0 d% T$ h5 A. {4 n6 e/ }( r, I' ]5 m. d
4. 初始化内核阶段; $ Q+ D; J& v% n
- E* Y; k5 X$ Y! U% P
5. 登陆。 ( ]- f/ @7 h) O" U8 B) Z
3 a- x- Y* F7 U% V
--------------------------------------------------------------------------------
1 x5 K7 c9 f* A. b# u V- u' i
1 ?, x# n& m8 {/ [/ ?+ Z }5 f8 c每个启动阶段的详细介绍 9 C' Q$ o% I7 p( E, s+ [
2 C6 F8 G* B# I0 P5 o
a) 预引导阶段
2 I% [2 O: D. D( I, L8 {! s: F; x" j0 z( s( O
在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。 2 `! p7 P* f- T& Y; p
) }# M/ `4 `, ib) 引导阶段
2 r4 @; t L1 A; G Z: S0 F6 J6 M6 r% i# T! x
Windows XP Professional引导阶段包含4个小的阶段。
( O' C# e2 @4 q$ h' w- `' O( v, Y1 N! k' z2 n$ |* j, L
首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。 : c, W4 f" O! S) X+ `' Z0 o$ b! z
5 s/ f B" e6 f$ C: s
接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。)
8 M8 D" e d! `" z* F9 ]5 x8 ^; n1 L4 U5 y: d
在boot.ini中,主要包含以下内容: . M0 ~# E. j% p6 _( `
/ E6 l* m( q& x, H2 ~
[boot loader]
5 p5 y$ v4 ?/ r; u, A: h+ l/ ^; S2 s% Z6 z) g
timeout=30
4 H3 ]! s1 _2 {, {4 o
" V, m; i- G# @7 d1 q9 T- x& Adefault=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS + u9 c; b9 j; D3 G5 l" D
4 ~" T) W" G" Y. r! g/ }[operating systems] ) H6 w: A& S8 l/ Q# K4 [! N/ y
7 [, r4 _* q% L8 _2 K8 c
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
i. P/ s4 _& c4 Q+ Y& A. ^4 Q: I4 J' E0 ]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional"
7 L8 `- V& I2 \* m5 v2 c' o# q5 V3 b
其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。
3 P7 ^* M' g) D M* l1 ^$ G* O/ x% e$ R8 V0 P7 N
在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。
' s4 C5 K" u, n
/ e& p! U R: |. K, W硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。 + V a0 U: B" I$ l6 r9 J S8 d2 @
9 s. ~3 H1 y" t8 G* g- d
引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。 2 h" c3 R; O: W2 P" O& R
# H) \8 v# V. y/ \1 R( b
c) 加载内核阶段
4 V# Q$ n- U0 v* H- |/ w) n& n* ~; k0 }0 z! W; Z+ X, 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传递控制给内核,初始化内核阶段就开始了。
5 K3 O) D% _. X; c2 W. N. ^' J+ L! n( ]9 W1 V2 M
d) 初始化内核阶段 % Z, }% m& ]' \7 k+ [4 |' z; e7 ~6 d3 [
8 ], @% O/ W4 y' J+ Y在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:
Z L1 {+ l4 Z) ]9 m3 P, v, z
* K. W: |3 U0 e; U3 S? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。 , `7 ~! a1 N0 v! `0 Q6 {
( g" q: M5 I& h" b# x6 A$ G* R) R? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 - F7 E1 `% {# [& a# ` @
. J; o" d$ b$ N, ]* D0 y? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
) v# G2 o* A q2 {" r& ]. q' ^; s3 K1 l2 [# l' [
? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。 / k# g" L/ m# f
* G# \. ]# n; ~2 c9 {e) 登陆
8 n' V& F: F2 m. ]0 A; _: @0 a
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。
/ c m0 j3 O% y$ g7 r( O l7 y8 Y" r. P* T0 T* [
? 提示输入有效的用户名或密码。
5 V9 u! C D2 C& [2 Y
& W( g8 u$ s8 [' a0 M& _ N O& y? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。 * ?# S8 a) G6 u5 \. s! z8 J8 K
8 ], \, ^8 }, H* _/ K; @0 i只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。
6 n: ^3 s. q% k
) n) D1 i2 k7 m( D$ F# t |
|