TA的每日心情 | 擦汗 7 天前 |
---|
签到天数: 2402 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览 1 m4 n# W' O% v/ U; R
w& H: x$ K5 }. Q2 I% v0 L从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段:
7 ?- J6 _8 h) @; S) C2 @( u2 U: V1 @2 Z! p% H/ B: s% Z7 O2 k* Z
1. 预引导(Pre-Boot)阶段; & I& |# Q7 P6 T
4 M. i' ]2 e, G0 F* e+ w2. 引导阶段;
+ B% _7 a8 ]% g) a6 j. A* q* u& d6 _; o; _( l
3. 加载内核阶段;
( O, U+ W- F0 T8 y1 v4 i" T
' P$ Z% B' R' l5 E* m4. 初始化内核阶段;
: o! E1 R: L6 j+ y+ }
! O% S" c: U9 |: }5. 登陆。 . ~0 Q1 b, c+ @; c
/ u& [& r2 a( g. T) e4 n3 G3 _--------------------------------------------------------------------------------
( M6 s | `$ j( j
- u. Z; q4 r ^2 Z+ N" |每个启动阶段的详细介绍
; o7 O# v2 M1 ^& y4 `) H5 k& [
/ y) ~, X2 ]# G0 Z/ [3 g5 v5 Wa) 预引导阶段
. q$ ~/ e- r( I9 u( |" M0 G. X0 p7 @
在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。 ) D$ v- A: M* |8 S0 h. H8 K
8 @1 n1 G X% a& t; sb) 引导阶段 & ^& [, ] g3 X4 Q& |+ T
' ` g" ?7 v) I
Windows XP Professional引导阶段包含4个小的阶段。 - a& a' h L% M; e) |
. x( k' @) d4 l6 J! r/ v首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。 " j6 \: a7 x3 [ ^- C
# i9 u* S/ }% @; C接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。) $ ~0 P3 r( i$ |9 }% E2 v
; U/ \. ]5 @2 _1 P4 J6 o; q/ B% k在boot.ini中,主要包含以下内容:
2 ~+ x4 |" f4 ~# V+ C
& A6 L9 U R3 b- p) _[boot loader]
# N% d: U3 l) {" D
( J) F* B" K% w* x) Btimeout=30 " P! V) n0 c" X. f. g" Y; |
( q% \ y% [3 r4 Tdefault=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS 5 }: K% m. W. h `
4 [& E* R" T! z[operating systems]
/ V8 {% k; e1 I
# }. K1 t( @, M* K" ^) @multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
, A( Z8 x ~1 [3 B5 ]" }0 ^
) `1 t# Q6 ]( V3 J; K1 G1 }& o1 N) v2 Smulti(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional"
/ W3 `0 J* \3 @' S9 F1 E$ Z2 V8 @
: H, Z8 S) L, K其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。
2 w, [' r& r+ }: A' _; ^
; S6 J' }& h$ j/ F- ?, s$ U在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。 1 U% a/ a& u+ \' C3 ^2 ~
. R6 J- A3 a1 W7 g& A" Y硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。
' P* K0 P, ?+ y8 e# L+ {
: r& I) z9 c% M4 f引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。 1 X- n! g4 f, v% Q$ p
$ L; F% f7 t O" F, P1 ?. @7 Bc) 加载内核阶段
! `; r7 _8 N: r1 f8 _. ^) D0 G" W5 C, p; l- L2 N; c
在加载内核阶段,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传递控制给内核,初始化内核阶段就开始了。 $ Y* D; N$ B2 \' y
4 V5 w6 H( ]: S7 j& e* x: t- h8 W
d) 初始化内核阶段 . F6 t3 g! q0 N# i. ?( E7 L$ Y
: y/ x3 L/ i1 L- U* V在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务: , P% ^! X" H0 P8 U6 n1 P
1 L& x' T, Z0 o% v! \ F
? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。
+ H* M& T; {- o& [, v) W7 O' X$ e# l' L) B# `$ D
? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。
" S8 ~, {, d# t6 j' U, w8 `& ~
. r C$ Z* }4 b! I0 s- q* L! o? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
& v r+ |' C; C4 P1 a
' ]! G: p' d, t/ r; ^? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。
; A! A: H0 f5 Q& {1 Q3 b( A# V. F6 G' |: Q9 J. h' Z x4 w" G
e) 登陆 ) R% `1 _6 z- c5 P+ s+ L' A7 A, ~
! U# y: s5 K- Y( Y% q) p
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。 1 o2 t) a' U$ J8 ?& T3 C0 ^) @
+ i6 `9 ]1 s7 Q0 k7 T2 n% q
? 提示输入有效的用户名或密码。 ( u1 s& Z' k; u1 I) Q
% I' `4 _/ @# i! t9 k; B
? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。
# v4 {! j8 y/ J. E# n7 y; T( G* \5 x/ C
只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。
3 r* {2 m* _, b' g0 f, A- k: s9 I2 x
|
|