如何在Windows 10中重建BCD文件和主启动记录(MBR)?

时间:2020-01-09 10:46:40  来源:igfitidea点击:

现代Windows版本中的启动管理器使用BCD(启动配置数据)文件来启动计算机上安装的操作系统。该文件包含有关已安装的操作系统和引导参数的信息。如果BCD文件被删除或者损坏,则Windows无法正常启动。另外,如果硬盘上的Mater引导记录(MBR)损坏,我们将无法引导Windows。在本文中,我们将展示如何在Windows 10上手动重建启动配置(BCD)文件和修复MBR。

如果BCD文件丢失或者损坏,如果我们删除/格式化了带有系统保留标签(大小为500 MB)的单独磁盘分区或者特殊的OEM恢复分区,则用户在尝试引导时很可能会看到以下消息Windows 10:

电脑需要修复。启动配置数据文件缺少一些必需的信息

文件:\Boot\BCD
错误代码:0xc0000034

此外,该错误可能看起来像这样:

PC的启动配置数据丢失或者包含错误。

File:\boot\bcd

错误代码:0xc000000f

如果MBR损坏,则可能存在"找不到操作系统"错误。

如果错误文本指向winload.efi文件,请转到Windows 10中缺少Winload.efi的文章。

如何在Windows 10中自动修复Bootloader?

如果出现此错误,首先,尝试使用可从Windows恢复环境(Windows RE)启动的"启动修复模式"启动操作系统,以解决该问题。

提示。建议定期检查WinRE环境的运行状况,如果它不起作用,请使用如何在Windows 10中恢复WinRE一文中描述的方法进行恢复。

如果使用启动修复的自动修复没有帮助,请从Windows启动/安装磁盘或者在WinRE环境中启动计算机(修复计算机->故障排除->高级选项->命令提示符)。启动命令提示符并尝试创建一个新的BCD文件并从头开始更新MBR记录。

在此示例中,我将使用Windows 10安装盘。在BIOS设置中,将主启动设备更改为DVD驱动器或者USB闪存驱动器(取决于要从其启动计算机的设备)。从Windows安装镜像启动计算机,然后在语言选择屏幕上按Shift + F10。我们将看到一个命令提示符。

尝试使用以下命令自动还原BCD文件:

bootrec /RebuildBCD

重新启动计算机,然后检查Windows是否启动(不要忘记在BIOS中更改启动优先级设置)。如果不是,请再次从安装磁盘引导,然后启动命令提示符。

识别磁盘分区样式和驱动器号

非常重要。下面给出的所有说明适用于带有MBR分区表的标准BIOS计算机。对于基于UEFI的计算机,我们需要使用以下指南在带有EFI的Windows 10/8或者Windows 7中修复引导程序。重要。请记住分配的驱动器号,因为它们将在以后的命令中使用。

如何了解计算机是否具有BIOS或者UEFI?最简单的方法是检查安装Windows的磁盘分区表:GPT或者MBR。为此,请运行以下命令:

diskpart

然后列出可用磁盘:

list disk

如果磁盘上带有星号(

*

),然后在该磁盘上使用GPT分区表(这意味着我们有一台装有UEFI的计算机,我们需要使用上面链接中的文章来还原Windows Bootloader)。如果GPT列中没有星号,则说明磁盘上有MBR分区表,我们可以继续按照此说明进行操作。

接下来,我们需要确定计算机上的本地驱动器和卷(分配给它们的卷号很可能与我们在Windows中工作时看到的卷号不同)。使用diskpart可以更容易地做到这一点。运行以下命令:

diskpart list vol

我们将看到分区列表,分配给它们的驱动器号及其大小。在我们的例子中,计算机上有一个硬盘驱动器,上面有两个卷:

  • 具有500 MB大小的"系统保留"分区,并为其分配了驱动器号" C:"。默认情况下,BCD文件位于此小服务分区中(了解更多);
  • 大小为39 GB的" NTFS分区",并分配了字母" D:"。该分区包含已安装的Windows,程序和用户数据。

在Windows 10中修复主启动记录(MBR)

使用以下命令,很好地覆盖硬盘驱动器引导扇区上的"主引导记录",并添加到Windows 10引导加载程序的必要链接。

bootrec.exe /fixmbr bootsect.exe /nt60 all /force

如果找不到bootsect.exe命令,请尝试指定它的完整路径:

X:\boot\bootsect.exe /nt60 all /force

在继续之前,请尝试使用以下命令自动重新创建BCD引导程序配置(这是初学者最简单的方法):

bootrec /FixBoot

该命令在系统分区上重新创建引导扇区;

bootrec /ScanOs
bootrec /RebuildBcd

扫描所有磁盘并搜索已安装的Windows,然后将找到的副本添加到BCD引导加载程序配置中。

之后,重新启动计算机并检查Windows启动。如果操作系统无法启动,请按照以下说明进行操作。

如何在Windows 10上手动重建启动配置文件?

然后使用" BCDedit"命令,创建一个新的启动配置数据文件(假定我们没有BCD文件备份)。

在"系统保留"分区中删除旧的(损坏的)BCD文件,然后创建一个新的BCD文件:

del c:\boot\bcd

如果未将驱动器号分配给"系统保留"分区(默认情况下),则可以使用diskpart自己进行分配。运行:

diskpart

选择本地磁盘(在我的情况下,计算机上仅安装了一个硬盘,但是我们可以使用list disk命令列出本地磁盘):

select disk 0

上面的屏幕截图显示,系统保留分区称为卷1. 选择它:

select volume 1

分配一个驱动器号(我分配了一个字母C :,但是我们可以使用任何其他字母,在这种情况下,请通过以下命令更改路径):

assign letter C:
exit

创建一个空的临时文件bcd.tmp:

bcdedit /createstore c:\boot\bcd.tmp

为启动管理器(bootmgr)创建一个条目:

bcdedit.exe /store c:\boot\bcd.tmp /create {bootmgr} /d "Windows Boot Manager"

将设置从bcd.tmp导入到BCD:

bcdedit.exe /import c:\boot\bcd.tmp

指定引导管理器位于系统保留分区上(将字母C:分配给它):

bcdedit.exe /set {bootmgr} device partition=c:

配置超时以选择操作系统:

bcdedit.exe /timeout 10

删除临时文件:

del c:\boot\bcd.tmp

因此,我们有一个带有bootloader参数的文件。现在,我们必须添加有关已安装Windows的条目。

在BCD配置中为Windows 10创建一个新条目:

bcdedit.exe /create /d "Windows 10" /application osloader

该命令将返回此引导加载程序条目的唯一标识符(GUID)。

The entry {8a7f03d0-5338-11e7-b495-c7fffbb9ccfs} was successfully created.

指定默认情况下,bootmgr必须使用此条目(在超时后,该条目用于引导):

bcdedit /default {8a7f03d0-5338-11e7-b495-c7fffbb9ccfs}

现在,我们必须在新的引导加载程序条目中指定已安装的Windows 10副本的路径。我们已经在WinPE中看到字母" D:"已分配给Windows分区。在以下命令中使用该驱动器号:

bcdedit.exe /set {default}device partition=d:  
bcdedit.exe /set {default} osdevice partition=d:  
bcdedit.exe /set {default} path \Windows\system32\winload.exe  
bcdedit.exe /set {default} systemroot \Windows

使该引导记录在BCD中可见,因为默认情况下它是隐藏的:

bcdedit.exe /displayorder {default} /addlast

因此,我们重新创建了Windows 10引导程序和BCD文件,并将引导扇区固定在MBR上。现在,我们可以重新启动计算机,并确保Windows 10正常启动。