引言
但笔者在这两年的工作过程中,却发现很多用户对Windows 2000的特性还并不是很了解,以至于常常在发生系统故障甚至崩溃的不幸之后,就只有草率的重装系统,随之带来了漫长的软件环境的恢复和对丢失文件的痛苦回忆。
本文适用于Win NT4.0,Windows 2000以及Windows XP各个版本的使用者。
本文旨在以Windows 2000为例讨论其系统的引导过程,以期较为深入的揭示引导过程中各种相关故障的原因并提出快捷有效的解决途径。
一、 基于PC的Windows 2000引导过程
个人电脑上Windows 2000的引导过程是分好几个阶段进行的,通过了解Windows 2000引导过程中的各个阶段以及每个阶段使用到的文件,有助于我们之后更有效的分析和处理各种问题。Windows 2000的引导过程分为预引导、引导、内核加载、内核初始化和系统登陆五个阶段,如图一所示,
图一
表一则列出了在系统引导的不同阶段所引用的文件。
表一
在这里,我们暂不讨论Windows 2000操作系统的内部工作机制,以下通过图文结合的方式,简要给大家说明在这五个阶段,操作系统都在干些什么,那些程序发挥了作用。
第一步,预引导阶段,过程如图二所示,首先包括了系统加电自检,这个过程完成硬件设备的枚举和配置。其次计算机BIOS确定引导设备的位置,加载并运行Master Boot Record(MBR)主引导区内容(如lilo等)。然后扫描分区表,定位活动分区,并将活动分区上的引导扇区内容加载到内存中执行。最后加载系统盘根目录中的Ntldr文件,这也就是Windows 2000操作系统的加载程序。
图二
第二步,引导阶段,过程如图三所示,首先是初始化引导加载程序,这时Ntldr完成处理器模式切换和文件系统(FAT或NTFS)驱动的加载,如果使用了SCSI设备,Ntldr将Ntbootdd.sys加载到内存中运行。其次Ntldr读取系统盘根目录下的Boot.ini文件,屏幕显示Boot Loader Operating System菜单,等待用户选择要加载的操作系统,关于Boot.ini文件的设置我们后面还会详细讨论,如果此时Ntldr没有找到Boot.ini文件,就默认从第一个磁盘的第一个分区的\Winnt位置加载系统,如果在所限时间内用户没有做出选择,则启动默认的选项。开始加载Windows 2000操作系统之后,Ntldr读取并运行程序Ntdetect.com以完成硬件的检测,如果安装了多操作系统,而且用户选择启动了Windows98或WindowsMe那么Ntldr就会加载并运行Bootsect.dos启动所选的操作系统。最后在Ntldr加载了Windows 2000并收集了硬件信息后,紧跟着就根据用户选择调用系统的硬件配置文件,如果只有单一的硬件配置文件则直接作为默认配置调用,强烈建议用户自己在系统安装好了之后备份一份原始硬件配置文件。
图三
第三步,内核加载阶段,过程如图四所示,系统加载了默认硬件配置文件后,就会清除屏幕,接着屏幕上会显示出一个进度条(…),Ntldr随后进行如下的内核加载操作,首先,加载Ntoskrnl.exe,但并不进行初始化。其次加载硬件抽象层文件(Hal.dll),然后加载%systemroot\System32\Config\System下的注册表项HKEY_LOCAL_MACHINE\SYSTEM。之后选择加载控制集,初始化计算机。最后,根据控制集加载低级硬件设备驱动程序。
图四