您的位置:首页 > 其它

Win 2000系统引导过程详解

2007-07-14 21:25 309 查看
本文适用于Win NT4.0,Windows 2000以及Windows XP各个版本的使用者......

引言

但笔者在这两年的工作过程中,却发现很多用户对Windows 2000的特性还并不是很了解,以至于常常在发生系统故障甚至崩溃的不幸之后,就只有草率的重装系统,随之带来了漫长的软件环境的恢复和对丢失文件的痛苦回忆。

本文适用于Win NT4.0,Windows 2000以及Windows XP各个版本的使用者。

本文旨在以Windows 2000为例讨论其系统的引导过程,以期较为深入的揭示引导过程中各种相关故障的原因并提出快捷有效的解决途径。

一、 基于PCWindows 2000引导过程

个人电脑上Windows 2000的引导过程是分好几个阶段进行的,通过了解Windows 2000引导过程中的各个阶段以及每个阶段使用到的文件,有助于我们之后更有效的分析和处理各种问题。Windows 2000的引导过程分为预引导、引导、内核加载、内核初始化和系统登陆五个阶段,如图一所示,

 


图一

表一则列出了在系统引导的不同阶段所引用的文件。

文件

位置

所属引导阶段

Ntldr

System分区根目录

预引导和引导

Boot.ini

System分区根目录

引导

Bootsect.dos(可选)

System分区根目录

引导

Ntdetect.com

System分区根目录

引导

Ntbootdd.sys(可选)

System分区根目录

引导

Ntoskrnl.exe

%Systemroot/System32

内核加载

Hal.dll

%Systemroot/System32

内核加载

System

%Systemroot/System32/Config

内核初始化

Device driver

%Systemroot/System32/Drivers

内核初始化

WinLogon.exe

%Systemroot/System32

系统登陆

Lsass.exe

%Systemroot/System32

系统登陆

[align=center][/align]
表一

在这里,我们暂不讨论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。之后选择加载控制集,初始化计算机。最后,根据控制集加载低级硬件设备驱动程序。


 

图四

第四步,内核初始化,过程如图五所示,当内核加载阶段结束时,内核就开始初始化,然后Ntldr就把系统的控制权转交给内核。这时屏幕上会显示图形界面,并带有一个状态栏指示加载状态。成功的初始化之后,首先,内核会使用检测到的硬件数据,在注册表中创建HKEY_LOCAL_MACHINE/HARDWA项。其次的工作是内核通过复制HKEY_LOCAL_MACHINE/SYSTEM/Select子键Current项引用的控制集创建Clone控制集。接着内核开始进一步加载和初始化设备驱动程序。最后,Session Manager(Smss.exe)按顺序启动Windows 2000更高一层次的子系统和各项服务。

 


图五

第五步,系统登陆,过程如图六所示,系统首先启动Winlogon.exe,随后启动Local Security Authority(Lsass.exe),这时屏幕显示出登陆对话框。然后系统执行Service Controller(Screg.exe)再次扫描注册表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control项并自动加载其中系统的或用户的服务。至此,用户已成功的登陆到了Windows 2000系统,系统随后把Clone控制集拷贝到LastKnownGood控制集。以上五步顺利结束之后,才可以称之为Windows 2000的完美引导过程。

 


图六

二、关于高级引导

在正式引导系统之前,也就是第二步的第三项操作之前,如果按下F8键,就会进入高级引导选项,表二简要给出了高级引导的选项及它们的功能,可供您引导系统时参考。

高级引导选项

功能

Safe Mode

安全模式,只加载启动系统所需要的基本设备和驱动程序以及系统服务的标准的默认配置。

Safe Mode with Networking

加载网络需要的服务和驱动程序的安全模式

Safe Mode with Command Prompt

只启动命令行模式,不启动Windows Explorer的安全模式

Enable Boot Logging

纪录驱动程序及服务的加载和初始化,参考用来处理引导过程遇到的问题。

Last Known Good Configuration

使用上次成功的配置引导系统

Directory Services Restore Mode

允许恢复域控制器上的活动目录

Debugging Mode

启用调试模式

[align=center][/align]
表二

三、关于Boot.ini文件

上边第二步曾提到过Boot.ini文件,这个文件存储在系统盘根目录,它的作用是定位加载的操作系统硬件位置,特别是在安装了多重系统时用来实现选择启动的功能,以下是一个标准的Boot.ini文件,我们将对此作适当解析。

[boot loader]

timeout=30

default=multi(0)disk(0)rdisk(0)partition(1)/WINNT

[operating systems]

multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Professional" /fastdetect

C:/= "Microsoft Windows 98"

[align=center][/align]
Boot.ini文件包括[boot loader]、[operating systems]两个部分,[boot loader]包括等待时间和默认引导系统两个参数,timeout后边的数字表示等待的秒数,default后边的是默认引导系统的位置。[operating systems]则包括安装的所有系统的ARC(Advanced RISC Computing)引导路径(等于号之前的部分)和他们在菜单上显示出的名字(引号之间的文本),以及启动参数(斜杠后边的部分)。下边的表三将详细向您解释ARC路径的含义

约定

描述

Multi(x)

表示IDE磁盘或SCSI控制器

Scsi(x)

表示SCSI控制器未启动的磁盘

Disk(x)

表示SCSI总线号

Rdisk(x)

表示磁盘设备序号

Partition(x)

表示分区号

[align=center][/align]
表三

注意,在multi、scsi、disk和rdisk序号都是从0开始的partition是从1开始的。下边的表四将向您解释常用启动参数的意义。

参数

功能

/basevedio

使用标准的VGA视频驱动程序引导,用于视频驱动故障时。

/fastdetect

不检测串口和并口设备,加快启动速度。

/maxmem

设置启动使用的最大内存,用于内存故障时。

/noguiboot

引导时不加载VGA驱动,不显示图形界面

/sos

引导时显示设备的驱动程序名,用于确定哪个驱动程序触发了故障。

/debug

对启动时的错误用调度器调试。

/crashdebug

对内和进行调试。

/safeboot

使用安全模式启动

[align=center][/align]
[align=center][/align]
表四

因为boot.ini是系统保护文件,它隐藏在系统盘根目录下,并且具有只读属性,如要修改请先到文件浏览器的工具—〉文件夹选项—〉查看中选中显示所有文件和文件夹,取消隐藏受保护的操作系统文件,并且取消boot.ini文件的只读属性,方可使用记事本之类的编辑器编辑它。

四、制作两张关键的软盘

以上我们较为详细的了解了Windows 2000的启动过程和所涉及的一些文件和程序,下边我们就要未雨绸缪,充分利用资源武装自己,如此才能不怕将来故障和崩溃的挑战。

首先,我们制作一张Windows 2000的启动盘,请依下列步骤操作:

1.  在运行Windows 2000的计算机上格式化一张软盘。

2.  在安装系统的主分区上,将下表给出的文件拷贝到软盘上,请注意先显示隐藏文件。

基于Intel的计算机

Ntldr

Ntdetect.com

Ntbootdd.sys(系统使用SCSI设备时选用)

Boot.ini

Bootsect.dos(同时安装了Window9x系统时选用)

[align=center][/align]
[align=center][/align]
3.立即使用制作好的启动盘引导系统,测试它是否工作正常。

接着我们再制作一张系统紧急修复磁盘,遵循路径,开始—〉程序—〉附件—〉系统工具—〉备份,我们就可以方便的制作紧急修复磁盘。注意,紧急修复磁盘存放着系统注册表和启动配置的相关文件,所以只能用于制作的这台机器,同时,该磁盘的内容应当及时的更新,尤其是当机器安装了新的硬件或软件,或者系统配置更改了之后。

五、常见引导故障的排除

上边说了那么多,完全是为了尽可能从理论上武装自己。在进入实战之前,我们先来整理一下所带的装备,1)Window2000安装盘2)启动软盘3)系统紧急修复磁盘4)备份好的系统原始硬件配置文件5)备份好的注册表文件6)一个冷静清楚的头脑。OK,这就加入Counter Failure小组,出发!

1)  按下Power键,我们的旅行开始了。

2)  首先系统开始自检(POST),如自检结束之前出了故障请咨询你的硬件供应J商。还好没问题,系统自检顺利通过。什么?“Missing operating system”!怎么办?

诊断:这是个POST完成之后最普通的错误,你的运气不错。让我们试回忆一下前边描述的预引导阶段,这里故障可能是由以下原因造成:

I)  系统分区未激活或激活失败,解决办法请使用FDISK类的工具激活。

II) 系统盘引导扇区损坏或配置错误,解决办法使用Windows 2000安装光盘,运行安装程序,利用其中自带的自动系统恢复功能修复引导扇区。

顺便提一下,虽然这里不是可怕的MBR损坏,但及时的备份MBR也是必要的,使用如KV 3000带的类似工具可以轻松实现,以备不时之需。

3)接着往下,“Ntldr is missing”!怎么办?

诊断:这个好办,用你的启动软盘启动引导系统,再将系统加载文件Ntldr拷贝到系统盘的根目录即可。如是多重系统请拷贝的C盘根目录。

4)接下来的故障就五花八门了,但是万变不离其中,我们都知道此时系统应当读取Boot.ini文件确定要引导的系统位置,所以如果Boot.ini文件出了问题,最简单的办法就是复制启动盘中的Boot.ini到系统盘根目录。

5)如果此时硬件配置文件出了问题,我们可以从配置文件菜单中选择先前备份的原始配置文件引导系统,或按下L键调用LastKnowGood上次成功的配置引导系统。这一般可以解决相关的系统设置错误。

6)如果5也不能奏效,就试试看能不能进入安全模式,如果能登陆,那么我们可以利用硬件设备管理器排除相关的一些硬件冲突,此时一定要注意显示隐藏设备,它们很可能就是元凶,一定要仔细辨识这些隐藏设备,删除那些并不存在或已不用的驱动程序以避免冲突。利用控制面板中的添加删除程序,我们还可以尝试着删除掉那些有可能造成系统不稳定的程序。试试看导入以前备份的注册表文件,我们也可以借此修复不少不太严重的注册表损坏的故障。

7)如果安全模式也不能登陆,甚至出现蓝屏,那么很可能是系统内核不能顺利的初始化和加载,导致这类严重故障的原因多半是因为系统关键性文件丢失。我们先采用Windows光盘启动引导系统,运行安装程序,选择快速系统修复程序尝试修复系统;如果快速修复失败,程序会要求您使用紧急修复磁盘,使用您准备好的该磁盘再做一次尝试。

8)在进行故障诊断中,我们还可以参考表四Boot.ini文件中的一些开关选项,采用修改好的Boot.ini文件定制引导系统,以便更加准确的定位相关的故障。

9)登陆过程中,我们还可能碰到各式各样的软件故障,这些虽然不是致命的但也常常令人心烦,请您尝试着辨识这些软件或服务,在开始—〉程序—〉启动菜单中,或注册表编辑器中的

HKEY_LOCAL_MACHINE或是HKEY_CURRENT_USER目录树的SOFEWARE/Microsoft/Windows/CurrentVersion/Run分支中我们可以查看到自行启动的程序,删除相关键,可以关闭自启动那些可疑的应用程序。利用控制面板—〉管理工具—〉计算机管理中的事件查看器中我们也可以得到不少关于故障原因的提示,如果是系统加载的的服务出了故障,请在计算机管理—〉服务中将那些相关的服务项设置成手动启动,尝试重新运行相关软件的安装或卸载程序修复类似错误。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息