NT、2000、XP启动过程

来源:百度文库 编辑:神马文学网 时间:2024/04/29 12:44:20

1>,post过程开机自检:这是每个计算机的电源接通之后,必须要做的第一件事情.post 将检查硬件,是否有内存,是否有键盘以及scsi卡等等.虽然这是一个和操作系统无关的过程,但是他却是保证系统正常启动的第一个步骤.

2>,一旦自检完成,计算即将查找启动设备,并将MBR mainbootrecord(主引导纪录)调入内存.

典型故障:开机以后蓝屏,"operating system not found",提示"invalidpartitiontable"

这些错误信息的出现是因为Mbr遭到破坏;

解决办法:用系统启动盘(软盘或者安装光盘)启动计算机,然后执行下面的命令:

Fdisk.exe/mbr
Fdisk/mbr这个命令可以在硬盘上无条件地写入主引导程序和分区表,并且不对dos引导扇区Dbr (dos boot record),文件分配表和目录区进行初始化;也就是说,执行fdisk/mbr后,可在不破坏硬盘上原有数据信息的情况下,重建主引导程序和分区表;他对单纯感染嵌入式引导区病毒的硬盘,可以起到清除病毒的作用; Fdisk是msdos,windows95/98/me中的标准命令,windowsNT/2k/XP用户,可以采用下面的
办法修复主引导纪录:

启动系统故障恢复控制台,在命令提示符下面输入fixmbr,在出现警告信息的时候按Y键,最后输入exit退出故障回复控制台;

3>,计算即将查找活动分区,引导扇区,并将其装入内存;

4>,开始调用Ntldr,Ntldr是系统加载器,他是第二阶段的关键部分;


Plus:Mbr,或者说(masterbootrecord)的缩写,中文意思就是主引导纪录,硬盘的0磁道第一扇区称为MBR,他的大小是512字节,而这个区域可以分为两个部分:i,preboot区(预启动区),占446字节:ii,第二部分是partitiontable区(分区表)占64个字节,该区相当于一个小程序,作用是判断那个分区被标记为活动分区,然后去读取那个分区的启动区,并运行该区中的代码.最后两个字节是一个标识符,用来表明这个扇区的结束,其二进制数值为0x55AA.

[启动阶段]

1>,当Ntldr开始运行之后,它首先将处理器的实模式改为32位平滑内存模式;

解释:实模式和32位平滑内存模式:
两者都是电脑系统的寻址方式.实模式指的就是16位模式,运行比较稳定.平滑内存模式则在寻址范围和速度上有明显的优势.

2>,启动文件系统(例如fat,ntfs),以便从磁盘上访问文件;

3>,随后,Ntldr将访问第一个文件:boot.ini文件,并且根据文件的内容在屏幕上显示启动菜单;

4>,如果用户选择的不是win2k(或者winXp)操作系统,那么Ntldr将调用bootsect.dos, 将控制权交给她,并且启动所操作的系统,否则,Ntldr将运行Ntdetect.com文件;


[典型故障:]

1,当妳选择了其他操作系统之后,出现了错误信息:I/O error accessing bootsect or  file Muti(0)disk(0)rdisk(0)partiton(1)//BOOTSS

这种情况是由于找不到启动分区造成的,一般出现在安装了多个操作系统的计算机上. 当妳在已有的操作系统例如win98上安装win2k的时候,安装程序会将原有的启动分区( 一般为0分区)保存成bootsect.dos,然后安装程序会将win2k的启动分区放到0分区上. 因此,bootsect.dos是在启动的过程中创建的,无法像其他丢失的文件一样可以从光盘上面复制过来,那么,如何解决这种情况? 为原来的操作系统重新生成一个启动分区.例如:对于win98,只需要用win98的启动盘启动系统,然后在命令提示符下输入sysc:, 创建bootsect.dos:

a,将win2k安装光盘放入光驱,启动计算机;

b,在出现欢迎屏幕后,按两次R键;

c,当安装程序运行到修复任务选想的时候,选择"检查启动扇区"选项,然后将光条移动到"继续(执行所选任务)"上按回车;

d,跟随安装向导继续,最后会看见"安装程序已完成修复"的提示;

e,Reset;

5>,Ntdetect.com将收集计算机硬件方面的信息,这些硬件包括:计算机ID号,适配卡类型,显卡,键盘以及鼠标,软盘,com口和并口等等.一旦信息收集完成,Ntdetect.com会将信息传递给Ntldr,并将信息写入注册表中的hkeylocalmachine/hardware分支; 可以看到:启动阶段调用了3个非常重要的文件:Ntdetect.com,boot.ini和Bootsect.dos.而这个过程也是安装了多个操作系统经常出现问题的地方;

[典型故障:]计算机启动时:
没有出现启动菜单;

这种情况是将显示操作系统列表的时间设为0秒引起的.解决的办法是,我的电脑,属性, 高级,启动故障恢复,显示操作系统列表...(修改时间数值),我的解决方法是按F8键进入,选择操作系统列表。

[典型故障:]当计算机启动的时候出现:
Ntldr is missing,press any key to restart...

Ntldr文件丢失,出现错误会造成这个故障,其它类似的故障还有,Ntdetect.comismissing..等等,利用下面的解决办法:

利用win2k安装光盘,这个文件存放在系统安装光盘的i386目录下面,因此,只要将其复制到硬盘就可以了;

a,放入win2k光盘,启动win2k安装;

b,出现欢迎界面的时候,按R;

c,win2k修复选项界面中,按R;

d,当提示选择修复选项的时候,按M;(手动修复)

e,选择验证win2k系统文件;

f,选择继续(执行所选任务),然后回车,

g,出现紧急修复盘界面:如果你有紧急修复盘的话,插入紧急修复盘,根据提示修复安装,reset;

h,如果没有紧急修复盘,按L,用光盘修复;

使用控制台:输入map,记下win2k安装光盘所在的光驱盘符L;
输入:copy L:/i386/ntldr c:/
提示是否覆盖,Y;
输入exit重新启动;

[内核调用阶段]

1,在这个阶段,Ntldr将调用Ntoskrnl.exe,并将由Ntdetect.com收集的硬件信息传递给它,同时被调用的还有hal.dll文件.如果你有多个硬件配置文件,当运行到这一步的时候,你会在屏幕上看到要求选择硬件配置文件的信息.另外,Ntldr也将从注册表中调用所有启动值为0x0的设备驱动程序.如果你在boot.ini文件中有"/sos"参数,一般在"/fastdetect"后面,那么妳将看到调用设备列表;

[典型故障]


启动的时候出现错误信息:"Ntoskrnl.exe missing or currupt on bootup"  (ntoskrnl.exe丢失或者损坏)

如果出现下列情形之一,会出现ntoskrnl.exe错误出现:

新增加了一个硬盘或者改变了原有的分区,例如:删除了原来的一个分区或者将原来的两个分区合并,都可能导致boot.ini文件中的[bootloader]部分的default值丢失或者无效,从而在启动过程中无法找到启动所需的文件;

Ntoskrnl.exe文件被删除或者被损坏;

[解决办法:]
使用启动盘启动操作系统,编辑boot.ini文件,检察与下面一行类似的命令中是否有错误:

muti(0)disk(0)rdisk(0)partition(1) /WINNT="microsoftwindows2000professional"/fastdetect

这一行表示在第一个ide硬盘上rdisk(0)的第一个分区上partition(1)装有win2k,大家可以根据这个规律来查找自己的boot.ini文件中的数值是否正确;

如果没有发现错误,请将win2k安装光盘放入光驱,然后再命令行输入:
expand x:/i386/ntoskrnl.ex_ c:/ntoskrnl.exe
回车,提示文件已经释放,取出光盘,reset;

[典型故障:]Hal.dllismissing...

这个故障是因为缺少hal.dll文件引起的,解决的办法是:

a,启动故障回复控制台;

b,输入:expand x:/i386/hal.dl_ c:/windows/system32/hal.dll

c,输入exit,回车;

加载内核阶段,ntldr加载称为WindowsXP内核的ntokrnl.exe;系统加载了WindowsXP内核但是没有将它初始化,接着ntldr加载硬件抽象层(HAL,hal.dll),然后,系统继续加载HKEY_LOCAL_MACHINE/system键,NTLDR读取select键来决定哪一个ControlSet将被加载;控制集中包含设备的驱动程序以及需要加载的服务,NTLDR加载HKEY_LOCAL_MACHINE/system/service/...下start键值为0的最底层设备驱动。当作为ControlSet的镜像的CurrentControlSet被加载时,ntldr传递控制给内核,初始化内核
阶段就开始了;

2,内核初始化.这一步将对内核以及上一步中调用的硬件驱动程序进行初始化.

初始化过程:


在初始化内核阶段开始的时候,彩色的WindowsXP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的3项任务;

1>,内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE/HARDWARE键;

2>,内核通过引用HKEY_LOCAL_MACHINE/system/Current的默认值复制ControlSet来创建了CloneControlSet,CloneControlSet配置是计算机数据的备份,不包括启动中的改
变,也不会被修改;

3>,系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE/system/CurrentControlSet/service/...下start键值为1的设备驱动程序,这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理....

值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGoodControlSet重新启动,如果使用LastKnownGoodControlSet启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;

值为2时错误情况为严重,系统启动失败并且以LastKnownGoodControlSet重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;

当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;

当值是0的时候忽略,系统不会显示任何错误信息而继续运行;



plus:Hal.dll,是英文hardwareabstractionlayer,硬件抽象层的缩写,这种技术提供了驱动程序与硬件之间的借口,可以防止应用程序直接访问计算机系统内存,cpu以及硬件设备(如声卡和显卡),从而使系统可以跨越多种硬件平台运行;

[服务调用阶段]

这个阶段将启动会话管理器(smss.exe),会话管理起将读取必须调用的程序列表,在注册表的bootExecute项中,然后设置内存分页并且启动win32子系统; SessionManager启动了WindowsXP高级子系统以及服务,SessionManager启动控制所有输入,输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕


[win32子系统启动阶段]

一旦win32子系统启动,会自动运行winlogon.exe,同时移动本地安全管理(lsass.exe) 并且显示登陆对话框.然后回运行服务控制器SCreg.exe,服务控制器会检察注册表中启动值为0x2的服务项目,然后调用这些服务,值为0x3的服务表示需要手动启动,值为0x4 的服务表示禁用;

ServiceController最后执行以及扫描

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Servives

来检查是否还有服务需要加载,ServiceController查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载;

[用户登陆阶段]

最后就是用户登陆阶段了,一旦用户可以登陆进系统,那么也就表明整个启动过程已经结束,成功登陆之后,当前设置也被自动保存为"最后一次正确配置lastknowngood"以备以后使用;


Winlogon.exe启动Local Security Authority,同时WindowsXP Professional欢迎屏幕,或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序;

提示输入有效的用户名或密码;