当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

作者:精品下载站 日期:2024-12-14 23:26:05 浏览:19 分类:玩电脑

如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序


在本文中,我们将学习如何在使用 UEFI 而不是经典 BIOS 和 GPT 磁盘分区表(而不是 MBR)的现代计算机上修复 Windows 引导加载程序。安装第二个操作系统(在双启动配置中)、文件系统损坏、Windows 恢复期间的错误操作、删除隐藏分区上的某些数据、恶意软件(病毒、勒索软件等)以及其他一些原因可能会导致 Windows 引导加载程序损坏。

本文包含在本机(不兼容)UEFI 模式下运行的计算机上修复 Windows 11/10/8.1 和 Windows Server 2022/2019/2016/2012R2 中损坏或删除的引导加载程序的分步指南。您可以使用此工具来修复 Windows 引导加载程序的二进制文件和引导加载程序配置 \EFI\Microsoft\Boot\BCD 文件(如果 Windows 由于 BCD 启动配置文件丢失或损坏而无法启动)。

Windows 启动错误:启动配置数据丢失 (EFI\Microsoft\Boot\BCD)

如果 Windows EFI 引导加载程序损坏,以本机模式安装 Windows 的 UEFI 计算机将无法启动。当尝试从 EFI 引导加载程序损坏或丢失的磁盘引导时,会出现以下 BSOD(蓝屏死机)错误:

The boot configuration data for your PC is missing or contains errors.
File :\EFI\Microsoft\Boot\BCD
Error code: 0xc000000f

或者 :

Error code: 0xc000014c

[玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

此错误表明 Windows 引导加载程序配置(引导配置数据,BCD)已损坏甚至完全删除。如果您尝试使用以下命令修复 UEFI 计算机上的引导加载程序

bcdedit

工具,您将收到一个错误:

The boot configuration data store could not be found.
The requested system device cannot be found.

如果 Windows 10/11 以本机 UEFI 模式安装在 GPT 磁盘上,则 Windows EFI 引导加载程序(Windows 引导管理器)会将引导管理器和 BCD 配置存储在单独的隐藏 EFI 卷(FAT32 文件系统大小为 100 MB)上。 bcdedit 工具看不到此 EFI 分区,并且无法管理其上的引导加载程序配置。

如果您在启动计算机时只看到黑屏并显示“未找到操作系统”消息,则 Windows 引导加载程序可能已被完全删除。按照链接上的说明进行操作。

使用 WinRE 自动修复 Windows 引导加载程序

在这种情况下,Windows 恢复环境 (WinRE) 中使用的 EFI 引导加载程序的自动修复过程通常毫无用处。但它仍然值得一试:

  1. 从恢复光盘或 Windows 10/11 安装介质启动您的设备;

  2. 点击安装界面的恢复系统

  3. 然后选择故障排除 -> 启动修复并选择您要尝试修复其引导加载程序的操作系统;

    [玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

  4. 但结果很可能是否定的:

    Automatic Repair couldn’t repair your PC

    [玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

使用 BCDBoot 手动修复 Windows 中的 EFI Bootloader

让我们继续在 UEFI 计算机上手动修复 EFI Windows 引导加载程序的过程。

要修复引导加载程序配置 (BCD),您必须从原始 Windows 安装介质引导(也可以使用恢复磁盘或特殊的 UEFI 可引导 USB 闪存驱动器)。启动进入恢复环境后,您需要打开命令行控制台:选择系统还原->故障排除->命令提示符)。

即使您手头只有 Windows 安装介质,也可以运行命令提示符。为此,只需按组合键即可

Shift + F10

(或者

Shift + Fn + F10

在某些笔记本电脑型号上)在第一个 Windows 设置屏幕上(选择语言和键盘布局时)。

[玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

在打开的命令提示符中,运行磁盘管理工具:

diskpart

显示计算机上的驱动器列表:

list disk

在此阶段,确定安装 Windows 的磁盘上的分区表类型非常重要:MBRGPT。要点是 EFI 引导加载程序仅在具有 GPT 分区表的磁盘上使用。

如果星号 (

*

)在Gpt列中,则磁盘上使用GPT分区表。如果没有,则使用 MBR。

[玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

如果您的磁盘使用 GPT 分区表,请按照说明中的以下步骤修复 Windows EFI 引导加载程序。

如果您的磁盘上有 MBR 分区表,则本指南不适用于您的计算机。您的计算机很可能在 UEFI 设置中启用了 BIOS 或传统/兼容性支持模式 (CSM) 选项。

在 MBR 磁盘上,Windows 引导加载程序存储在单独的系统保留分区上,而不是 EFI 分区上(无论如何,在修复 Windows 引导加载程序之前,请勿将 MBR 分区表转换为 GPT !!)。使用另一指南在具有 MBR(主引导记录)磁盘的 BIOS 计算机上恢复 BCD 引导加载程序。

选择Windows安装所在的驱动器(如果系统中只有一个硬盘,则其索引应为0):

sel disk 0

显示该磁盘上的分区和卷的列表:

list partition
list volume

[玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

在此示例中,您可以看到 EFI 启动分区具有 分区 2 索引(也称为带有 隐藏 标签的卷 5)。识别 EFI 分区的最简单方法是通过 FAT32 文件系统和 100 MB 大小(这是 Windows 计算机 EFI 分区的标准最小大小;在极少数情况下,分区大小可能会有所不同)。最常用的标签是系统EFI或ESP/EFI系统分区)。

在我们的示例中,安装 Windows 的主分区具有卷 2 索引,采用 NTFS 文件系统格式化,并分配驱动器号 C:。

dir C:\

确保该驱动器包含

Windows

,

Program Files

,

Users

,以及其他目录。

[玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

如果这些目录丢失,则您的 Windows 驱动器具有不同的驱动器号。检查分配了不同驱动器盘符的驱动器的内容。

记下分配给 Windows 分区的驱动器号。稍后我们将使用它作为 bcdboot 命令的参数之一。

分区表还必须包含 Windows 10/11 中 16 MB 的 MSR(Microsoft 系统保留)分区(Windows 8.1 中 128 MB)。

如果您没有单独的 EFI 或 MSR 分区,您可以手动重新创建它们。查看文章恢复已删除的 EFI 和 MSR 系统分区。

将驱动器号 K: 分配给隐藏的 EFI 卷:

select volume 5
assign letter K:

应显示一条消息,表明驱动器盘符已成功分配给 EFI 分区:

DiskPart is successfully assigned the drive letter or mount point.

关闭磁盘部分:

exit

转到隐藏卷上的引导加载程序目录:

cd /d K:\efi\microsoft\boot\

在本例中,K: 是分配给上面的 EFI 分区的驱动器号。如果 \EFI\Microsoft\Boot\ 目录丢失(错误系统找不到指定的路径),请尝试以下命令:

cd /d K:\Boot\

或者

cd /d K:\ESD\Windows\EFI\Microsoft\Boot\

此时,许多指南建议运行以下命令,这应该覆盖分区引导记录,找到已安装的Windows,并将它们添加到BCD:


bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd

甚至:

bootrec /FixMbr

(为GPT磁盘准备MBR记录看起来很奇怪)

您只能对基于 MBR 的磁盘使用所有这些命令。如果您的计算机以 UEFI 模式启动,那么它肯定使用 GPT 分区表(如我们的例子)。因此,当你跑步时

bootrec

命令,你会看到一个错误:

access is denied

您需要使用BCDBoot.exe工具来恢复引导加载程序文件,并通过从Windows分区上的系统目录复制它们来修复EFI分区上的引导记录。使用以下命令重新创建 BCD 引导加载程序配置

%WINDIR%\System32\Config\BCD-Template

文件。

使用attrib命令从BCD文件中删除隐藏、只读和系统属性:

attrib BCD -s -h -r

通过重命名当前的 BCD 配置文件来删除它(这将保留旧的启动配置作为备份):

ren BCD BCD.bak

使用 bcdboot 工具,您需要将 UEFI 启动环境的关键文件从系统目录复制到 EFI 启动分区,并重新创建 BCD 启动加载程序配置文件:

bcdboot C:\Windows /l en-us /s k: /f ALL
  • C:\Windows - 磁盘上 Windows 系统根目录的路径(这是安装 Windows 的磁盘,我们之前使用 diskpart 命令确定了它);

  • f ALL - 表示您需要复制 Windows 启动环境文件,包括 UEFI 和 BIOS 计算机的启动环境文件(理论上能够在 UEFI 和 BIOS 计算机上启动)。要仅复制 EFI 引导加载程序,请使用 /f UEFI 命令;

  • /l en-us — 指定初始化 BCD 存储时使用的系统区域设置。默认情况下,使用 en-us - 英语(美国);

  • /s K:——将bootloader EFI文件复制到指定分区;

  • /c - 这是 Windows 10 中的新 BCDBoot 选项,允许您覆盖现有启动记录(包括调试设置)。使用此选项忽略旧的启动设置并创建干净的 BCD 配置;

  • /v - 用于启用 BCDBoot 详细输出。

提示。如果您使用Windows 10/11的本地化版本,命令会有所不同。例如,在英国的 Windows 版本中,使用以下命令:

bcdboot c:\Windows /l en-GB /s K: /f ALL

Windows 10 荷兰语:

bcdboot c:\Windows /l nl-NL /s K: /f ALL

Windows 10 Deutch(德语):

bcdboot c:\Windows /l de-DE /s K: /f ALL

此处提供了 Windows 语言/区域标签的完整列表:

https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/available-language-packs-for-windows?view=windows-11

现在,如果您运行

bcdedit

命令,您将看到以下内容:

Windows 启动管理器部分中应出现一个条目,其中包含 UEFI 启动文件的完整路径 (

\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI

)。在此示例中,它位于卷 5 (

partition=\Device\HarddiskVolume5

)。

[玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume5
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
bootshutdowndisabled    Yes
default                 {CURRENT}
resumeobject            {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30
Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 10
locale                  en-US
inherit                 {bootloadersettings}
recoverysequence       {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

Windows 启动管理器部分必须包含 EFI 分区的路径 (

=\Device\HarddiskVolume5

)和启动管理器文件(bootmgfw.efi)的路径。 Windows 引导加载程序部分包含 Windows 分区信息和 Windows EFI 引导加载程序的路径(

\Windows\system32\winload.efi

)。当您打开它时,您的计算机会将控制权传递给 EFI 引导加载程序,后者将启动 Windows 引导加载程序。

可能的错误:

  • BFSVC 错误:无法打开 BCD 模板存储。 status - [c000000f] - 检查输入的命令是否正确以及您是否安装了本地化的 Windows 版本。在这种情况下,您需要指定正确的本地语言代码。

    [玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

     sfc /scanow /OFFBOOTDIR=C:\ /OFFWINDIR=D:\WINDOWS
  • BFSVC 错误:从上次错误=0x570 复制启动文件时出错 - 尝试使用命令检查驱动器

    CHKDSK K: /F
  • BFSVC 错误:无法设置元素应用程序设备。 Status=[c000000bb] - 使用 chkdsk.exe 检查 EFI 和 Windows 10 分区。验证BCD文件的隐藏和系统属性是否已清除:

    attrib -s -h \EFI\Microsoft\Boot\BCD
    del \EFI\Microsoft\Boot\BCD 

    [玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

  • 初始化库系统卷时失败 - 确保您使用正确的 FAT32 分区和 EFI(您可能有多个类似的分区);

  • 尝试复制启动文件时失败 - 检查 bcdboot 命令中的 Windows 驱动器盘符。下面的屏幕截图显示尝试从 C: 驱动器复制启动文件时出现错误。在这种情况下,Windows 驱动器很可能被分配了不同的字母,例如 D:。您可以使用 diskpart 和 dir 命令(如上所述)找到 Windows 驱动器和分配的驱动器号。

    [玩转系统] 如何在 Windows 10 或 11 上修复 EFI/GPT 引导加载程序

现在您需要重新启动计算机并断开可启动媒体的连接。如果一切操作正确,Windows 启动管理器应该出现在可启动设备列表中,您可以在其中选择所需的操作系统进行启动。您的 EFI 引导加载程序和 BCD 配置已成功恢复!

确保您最近没有对 UEFI 设置进行任何更改。撤消所有更改。

从安装/可启动闪存驱动器启动计算机并使用以下命令更改引导加载程序配置:

  • bcdedit /deletevalue {default} numproc
  • bcdedit /deletevalue {default} truncatememory

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯