天天看点

windows7引导故障的解决修复mbr

windows7

的启动过程的常识电脑加电后首先是启动BIOS程序BIOS自检完毕后找到硬盘上的主引导记录MBRMBR读取DPT分区表从中找出活动

的主分区然后读取

活动主分区的PBR分区引导记录也叫dbr究竟该叫什么网络上争论未休我们姑且叫它pbr吧PBR再搜寻分区内的启动管理器文件

BOOTMGR在BOOTMGR被找到后控制权就交给了BOOTMGR。BOOTMGR读取ootcd文件BCD=Boot

Configuration Data

,也就是“启动配置数据”简单地说windwows7下的bcd文件就相当于xp下的boot.ini文件如果存在着多个操作系统并且选择操作系

统的等待时间不为0的话这时就会在显示器上显示操作系统的选择界面。在我们选择启动WINDOWS7后BOOTMGR就会去启动盘寻找

WINDOWSsystem32winload.exe然后通过winload.exe加载windows7内核从而启动整个windows7系

统。

   可以把这个过程简单地概括为BIOS-->MBR-->DPT-->pbr-->

Bootmgr-->bcd-->Winload.exe-->内核加载

-->整个windows7系统本文就来说一说MBR-->DPT-->pbr-->

Bootmgr-->bcd这一段可能出现的故障的解决。mbr出现问题主要是mbr代码被改写因为被改写的代码不同所以出错信息也各不相

同。比如我们装了windows7与ubuntu双系

统ubuntu改写了mbr在我们把ubuntu所在的分区格式化后既进不了windows7也进不了ubuntu开机的时候会出现如图的错误

提示

windows7引导故障的解决修复mbr

一解决的办法就是重写mbr。对于重写mbr我们所熟知的是在dos下用fdisk /mbr命令进行重写。fdisk

/mbr所重写的mbr与xp是兼容的但是与windows7已经不那么兼容了。实践表明用fdisk

/mbr命令重写windows7的mbr后需要重建bcd否则不能正常启动windows7。有网友指出这里面的原因是fdisk

/mbr命令改写了mbr中的硬盘签名。一般的分区工具都是可以重写mbr的比如diskgenius它所重写的mbr与windows7是兼容的。

也可以用bootrec /fixmbr命令重写。要运行 Bootrec.exe 工具必须启动 Windows

RE。为此请按照下列步骤操作插入windows

7安装光盘从光盘启动电脑在光盘启动完成后按下shift+f10键调出cmd命令提示符。在cmd命令提示符中输入bootrec

/fixmbr回车。这样也就重写了mbr。

windows7引导故障的解决修复mbr

图二

区表存在问题对于这个问题限于篇幅不做详细探讨。系统盘不是活动的主分区这种情形只要用分区工具比如diskgenius)把系统盘设为活动的

主分区即可。pbr出现问题主要是pbr代码被改写因为被改写的代码不同所以出错信息也不相同。比如WINDOWS7系统的活动分区却被写入了适

合于XP的 pbr这样开机的时候就会出现如图的提示

windows7引导故障的解决修复mbr

图三

单的解决办法就是用bootrec

/fixboot命令重写pbr:插入windows7安装光盘从光盘启动在光盘启动完成后按下shift+f10键调出cmd命令提示符。在命

令提示符中输入bootrec

/fixboot回车。这样也就重建了活动分区的pbr。这里面还有一个常用的命令也要提一下这就是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这是必须要注意的。实践表明把一个硬盘的mbr清零然后运行windows7的bootsect命令确实可以发现

mbr被恢复正常。这也就表明了windows7的bootsect命令的确能够重写mbr。另外bootsect命令也可以重写xp的mbr和

pbr而这也是bootrec命令所做不到的。xp的恢复控制台用fixmbr命令改写mbr,用 fixboot命令改写pbr。

果是引导文件的问题一般可以用bcdboot命令重新写入引导文件插入windows7安装光盘从光盘启动在光盘启动完成后按下

shift+f10键调出cmd命令提示符。在命令提示符中输入bcdboot x:windows /s

x:注意这前一个x:是windows7的windows文件夹所在的盘一般是c:如果你的不是c盘请改为对应的盘符。这后一个x:是活动主分区

的盘 符所在一般也是c盘。所以这个命令一般的写法是bcdboot c:windows /s c:但需要注意在windows

re环境下所看到的盘符与你在windows7下所看到的盘符未必一样。所以需要首先用dir /a命令确认各盘是否正确。比如cd /d c:dir

/a这两个命令的作用是首先进入c:盘的根目录然后显示c盘根目录下的所有文件和文件夹根据所显示的文件或者文件夹可以判断这个盘具体是你在

windows7下所看到的哪一个盘。windows7的引导文件主要是bootmgr和boot文件夹里面的文件而boot文件夹里面的文件主要是

bcd文件。bcdboot命令会在指定

的分区内重新写入全部windows7的引导文件。如果只是bcd文件有问题则可以用bootrec命令重建bcd:插入windows7安装光盘从

光盘启动在光盘启动完成后按下shift+f10键调出cmd命令提示符。在命令提示符中输入bootrec

/RebuildBcd  这个命令如果搜到没有写入bcd的windows7或者vista的操作系统会提示你是否写入按提示输入Y也就会写入了

的。或者用bcdedit命令手动改写bcd但操作要复杂得多。具体案例分析案例一怪事系统盘不是活动的主分区在网上看到一则求

助windows7系统运行正常只是在磁盘管理中所看到的则是系统盘不是活动的主分区。

windows7引导故障的解决修复mbr

图四

们在安装了一键还原精灵装机版后在开机的时候按下F11键可以启动一键还原程序。但我们在格式化系统盘后在开机的时候仍是可以这样操作的。而所谓的

pbr是高级格式化的时候产生的。这表明了一键还原精灵的启动代码不是写入了活动分区的pbr如果是的话在格式化的时候已经被清除了而是写入了

MBR。通过在MBR中设定首先读取一键还原精灵的隐藏分区然后才读取活动的主分区。那么现在我们所遇到的这种情形是不是也通过改写mbr而指向特定

的分区假设mbr没有问题那么问题就可能出在pbr也就是所谓的dbr),win7的pbr中写入的代码应该是去找bootmgr但如果这个代码

中规定了

要找的是另外的一个特殊的文件而再通过这个文件去启动另一个分区中的bootmgr这样就能实现把另一个不是活动的主分区变为系统盘的目的。通过上面

的分析我们可以得到结论问题不是出在mbr,就是出在pbr解决的办法就是先试着重建mbr如果不能解决那就可以肯定问题出在pbr

只要重建pbr就能解决问题的。

于是首先重建mbr问题依旧然后再重建pbr问题果然得到解决。案例二开机

的时候出现BOOTMGR is missingpress ctrl+alt+del to

restart.翻译成汉语就是bootmgr缺失按Ctrl + Alt +

Del重新启动这是很常见的故障。既然是bootmgr缺失我们一般只要用bcdboot命令重建引导文件即可。这种情形产生的原因一般可能

有bootmgr文件确实没有了这是最为常见的。一种则是由磁盘错误导致的这种情形下在winpe下运行一下 chkdsk

/f命令也可能解决。有朋友使用 Diskeeper

对MFT碎片进行整理开机的时候也出现了这个提示。估计可能是用DISKEEPER进行的MFT磁盘整理后这或者是diskeeper的一个bug

因而不建议用diskeeper进行mft碎片整理。一位网友因为好奇。把C盘设成了活动的active partition 。

这样设置活动的对计算机点右键-管理-硬盘管理。右键点C盘设置为活动的。靠。怎么回事啊。重启后居然无法启动显示bootmgr is

missingCtrl+Alt+Delete to

restart。然后还是如此。这是从网上找到的一个案例分析可以得出结论。他所装的windows7应该存在着一个隐藏的“系统保留”分区这个隐藏

的系统保留分区才是真正的活动主

分区而他的c盘则应该不是活动的。他把c盘设为活动这也就意味着取消了“系统保留”分区的活动状态。但引导文件是在“系统保留”分区而不是在c

盘c盘变成了活动的主分区mbr就会启动c盘的pbr而c盘的pbr又会去c盘找bootmgr,但c盘没有bootmgr所以出错也就是必然的

了。解决的办法其实只要简单地再把系统保留分区设为活动即可。这位朋友制造了问题但好象并没能最后解决问题。真所谓会者不难难者不会。案例三开机的

时候出现BOOTMGR is compressedPress Ctrl+Alt+Del to

restart翻译成汉语就是bootmgr被压缩按Ctrl + Alt +

Del重新启动这种情形产生的原因是因为对系统盘进行了压缩。奇怪的是对于这种情形我们用bcdboot命令重建引导文件却并不能解决。但是我们可

以运行命令compact /u /a /f /i /s

c:*这样可以使得问题得到解决。compact程序位于windowssystem32文件夹下所以我们要先用CD命令进入windows

system32目录。这里是假设c:盘是bootmgr所在的盘如果不是要改为对应的盘符。网上有朋友用这个命令的时候并没有解决问题原因则在

于这位朋友所运行的命令是compact /u /a /f /i /s

c:没有后面这个所以命令并没有实现运行者的目的。从命令本身所提供的帮助说明来看这个似乎是没有必要的但实际操作表明这个是必须的。这个

命令会把已经压缩的C盘文件完全解压真所谓解铃还須系铃人。注意只运行命令compact /u /a /f /i

c:ootmgr并不能解决问题。有网友发现运行“Bootrec.exe /fixmbr、Bootrec

/fixboot"然后重启这样可以解决问题。测试表明其实只需要运行Bootrec

/fixboot这一个命令即可。这是另类的解决的办法。猜想可能是对驱动压缩后PBR中的BPB表并没有随之修改所以BPB表中所记录的分区信息

与实际的分区信息不一致。运行Bootrec

/fixboot命令后重写了bpb这样就使得二者变为了一致。实践表明用bootsect命令也能实现对这个问题的解决。有网友发贴说是装了xp

与vista双系统启动vista系统出现了BOOTMGR is compressed

于是他在xp下取消了系统盘的压缩状态。但这位网友的话未必可信因为如果ntldr也被压缩了的话则xp启动的时候会出现ntldr is

compressedPress Ctrl+Alt+Del to

restart除非这位朋友只压缩了bootmgr而没有压缩ntldr,但这一般不太可能。这种压缩一般是对整个盘进行压缩的时候产生的如果压缩指

定文件的话一

般不会有人去压缩bootmgr和ntldr的。实践表明在windows7下即便指定对整个的系统盘进行压缩一般也不能压缩bootmgr的会

提示拒绝访问但是在开机的时候仍会出现出错提示bootmgr is compressed

案例四先装的

windows7后装的linux,在linux系统出问题后既进不了linux,也进不了windows7这里面的原因是mbr和活动分区

的pbr被改写。只要重建mbr和活动分区的pbr也就可以进入windows7了。最简单的办法是用bootsect命令解决bootsect

/nt60 sys /mbr

案例五先装的windows7后装的xp,没有了windows7的启动项

这个需要三步解决问题

一、用bcdboot命令重建windows7的引导文件。

二、用bootsect命令恢复windows7的mbr和pbr

三、进入windows7后用bcdedit命令添加xp的启动项

bcdedit /?      

继续阅读