TA的每日心情 | 擦汗 2025-1-24 09:05 |
---|
签到天数: 2402 天 [LV.Master]伴坛终老
|
Windows XP启动阶段概览 " Q' q8 j0 a4 A
4 E/ Z. n4 h H8 D
从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: * I9 n. ~$ E* r/ n+ e# C: ~
- g( {; j0 F" t6 G0 x* s
1. 预引导(Pre-Boot)阶段; 3 B2 [5 N/ r- e* Y1 q
: T+ A5 |1 r* {' Q& e0 W' _' S
2. 引导阶段;
4 w0 E; c7 j$ r* r( \& @, W9 v; P: G% I
3. 加载内核阶段;
; w. D9 r% k) D/ U" b
" N* m$ \% p% r0 n% B3 \4. 初始化内核阶段;
, e* ^: A x G, X8 X" v' G/ e- I8 O: T, Q! Q
5. 登陆。 5 T: n/ R9 n/ n5 z- n1 c: E
5 g1 @$ D# h; t( X/ w/ J
--------------------------------------------------------------------------------
( Y% X+ j, D, n1 s! g m# f L; H) ~9 q
每个启动阶段的详细介绍 0 v9 l6 P# o w! Z+ d0 ^1 f% z
( E- p0 T6 v x- a+ q8 S, |- R
a) 预引导阶段
- W9 j5 {9 n: H2 ^) R6 p
& q/ n$ ^1 I) P9 ^, j在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。
( Q) f( n2 v7 }7 ]) u* u
& Z7 C- [0 \# C! Ob) 引导阶段 ; Q2 N) ?5 h+ U) c
: P( N( Z) Y, R+ O6 l, R/ z
Windows XP Professional引导阶段包含4个小的阶段。
# [+ g+ \; A* i7 W: O# D: D/ k' l+ P' ]7 w* E
首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。
7 b) y# ~7 j* M) V" z
" I- x. G4 q, G接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。(至于操作系统选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个,见图一。) 7 J0 C+ ? E2 `8 E) g) B
& V( [6 O4 {2 B在boot.ini中,主要包含以下内容:
) q0 h) V, o5 O# z9 {" v4 c) ~3 W) d) z' f
[boot loader] ) y9 d* y2 x+ |/ J
4 \$ E0 _& ~5 C: @; F
timeout=30
: \% s+ v! v2 @2 S1 z) ?- d# j7 ]4 O! c$ T- g' `& u6 C
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
+ m3 H7 p5 e$ r" R- u. t# G( s% x: K7 d3 \: U7 T
[operating systems]
! X/ x( E# B+ B; C- p" y* ^' G! H z" ]# c7 j
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect 5 b7 P, H& l9 i1 S4 [7 O$ y
7 [6 y! {; \, N4 a- Z$ c2 e# ^
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional" $ W- E. e% n: [2 f3 c/ r' j
4 {( J; ]9 a1 U. d' z+ x2 ]
其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。 1 Z5 R [/ H/ X
1 U# P; L5 h9 S1 e) H2 q
在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。 9 Z& k7 d3 |& d; a
$ Z, A7 z" n( X5 h. u* J
硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。
- c8 E) ]" t$ B& H) a+ T: a) C ~+ U% [* r1 I- S7 S
引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。 7 i7 q5 t" D6 n( O% v4 k) e
, M0 U) {- `6 R5 K
c) 加载内核阶段 : o+ H6 B1 ^% U" E! I
7 ?$ ^) o" n9 S) [) m, \! E3 t. 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传递控制给内核,初始化内核阶段就开始了。
( ?- U9 m& e9 M( ]9 S- H0 D, ?, l( l7 B' G& ]1 o- I- O
d) 初始化内核阶段
# r, p4 ]0 X- N
0 ^, c4 z( a1 x" a0 W在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:
5 V4 [3 v) ~) g. z/ Q4 D0 n9 ^5 x
? 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。
, [! L+ S9 D T' X9 F' c5 F O! }8 _; J5 s# f- @7 h
? 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 ' @3 k& c, U1 u3 E( R0 T
' p$ @/ D+ c2 w1 u' _1 D1 @
? 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行 , q! B! h4 k: i+ O
5 a4 q2 J) \5 Q- E, V. @( V( t? Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。
" t1 y4 V4 x5 F, K9 I" j+ ~" c& M( m6 I6 j4 Y! h
e) 登陆
9 ~3 {; r% a- i2 m( z% Y9 {1 q% _/ Y Z# B9 k3 s" M4 R5 z- ]
? Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。 ) U8 R- A k1 p: u( k
( L" W: A/ t9 v( k? 提示输入有效的用户名或密码。
0 D2 B+ k* K; `7 W6 S* H/ s9 Q
1 C- l+ t% k- w4 D1 P* l* r$ U/ J$ m? Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。 ' M6 g. _5 I2 d/ G( x
* e* i0 }" ]: y5 Q4 z只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。
. x7 b( }5 O; L' T- s. a
5 p( c) ^2 @0 X# \% Q5 B& ~ |
|