您的位置:首页 > 其它

xp与window7启动过程与故障分析

2012-12-18 23:45 323 查看
一、 XP启动

第一步、电脑开机时,会首先运行POST程序,POST将检测系统的总内存以及其他硬件设备的状况,同时检测BIOS参数,找到启动盘。

注:如果无法找到启动盘或启动盘设置不正确,则会提示“boot failure - insert system diskette.”

第二步、然后将启动磁盘第一个物理扇区(0头0道1扇区,也就是MBR)加载到内存,然后检查扇区尾部标志是否等于0x55aa.若不等于则转去尝试其它启动盘。如果没有其他启动介质,则显示 “no rom basic system halted”,然后死机。

注:没有再硬盘或软盘上找到引导扇区,只好企图运行ROM BASIC,而现在的兼容机基本上都没有安装ROM BASIC程序,故报此错误。

第三步、成功加载硬盘主引导记录并运行,主引导记录会在DPT中查找活动分区的起始位置(一盘为C盘)。

注:如果此时无法找到活动分区,或分区表结构错误,则可能会提示,分区表错误。“Invalid partition table”

第四步、接着活动分区的引导扇区(DBR)被加载并执行,检查引导扇区尾部是否等于0x55aa,若不等于则显示 “Missing Operating System”,然后停止,或尝试软盘启动。

注:DBR是操作系统可以直接访问的第一个扇区,由格式化产生,DBR也为一个扇区,512字节,扇区尾部标志是0x55aa,如没有这个标志,一般认为不是系统盘,这时会提示 “Missing Operating System”或“error loading operating system”、“non-system disk or disk error, replace disk and press a key to reboot”等提示。
BDR包括一个引导程序(PBR)和一个称为BPB的本分区参数记录表。其引导程序加载后会在根目录中寻找系统文件NTLDR文件并将控制权给该文件。如果出错时会提示:ntlcdr is missing

第五步、引导扇区的引导程序加载并初始化NTLDR文件,将启动控制权交给NTLDR文件,后期也会进行一系列的工作,如加载硬件配置、设备的驱动程序以及需要加载的服务等。

注:启动过程序中NTDETECT.COM文件将会收集计算机中硬件信息列表,然后将列表返回到NTLDR,因此启动过程中NTLDR与NTDETECT.COM文件不可缺少。





以下为系统盘下(C盘)XP下的引导程序文件:





二、故障处理:

修复MBR:
1、DOS命令:Fdisk/mbr(使用矮人DOS工具等)
2、在PE环境下,使用磁盘分区管理winpm,--硬盘--更新MBR。
3、在PE环境下,使用磁盘管理工具,Diskgenius,选择工具,重写主引导记录。
通过以上方法,能覆盖引导记录的代码区,但不重建或修复分区表。因此只适用于主引导记录出错时的情况。不要担心会出现数据丢失。

二、修复分区表
1、在PE环境下,使用磁盘管理工具,Diskgenius,选择工具--重建分区,待分区找到后再
选择工具--重写主引导记录。即可。
实在不行,就先查找分区,再将数据转移再说,详见我的愽客其它文章。

三、修复DBR
打开磁盘时,提示磁盘未格式化(另外分区表错误有时也会出现此提示)
修复方法:
1、 使用winhex软件恢复DBR,在菜单中选择启用扇区(模板),--恢复问题分区的DBR。
2、 重新系统。

四、NTLDR损坏或丢失,即在Recovery Console或其他系统下,把系统的安装光盘中i386目录下的NTLDR、NTDETECT文件复制到系统分区(通常为C盘)中即可。
载地址:
http://ishare.iask.sina.com.cn/f/22232568.html?from=like
http://ishare.iask.sina.com.cn/f/14413772.html
测试了一下找一台正常的高版本的XP,将以上文件复制到故障电脑的C盘好像也可以,不用从光盘找这么麻烦。

五、系统分区没有被激活。
如果用于存放启动文件(包括BOOT.INI、NTLDR、NTDETECT.COM)的系统分区没有被激活而是激活了其他主分区,那么就会导致系统启动时找不到NTLDR文件或自动重启。
方法1、使硬盘管理工具如(比如diskgenius)把系统盘设为活动的主分区即可。
方法2:运行DOS命令:FIXBOOT(使用矮人DOS工具等)
可先尝试方法二。

六、磁盘数据区错误:
em disk.disk i/o error:表示硬盘物理上出错。
运行chkdsk c:/f(此处样例为C盘,其它磁盘可对应更改)

三、Window7的启动
[align=left]Wndows 7 中跟引导有关系的文件和位置说明:[/align]
Mbr和DPT :硬盘主引导记录和分区表(分区表中包括四部分用来记载四个主分区的物理位置),位于硬盘的第一个扇区,不属于任何系统分区。与XP相同。
Bootmgr : windows nt6 系列的引导管理器,位于主激活分区内,属于系统隐藏文件
PBR :分区引导代码
/boot/bcd: 相当于 xp 时代的 boot.ini

第一步、电脑开机时,会首先运行POST程序,POST将检测系统的总内存以及其他硬件设备的状况,同时检测BIOS参数,找到启动盘。
第二步、然后将启动磁盘第一个物理扇区(0头0道1扇区,也就是MBR)加载到内存。
第三步、加载硬盘主引导记录并运行,主引导记录会在DPT中查找活动分区的起始位置。
第四步、接着活动分区的引导扇区(DBR)被加载并执行。
[align=left]第五步、DBR中的引导程序(PBR)加载并运行,PBR 位于激活主分区的第一个扇区。xp 的PBR 写死的代码是去找NTLDR。而 VISTA 和Windows7 的PBR 里是找BOOTMGR,,被找到之后管理权就交到了BOOTMGR。[/align]
[align=left]第六步、Boot Manager 首先从 BCD 中读取 Boot Manager 菜单的语言版本信息,然后再调用 BOOTMGR 与相应语言的 BOOTMGR.EXE.MUI 组成相应语言的启动菜单。[/align]
[align=left]第七步、之后才会在显示器选择多操作系统的界面,当你选择了相应的操作系统BOOTMGR.就去寻找系统分区Windwos\System32 下的 Winload.exe加载操作系统内核,完成系统启动。[/align]
[align=left]注:如安装了多个操作系统,主分区、活动分区、系统分区的概念要分清,有时候系统区不一定是主分区或活动分区。[/align]
[align=left]硬盘能建四个主分区,但也只能有一个主分区能被设为活动分区,Windows XP以后的系统引导均是BIOS到0磁道上查找MBR主引导记录确定哪一个分区是活动分区,到活动分区上查找所选择引导的Windows系统文件在哪个分区,所以,把系统装在哪个分区都没有问题。例如:你现在的C盘有一个VISTA系统,想把WIN 7装D盘的话,升级安装程序会在活动分区C盘根目录下写一些文件,那些文件会指引启动程序找到Win 7所在分区即D盘,而不论D盘是一个主分区还是逻辑分区。[/align]

四、Window7启动故障处理


以下内容为转载(稍作了加工):
原文很具体详见:http://wenku.baidu.com/view/c22806c789eb172ded63b706.html

1、MBR修复
解决的办法就是重写mbr。对于重写mbr,我们所熟知的是在dos下用fdisk /mbr命令进行重写。fdisk /mbr所重写的mbr与xp是兼容的,但是,与windows7已经不那么兼容了。要运行 Bootrec.exe 工具,必须启动 Windows RE。为此,请按照下列步骤操作:
插入windows 7安装光盘,从光盘启动电脑,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在cmd命令提示符中输入:bootrec /fixmbr,回车。这样也就重写了mbr。

2、系统盘不是活动的主分区,这种情形只要用分区工具(比如diskgenius)把系统盘设为活动的主分区即可。

3、PBR出现问题,简单的解决办法就是用bootrec /fixboot命令重写pbr。
插入windows7安装光盘,从光盘启动,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在命令提示符中输入:bootrec /fixboot,回车。

这里面还有一个常用的命令也要提一下,这就是bootsect:
插入windows7安装光盘,从光盘启动,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在cmd命令提示符中输入:bootsect /nt60 sys /mbr
回车。这个命令会改写活动分区的pbr,并同时会改写mbr,使得mbr和pbr适合于windows7和vista。
bootsect.exe程序位于windows7安装光盘的boot目录下,可以把这个文件提取出来,在xp下的命令行可以运行这个程序,也可以在 winpe下的命令行运行这个程序,因而这个程序在使用时很方便。而bootrec.exe命令的使用就没这么方便了。所以BOOTSECT命令被应用得更为广泛一些。
另外有一个要点需要指出,vista的安装光盘里面的boot文件夹也存在着这个小工具,但vista的bootsect命令没有/mbr参数,因而它只能改写pbr,而不能改写mbr,这是必须要注意的。
另外,bootsect命令也可以重写xp的mbr和pbr,而这也是bootrec命令所做不到的。xp的恢复控制台用fixmbr命令改写mbr,用 fixboot命令改写pbr。

4、如果是引导文件的问题,一般可以用bcdboot命令重新写入引导文件:
插入windows7安装光盘,从光盘启动,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在命令提示符中输入:
bcdboot x:\windows /s x:
注意,这前一个x:是windows7的 windows文件夹所在的盘,一般是c:,如果你的不是c盘,请改为对应的盘符。这后一个x:是活动主分区的盘符所在,一般也是c盘。
windows7的引导文件主要是 bootmgr和boot文件夹里面的文件,而boot文件夹里面的文件主要是bcd文件。bcdboot命令会在指定的分区内重新写入全部windows7的引导文件。

5、如果只是bcd文件有问题,则可以用bootrec命令重建bcd:
插入windows7安装光盘,从光盘启动,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在命令提示符中输入:
bootrec /RebuildBcd 



 
6、开机的时候出现:
BOOTMGR is missing
press ctrl+alt+del to restart.




这是很常见的故障。既然是bootmgr缺失,我们一般只要用bcdboot命令重建引导文件即可。
这种情形产生的原因,一般可能有:bootmgr文件确实没有了,这是最为常见的。一种则是由磁盘错误导致的,这种情形下,在winpe下运行一下 chkdsk /f命令也可能解决。

7、开机的时候出现:
BOOTMGR is compressed
Press Ctrl+Alt+Del to restart
这种情形产生的原因是因为对系统盘进行了压缩。奇怪的是,对于这种情形,我们用bcdboot命令重建引导文件却并不能解决。
但是,我们可以运行命令:compact /u /a /f /i /s c:\*
这样可以使得问题得到解决。compact程序位于windows\system32文件夹下,所以我们要先用CD命令进入windows \system32目录。这里是假设c:盘是bootmgr所在的盘,如果不是,要改为对应的盘符。
网上有朋友用这个命令的时候并没有解决问题,原因则在于,这位朋友所运行的命令是:compact /u /a /f /i /s c:\
没有后面这个*,所以命令并没有实现运行者的目的。从命令本身所提供的帮助说明来看,这个*似乎是没有必要的,但实际操作表明,这个*是必须的。
这个命令会把已经压缩的C盘文件完全解压,真所谓解铃还须系铃人。
有网友发现,运行“Bootrec.exe /fixmbr、Bootrec /fixboot"然后重启,这样可以解决问题。测试表明,其实只需要运行Bootrec /fixboot这一个命令即可。


[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息