TA的每日心情 | 擦汗 5 小时前 |
---|
签到天数: 2396 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览
9 t0 J7 W# H7 H5 @) \ |
$ ^0 a" \1 Y& B5 R8 `. D1 s从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: % l* j3 P( S& x+ N( {) A
8 P4 @9 z9 }. c" _+ s1. 预引导(Pre-Boot)阶段; ) O0 j1 z3 G9 I6 E+ ~4 X0 i
: @2 H0 z) Y. i( j6 f
2. 引导阶段; $ R- ~0 y/ a& W- Y; b
* E2 w$ Q- H4 d& [1 k" I. `3 c
3. 加载内核阶段; 7 ?4 E- b' E* ]3 G0 t
% |; q" C+ E$ V. W
4. 初始化内核阶段; ! @5 E6 G0 Y' G" S! E
" {! T$ R/ c5 \3 Z; E& w
5. 登陆。
! Y' B) B1 |" c5 Y% F8 [9 y0 {# v' N' m3 }9 Z
-------------------------------------------------------------------------------- ) R8 |& n# j1 f. A7 v) g K
0 A2 Y. m0 a A4 ~
每个启动阶段的详细介绍 % z6 K: [$ Z7 l. R
: [ a0 c8 P" g! O+ [& M2 I/ Na) 预引导阶段 7 l" [8 F# F. l, V
9 w& l* D* |% [. I5 N: n在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。 * _0 H7 J4 T3 q2 b/ S! R
4 d) T! c( C2 t3 hb) 引导阶段 * W1 t1 e+ [) ]1 O
6 o+ s2 v1 F. l! C% o* [( BWindows XP Professional引导阶段包含4个小的阶段。 Q0 A1 p! C" b# {1 b
7 k5 s0 m0 k8 }& \- n) G6 I- w4 J
首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。
. }! D/ m+ N b o) H& C# ]1 l, A7 x a" \( @5 N m O1 O+ g& N* H
接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。) 2 V6 R& O8 `0 ?2 | S
- H8 P k, B. S' `1 U
在boot.ini中,主要包含以下内容: . t, e$ {! N3 J
( R( I9 ]6 w: z2 P$ e
[boot loader] ( @2 T S: ~% ?( w- i
8 O, ?" k, B- W/ Btimeout=30
! v5 K- {" a. }$ S. d4 a1 Q/ K, m6 |
5 z2 B4 f+ r2 y3 e! c& J) k% zdefault=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS ' }0 ^3 ~: c! }
# k" o$ J& Q- @1 Q[operating systems] , L7 Z0 O2 S0 ^3 S
4 M7 X8 b" D6 Q0 r4 e3 l) u0 ymulti(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect " k0 l4 R+ y4 S: f( b
' f z4 W' r \3 O, S, {" d
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional" & D. v, } n' r2 e0 X; {4 [* j
* d. G: L) s5 \0 S/ f, ^* B其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。 ( Q& N3 K, q* C* T1 J' G4 ]; _4 c
# [( k. |$ ?7 o' t9 \, e在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。 5 C4 E& V Q v( D' t2 x0 R5 A
) b2 x' [' |; N8 S' j$ h硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。
$ b( G/ f$ w5 e1 Z: n
' V' |. H* B+ T2 R7 Q4 b引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。 0 i0 `+ X" Y, y4 U
2 N& X4 X" k7 M/ O9 T
c) 加载内核阶段 . }( n' {/ w( I! }. p3 S
" w- b0 U9 i4 E6 [. E, 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传递控制给内核,初始化内核阶段就开始了。 % T2 Q* ?" i ^0 U, h
! f/ Y* j+ k5 ^. a" @3 W, X# @d) 初始化内核阶段
& O# g: Q1 |* y. M) B
2 E: ]' r8 ?( X) s4 p在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:
2 g1 \- y' m1 K2 L6 M% G: Q: c7 v+ G7 P
? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。 * _ g& O2 W: p) T n1 O( Y
& U6 a; _% d) E, ^? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。
# Z8 c# b7 A1 W( q" v& [- Z1 S3 |+ a5 Q: D1 X' a
? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
7 x8 K0 Z6 k5 Z3 {: y
# M$ `; a! z# P1 {5 }6 |0 }? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。 6 J1 |) u! I# ?0 a7 h0 n( D: i+ v
^6 M' u/ N0 q" m$ E. Ee) 登陆
: E, N% E/ a5 u/ A
/ {0 _0 l7 P" Z, C' h- @? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。
' r. T& [+ U( ^# P# {2 }9 f4 \) w
- }5 E7 G+ h. a5 s% l4 J? 提示输入有效的用户名或密码。
8 [6 u- d/ x6 [& h2 c4 z$ ^
. S ]0 `3 c, h6 b? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。
& l6 h9 ]0 q, N+ C- o) z" k, S2 d, H* C1 H" A+ G! h9 i
只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。% F0 ~/ C2 Y" d# v) {# z. a
. |* y4 W, n6 d. z6 S/ ]
|
|