计算机的整个启动过程就像一场接力赛,每一段都有自己的任务,每一段都要努力
做到完美无缺,才能将“接力棒”交给下一个环节,它们的终点就是登录界面的出现:这
意味着启动过程的终结。
启动的过程因计算机和操作系统而异,不过,在普遍应用的Windows 2000 和
Windows XP 操作系统中,启动过程并没有什么差别。下面我们就从按下电源的那一个
瞬间开始今天的探索之旅吧。
预启动阶段
1.POST ——开机自检:这是每个计算机的电源接通之后,必须要做的第一件事情。
POST 将检查硬件:是否有内存、是否有键盘以及SCSI 卡等等。虽然这是一个和操作系统
无关的过程,但是它却是保证系统正常启动的第一个步骤。
2.一旦自检完成,计算机将查找启动设备,并且将MBRu(主引导记录)调入内存。
典型故障:开机后蓝屏、提示“Operating System not found”、提示“Invalid partition table”
这些错误信息的出现是因为MBR遭到破坏,解决的办法是:用系统启动盘(软盘或者
安装光盘)启动计算机,然后执行下面的命令:
FDISK.EXE /MBR v
FDISK 是MS-DOS、 Windows 95/98/Me 中的标准命令,Windows NT/2000/XP 用户,可
以采用以下办法修复主引导记录:
启动系统故障恢复控制台( 详见
后文如何启动故障恢复控制台部分),
在命令提示行下输入fixmbr 后回车●
,
在出现警告信息的时候按Y 键,最后
输入exit退出故障恢复控制台(如果想
了解使用故障恢复控制台的详细资
料,请参考2002 年第19 期《抓住末
日前一秒—— Windows 的故障恢复控制
台》一文)。
3.计算机将查找活动分区、引导扇区,并将其装入内存。
4.开始调用Ntldr,Ntldr 是系统加载器,它是第二阶段的关键部分。
启动阶段
1.当Ntldr 开始运行之后,它首先将处理器的实模式w 改为32 位平滑内存模式w。
2.启动小文件系统(例如FAT、NTFS),以便从磁盘上访问文件。
3.随后,Ntldr将访问第一个文件:Boot.ini文件,并且根据文件的内容在屏幕上显示启
动菜单。
4.如果用户选择的不是Windows 2000(或者Windows XP)操作系统,那么NTLDR
将调用Bootsect.dos、将控制权移交给它,并且启动所选择的系统。否则,NTLDR 将运行
Ntdetect.com文件。
典型故障:当你选择了其他操作系统之后,出现了错误信息:
这种情况是由于找不到启动分区文件造成的,一般出
现在安装了多个操作系统的计算机上。当你在已有的操作系
统——例如Windows 98 ——上安装Windows 2000 的时候,安
装程序首先会将原有的启动分区(一般为0 分区)保存成
Bootsect.dos,然后安装程序会将Windows 2000 的启动分区放
到0 分区上。因此,Bootsect.dos 是在启动过程中创建的,无
法像其他丢失的文件一样,可以从安装光盘上复制过来。那
么,这种情况下应该如何解决呢?
-为原来的操作系统重新生成一个启动分区。例如,对
于Windows 98,只需要用Windows 98 启动盘启动系统,然后
在命令行提示符下输入sys c:后按回车。
-创建Bootsect.dos:
a 将Windows 2000 安装光盘放入光驱,启动计算机;
b 在出现欢迎屏幕之后,按两次R 键;
c 当安装程序运
行到修复任务选项的
时候,选择“检查启
动扇区”选项,然后
将光条移动到“继续
(执行所选任务)”上
按回车●
;
d 跟随安装向
导继续,最后会看见“安装程序已完成修复”的提示;
e 重新启动计算机。
5.Ntdetect.com 将收集计算机硬件方面的信息,这些硬
件包括:计算机ID 号、适配卡类型、显卡、键盘以及鼠标、软
盘、COM 口和并口等等。一旦信息收集完成,Ntdetect.com
会将信息传递给N T L D R ,并将信息写入注册表中的
HKEY_LOCAL_MACHINE_HARDWARE 分支。
我们可以看出,启动阶段调用了三个非常重要的文件:
Ntdetect.com、Boot.ini和Bootsect.dos。而这个过程也是安装
了多操作系统朋友经常出现问题的地方。
典型故障:计算机启动时,没有出现启动菜单。
这种情况是将显示操作
系统列表的时间设为0 秒引
起的。解决的办法是:右键单
击“我的电脑”,然后选择“属
性”,在“属性”窗口中,点
击“高级”选项卡,然后点击
“启动和故障恢复”按钮,在
随后弹出的窗口中,首先确
保选中了“显示操作系统列
表 秒”,然后将时间改为大于0 的数字(默认值为30 秒)●
。
典型故障:启动计算机的时候,出现错误提示信息:NTLDR
is missing,Press any key to restart
Ntldr 文件丢失、出现错误会造成这个故障。其他类似的
故障还包括:Ntdetect.com is missing⋯⋯等等,可以使用下面
的解决办法:
-利用Windows 2000 的安装光盘。这个文件存放在系统
安装光盘的I386 目录下面,因此,只要将其复制到硬盘上就
可以了:
a 将Windows 2000安装光盘放入光驱,启动Windows 2000
的安装;
b 当出现欢迎界面的时候,按R 键。
c 在Windows 2000 的修复选项界面中,再次按R 键。
d 当提示选择修复选项的时候,按M 键●
。
e 选择“验证Windows 2000 系统文件”。
f 选择“继续(执行所选任务)”,然后按回车●
。这时
会出现如图信息●
。
g 如果你有
紧急修复盘的话,
请按照以下步骤
操作:
按回车;
插入紧急修
复盘,然后按回车;
根据提示修复安装,然后重新启动计算机。
h 如果没有紧急修复盘,则按以下步骤操作:
按L 键。系统会出现如图信息●
。
按回车键,安装程序将检查系统并完成修复过程。
-使用故障恢复控制台
启动故障恢复控制台(见后文);
输入map,然后按回车,记下Windows 2000 安装光盘所
在的光驱盘符(在本例中为I);
-输入以下命令后按回车:
copy I:\i386\ntldr c:\
在提示是否覆盖的时候,按Y 键;
-输入exit 重新启动计算机。
内核调用阶段
1.在这个阶段,NTLDR 将调用Ntoskrnl.exe,并且将由
Ntdetect.com 收集的硬件信息传递给它,同时被调用的还有
Hal.dllx 文件。如果你有多个硬件配置文件,当运行到这一
步的时候,你会在屏幕上看到要求选择硬件配置文件的信
息。另外,NTLDR 也将从注册表中调用所有启动值为0x0 的
设备驱动程序。如果你在Boot.ini文件中有“/SOS”参数(一
般加在/fastdetect 参数的后面),那么此时你可以在屏幕上
看到调用的设备列表。
典型故障:启动的时候出现错误信息:“Ntoskrnl.exe missing
or corrupt on bootup”(Ntoskrnl.exe 丢失或者损坏)。
如果出现下列情形之一,会导致上述错误的出现:
-新增加了一个硬盘或者改变了原有的分区(例如:删
除了原来的一个分区或者将原来的两个分区合并)都可能导
致Boot.ini 文件中的[Boot Loader]部分的Default 值丢失或无效,
从而使启动过程无法找到启动所需的文件;
-Ntoskrnl.exe文件被删除或者被损坏;
解决的办法是:
-使用启动盘启动操作系统,编辑Boot.ini 文件,检查与
下面一行类似的命令中是否有错误:
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows
2000 Professional" /fastdetect
这一行表示在第一个IDE 硬盘上(rdisk(0))的第二个分
区(partition(1))上装有Windows 2000,大家可以根据这个
规律来查找自己的Boot.ini 文件中的数值是否正确。
-如果没有发现错误,请将Windows 2000 安装光盘放入
光驱(假设为I 盘),然后在命令行输入:
expand i:\i386\ntoskrnl.ex_ c:\ntoskrnl.exe
然后按回车,系统会提示已经将文件展开。将光盘拿出
并重新启动计算机。
典型故障:HAL.DLL is Missing
这个故障是由于缺少Hal.dll文件引起的。解决的办法是:
a 启动故障恢复控制台(见后文);
b 输入:
expand d:\i386\hal.dl_ c:\windows\system32\hal.dll
后回车(注意:在实际应用时,请将上面的d替换成自己
的Windows 2000 安装光盘所在的盘符);
c 输入exit 回车,重新启动计算机。
2.内核初始化。这一步将对内核以及上一步中调用的硬
件驱动程序进行初始化。
服务调用阶段
这个阶段将启动会话管理器(Smss.exe),会话管理器
将读取必须调用的程序列表(在注册表的BootExecute项中),
然后设置内存分页并且启动Win32 子系统。
Win32 子系统启动阶段
一旦Win32 子系统启动,会自动运行Winlogon.exe,同
时启动本地安全管理(Lsass.exe)并且显示登录对话框。然
后会运行服务控制器SCREG.EXE,服务控制器会检查注册表
中启动值为0x2 的服务项目,然后调用这些服务(值为0x3
的服务表示需要手动启动、值为0x4 的服务表示禁用)。
用户登录阶段
最后就是用户登录阶段了,一旦用户可以登录进系统,
那么也就表明整个启动过程已经结束。成功登录之后,当前
的设置将被自动保存为“最后一次正确的配置”以备以后使
用。
工具:学会做一张真正的启动盘
有一些方法,例如Format A:/s,虽然可以创建启动盘,
但是这样的启动盘并不能完全解决启动时遇到的问题。尤其
是现在大家大都安装了多个操作系统,这些操作系统的启动
分区不同,甚至文件系统(FAT、NTFS)都不同,所以一个高手
的启动盘应该是一个可以用来启动自己所有系统的应急盘。
1.格式化一张软盘。可以在命令行下输入:
format a:
2.将Ntldr 文件复制到软盘。这个文件可以在系统安装光盘
的I386 目录中找到。请先将安装光盘放入光驱(假设为I 盘),
然后在命令行状态下输入以下命令:
expand i\i386\ntldr a:\ntldr
按回车。
小提示
有的安装光盘中的Ntldr 文件有一个后缀._,这个时
候请输入以下命令后按回车:
expand Ntldr._ a:Ntldr
3.将Ntdetect.com文件复制到软盘,这个命令同样存在于安
装光盘的I386 目录下,请输入以下命令后回车:
copy i\i386\ntdetect.com a:\
4.将位于硬盘系统根目录下的(一般为C 盘)Boot.ini 文件
复制到软盘上。Boot.ini 是一个系统隐含文件,如果你直接执行
上述命令,会出现“系统找不到指定的文件”的提示。因此,你
需要首先去掉Boot.ini 文件的隐含属性,使用下面的命令(请确
保你处于系统根目录下,并在输入完后按回车):
attrib boot.ini -h -s -r
copy c:\boot.ini a:\
attrib boot.ini +h +s +r
至此,这张启动盘就完成了,大家可以试着用它启动系统,
注意别忘了在BIOS 里要先将软驱设为第一驱动盘啊。
小知识:
学习如何启动故障恢复控制台
1.使用Windows 2000 安装光盘启动计算机。
2.在欢迎界面中,按R 键。
3.按C 选择使用故障恢复控制台修复Windows 2000
安装。
4.输入需要修复的Windows 所在盘符前的序号,然后
按回车。
5.输入管理员口令,然后按回车●
。