TA的每日心情 | 奋斗 昨天 10:07 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览 1 }& A* B& [' V0 y5 c* z; |0 x
3 L* E- ] n# W
从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段:
4 c# F% m1 o3 z7 [" H: V$ x* t2 d0 E
8 n$ H2 g' s1 q* P* f* E9 \% G3 M1. 预引导(Pre-Boot)阶段; ' }* y- U# L1 {! n4 W
r" B: Y9 [4 q% y7 q, K$ ]1 U+ ?" \
2. 引导阶段; 2 I2 ~: t4 N2 o$ O C" J- d* X
0 X( o# s; C* J+ K, y* [- P j5 M3. 加载内核阶段; . B0 s- n$ i; n% o- l6 b
$ ~9 u1 n u5 A/ M& _2 D4. 初始化内核阶段;
) J8 s* W* _' n( J! |2 F! F4 F e% I) n
# N9 ^8 O% e* E/ `0 a2 Y4 l5. 登陆。
! [- G: m9 M" N7 ]9 J0 K2 N$ F$ B7 T' z% L
--------------------------------------------------------------------------------
( a* `2 I: I4 _# |* e: A# e( s8 I
$ P' { S1 s) {+ S0 M每个启动阶段的详细介绍 & R1 ^ Z8 v f+ G& r+ r- |; S
& o/ |5 A& L2 I8 `1 _6 ]) ?3 p: Ua) 预引导阶段 6 e$ f- ~; o* m' y! h, U* l; t
. I0 D+ A9 h8 f: U$ Q8 ^: A u在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。 , z3 A7 l/ e# \7 q# q* Q
3 ?+ S+ v0 Q7 ^+ N# C2 P" i5 K6 Jb) 引导阶段 9 _8 R* |/ t) w$ Y- d
1 z6 Z n+ j' X* kWindows XP Professional引导阶段包含4个小的阶段。
) p! F$ c" l! H, M9 z+ Q4 I0 B! ?1 q- ]( s6 t7 d8 U8 Q% k
首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。
# [) L& k& i# M" V7 ^& [* Y2 V
3 |9 h5 w2 Y' F% z* M接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。) 6 i5 J$ A/ }/ a% l7 R0 `
9 D8 y, ?: @9 y
在boot.ini中,主要包含以下内容:
& E% R' U, o& r
# V5 w, f% a0 l0 r+ Y" M[boot loader]
4 {9 _( Z0 |2 g7 p. v
/ E, d L U8 I7 {6 @" ftimeout=30 7 e9 g* j i; j% l Y4 }% L& C1 I
" a% v! k( t5 Z Bdefault=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
X6 E$ @5 }. Q0 p2 J* E) ^& k7 t
% O+ O3 D" [2 a5 }9 ^" s[operating systems]
2 `; d% P* d8 K; d# B0 Y" }* B, C% Q
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect " h6 e) b8 R4 k2 L4 X4 p
, j! x' Z& h& N/ K; Z1 X1 E- R
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional"
8 X a+ j6 u: s& _1 m- p; g( X* Q3 T
其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。
5 I* [" {4 l8 H
% H$ B/ q. g& ]; v; s4 X在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。
2 r- Q! O: ]5 f7 G6 o
+ S- E! d6 k2 P7 X. T: j硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。
, Z$ e f1 n; _) a$ l
% F6 Y* ^9 X2 q, c3 G) B引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。
+ C' M; K M5 x H( U- h+ D% _( u
# a# y$ A2 g2 Q: N9 r& Pc) 加载内核阶段
, X1 q& L" ]" a3 J" x/ d9 w! A+ P- x. `; N9 L1 K O$ T
在加载内核阶段,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传递控制给内核,初始化内核阶段就开始了。
. S$ I( f8 q! c0 n* \0 ]
4 }. N1 ^' Q* }: p7 xd) 初始化内核阶段 ) H6 M5 C# N- \+ G0 g
3 n) B* {0 G4 ]: Z; F2 o a在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:
. B5 G) Q- x+ v* P: u9 i
/ I5 u3 n7 c8 m+ P) e6 S? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。
) _1 S, k+ d; D+ J' P& G; ^. t) c: ~' E' @! Q* u
? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 " P( i4 \4 {6 t
5 t5 x: J+ _4 `( s6 V? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
. C( Q7 g- ^2 x5 ?' ?- C6 h
5 t- ]( b$ C4 T+ r? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。 : T0 T" V3 V7 M" r
) s3 S6 Y* t7 F5 g* l6 B5 Y: f# Se) 登陆
6 `& ]2 p. v: Q# j M9 |. _0 W8 j9 M4 S7 o- ?, y" q
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。
, F" y7 I1 t, H$ v5 R# Z! Z. d$ K# X( a- N
? 提示输入有效的用户名或密码。
9 M1 g" T. e. \% Y. `; _; G
: r+ a- E2 P/ U8 q, f) e- }/ y? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。
/ C( P# F" z4 r' {
2 b: r0 K8 f0 M1 d9 _只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。9 V# E! E Z% C
/ R5 g+ H& H$ k! ^7 R. y y2 b |
|