windows7引导故障的解决 mbr修复

时间:2019-10-05 23:07来源:计算机教程
关于 xp sp2 Fedora 6 双系统 用 xp 光盘启动 黑屏问题,和如何正确卸载双系统中的fedora问题,我曾遇到过,但是当时自己胡乱修复弄好了,没来得及把心得记下来,这次又碰到问题了,昨

  关于 xp sp2 Fedora 6 双系统 用 xp 光盘启动 黑屏问题,和如何正确卸载 双系统中的fedora问题,我曾遇到过,但是当时自己胡乱修复弄好了,没来得及把心得记下来,这次又碰到问题了,昨晚上没时间了。今天弄了一个半小时才搞定。不容易,记录下过程。

先让我们看一下windows7的启动过程的常识:
电脑加电后,首先是启动BIOS程序,BIOS自检完毕后,找到硬盘上的主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区,然后读取 活动主分区的PBR(分区引导记录,也叫dbr,究竟该叫什么,网络上争论未休,我们姑且叫它pbr吧),PBR再搜寻分区内的启动管理器文件 BOOTMGR,在BOOTMGR被找到后,控制权就交给了BOOTMGR。BOOTMGR读取bootbcd文件(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这一段可能出现的故障的解决。

  1问题描述: windows xp sp2 fedora 6 双系统。均工作正常,我想删除fedora。在网上查找删除的方法,大部分人说:先删除fedora的分区,或者格式化,然后用xp的启动盘的修复模式来修复分区表。但是在开机用 XP的光盘启动时,出现一行字(貌似提示检测硬件)之后就一直黑屏,硬盘灯常亮。用fdisk /mbr 尝试修复分区表,结果报错(具体的鸟语我忘了,大意是说找不到硬盘)。 找了一张番茄花园的启动盘,用PQ工具察看,显示分区表错误,无法操作。。 这问题简直让人疯掉,双系统都能正常引导,却报告找不到硬盘````我晕。

mbr出现问题,主要是mbr代码被改写,因为被改写的代码不同,所以出错信息也各不相同。比如我们装了windows7与ubuntu双系 统,ubuntu改写了mbr,在我们把ubuntu所在的分区格式化后,既进不了windows7,也进不了ubuntu,开机的时候会出现如图的错误 提示:
图片 1

  2 解决过程:先去baidu和google一顿狂搜。倒是在csdn上有人碰到过类似问题,不过他是fedora 3 xp。大体方法是用fedora的救援模式将 / /swap /boot 卸载什么的..然后我发现问题并不完全相同,起码人家能找到硬盘。

[图一]
解决的办法就是重写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。 图片 2

  又找了一张工具盘,启动后用里面的 深山红叶DOS工具箱,废话就不多说了,运行里面的diskgen 硬盘工具,把linux的分区都删除,重写一下mbr分区表(都是中文菜单,拿鼠标点就行,也不用我废话了吧)。删除分区后可以直接引导windows,但是呢,那个黑屏的问题依然没有解决。图片 3

[图二]

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

pbr出现问题,主要是pbr代码被改写,因为被改写的代码不同,所以出错信息也不相同。比如WINDOWS7系统的活动分区,却被写入了适合于XP的 pbr,这样开机的时候就会出现如图的提示: 图片 4

[图三]
简单的解决办法就是用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系统运行正常,只是在磁盘管理中所看到的则是:系统盘不是活动的主分区。 图片 5

[图四]
我们在安装了一键还原精灵装机版后,在开机的时候按下F11键可以启动一键还原程序。但我们在格式化系统盘后,在开机的时候仍是可以这样操作的。而所谓的 pbr是高级格式化的时候产生的。这表明了,一键还原精灵的启动代码不是写入了活动分区的pbr(如果是的话,在格式化的时候已经被清除了),而是写入了 MBR。通过在MBR中设定首先读取一键还原精灵的隐藏分区,然后才读取活动的主分区。那么,现在我们所遇到的这种情形是不是也通过改写mbr而指向特定 的分区?

编辑:计算机教程 本文来源:windows7引导故障的解决 mbr修复

关键词: