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

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

作者:精品下载站 日期:2024-12-14 23:35:28 浏览:15 分类:玩电脑

如何在 Windows 中恢复已删除的 EFI 系统分区


本文将向您展示如何在 UEFI 计算机上手动恢复意外删除的 Windows EFI 启动分区。这种手动重新创建可启动 EFI 和 MSR Windows 分区的简单方法将允许您在意外格式化或删除 EFI 分区后启动操作系统。本指南适用于所有 Windows 版本(包括 Windows 10 和 11,以及 Windows Server 2022/2019/2016)。

假设您的 UEFI(非 BIOS)计算机上的 EFI 启动分区被意外删除或格式化(例如,当您尝试删除 OEM 恢复分区时)。因此,您的 Windows 11/10/8.1/7 无法正确启动并循环提示您选择启动设备(

Reboot and select proper boot device or insert boot media in selected boot device and press a key

)。接下来,我们将展示如何在删除 EFI 系统磁盘分区(具有启动管理器和 BCD 配置)后恢复 Windows 启动,而无需重新安装操作系统。

警告。本指南假设使用磁盘分区,不适合初学者。如果您错误地解释了这些命令,您可能会意外删除硬盘上的所有数据。还强烈建议将重要数据备份到单独的介质上。

Windows 中基于 UEFI/GPT 的硬盘分区

考虑 UEFI 计算机上具有 GUID 分区表 (GPT) 的启动硬盘驱动器的默认分区表应该是什么样子。您至少应该有以下分区:

  • EFI 系统分区(ESP - 可扩展固件接口)— 100 MB(分区类型 — EFI);

  • Microsoft 保留分区 — 16 MB(分区类型 — MSR);

  • 主 Windows 分区(包含 Windows 的分区)。

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

这是最低配置。这些分区是在将操作系统全新安装到未格式化的驱动器期间由 Windows Installer 创建的。

计算机制造商或用户可以创建其他分区,其中包含例如 winre.wim 文件中的 Windows 恢复环境 (Windows RE)、带有 OEM 提供的系统映像备份的分区(允许回滚到计算机的原始状态)、用户分区等。

FAT32 文件系统的 EFI 分区是 UEFI 计算机上 GPT 磁盘上的强制分区,并且具有 GUID

c12a7328-f81f-11d2-ba4b-00a0c93ec93b

。 EFI 分区的默认大小为100 MB(在具有 4KB 扇区的高级格式磁盘上,EFI 分区的大小为 260MB)。

GPT 磁盘上的MSR 分区(Microsoft 系统保留)用于简化分区管理并用于服务操作(例如,将磁盘从基本磁盘转换为动态磁盘时)。这是带有 GUID 标签的分区

e3c9e316-0b5c-4db8-817d-f92df00215ae

没有分配驱动器号。该分区不能存储用户数据。在Windows 10和11中,MSR分区的大小仅为16 MB(在Windows 8.1中MSR大小为128 MB),文件系统为NTFS。 MSR 分区必须位于 EFI 系统分区 (ESP) 和主 Windows 操作系统分区之间。

具有 NTFS 文件系统的主分区包含已安装的 Windows、程序和用户数据。磁盘上还可能有其他数据分区。

Windows 中缺少 EFI 分区

EFI 分区(类似于具有 MBR 分区表的驱动器上的系统保留分区)存储启动配置存储 (BCD) 和启动 Windows 所需的许多文件。当计算机启动时,UEFI 环境从 EFI 系统 (ESP) 分区加载引导加载程序文件 (EFI\Microsoft\Boot ootmgfw.efi) 并将控制权转移给它。 bootmgfw.efi 可执行文件启动Windows 启动管理器,该管理器从 BCD 加载配置数据。加载 BCD 后,Windows 开始通过 winload.efi 启动。

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

当 UEFI 计算机启动时,它会在所有连接的驱动器上查找 EFI 系统分区。如果 EFI 分区被删除或损坏,您将无法从该驱动器启动 Windows。将会出现 UEFI 错误

could not locate \efi\boot\bootx64.efi - not found

或空的 UEFI Shell 提示您选择启动设备。

此外,如果 EFI 分区使用 NTFS 文件系统格式化,您将无法启动 Windows。即使执行全新的 Windows 安装,您也会收到错误:

Windows detected that the EFI system partition was formatted as NTFS. Format the EFI system partition as FAT32, and restart the installation.

如何在GPT驱动器上创建EFI系统和MSR分区?

由于 Windows 不正确,我们需要 Windows 10/11 安装驱动器(请参阅如何使用 Windows 安装文件创建 UEFI 可启动 USB 驱动器)或任何其他启动/救援介质。从安装介质启动,然后在第一个安装屏幕上按 Shift+F10 组合键。应打开命令提示符窗口。

运行磁盘和分区管理工具:

Diskpart

列出连接到计算机的硬盘:

list disk

在我们的示例中,仅连接了一个磁盘 0。 GPT 列中的星号(*)表示磁盘上已创建 GUID 分区表。

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

如果没有

*

在GPT列中,则磁盘分区表是MBR。您需要确保之前以本机 UEFI 模式启动计算机(否则,遵循此说明是没有意义的)。如果您确定分区表类型已更改,则可能值得将驱动器从 MBR 转换为 GPT。

选择该磁盘:

Select disk 0

显示磁盘上的分区列表:

List partition

在我的示例中,驱动器上仅留下三个分区:

  • MSR 分区 — 16 MB

  • Windows 系统分区 — 30 GB

  • 恢复分区 - 541 MB

如您所见,EFI 分区(可能称为系统)丢失(已被删除)。

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

提示。如果EFI分区上只有EFI启动文件损坏,而分区本身没有被删除,则可以跳过使用diskpart重新创建分区的步骤。在大多数情况下,继续修复 Windows 中的 EFI 引导加载程序就足够了。如果您在具有 BIOS 固件的计算机上使用 MBR 磁盘,则可以按照本文所述重新创建 BCD。

我们的任务是删除剩余的 MSR 分区,以便磁盘上至少有 116 MB 的未分配空间(对于 MSR 和 EFI 分区)。您可以使用图形 Gparted 工具或直接从命令提示符删除此分区(这正是我们要做的)。

重要!请务必小心,不要意外删除 Windows 分区或包含用户数据的分区(如果有)。

选择要删除的分区:

Select partition 1

并删除它:

Delete partition override

确保仅剩下 30 GB 主 Windows 分区和恢复分区(在我们的例子中):

List partition

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

您现在可以手动创建 EFI 和 MSR 分区来放置 Windows 引导加载程序文件。为此,请在 diskpart 上下文中一一运行这些命令。

选择磁盘:

select disk 0

创建一个 100 MB 的 EFI 分区:

create partition efi size=100

确保在 diskpart 中选择 100 MB 分区(分区 1 之前的星号)。使用 FAT32 文件系统格式化 EFI 分区,并为其分配驱动器号:

list partition
select partition 1
format quick fs=fat32 label="System"
assign letter=G

现在您需要创建一个 16MB MSR 分区(适用于 Windows 10 或 11)。

create partition msr size=16
list partition
list vol

就我而言,驱动器号 C: 已分配给主 Windows 分区。如果不是,请按如下方式为其分配驱动器盘符:

select vol 1
assign letter=C
exit

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

关闭磁盘部分:

exit

使用diskpart创建EFI或MSR分区时可能会出现错误:

No usable free extent could be found. It may be that there is insufficient free space to create a partition at the specified size and offset. Specify different size and offset values or don't specify either to create the maximum sized partition. It may be that the disk is partitioned using the MBR disk partitioning format and the disk contains either 4 primary partitions, (no more partitions may be created), or 3 primary partitions and one extended partition, (only logical drives may be created).

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

这意味着磁盘上没有足够的未分配(可用)空间用于新分区。在这种情况下,您需要将主 Windows 分区(在我们的示例中为卷 1)的大小减少 128 MB:

select volume 1
shrink desired=128 minimum=128

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

然后如上所述创建 EFI 和 MSR 分区。

修复 GPT 驱动器上的 EFI 引导加载程序和 Windows BCD

在 UEFI 计算机上为 GPT 驱动器创建最小磁盘分区结构后,您可以继续将 EFI 引导文件复制到新分区并创建引导加载程序配置文件 (BCD)。

现在使用 bcdboot.exe 工具将 UEFI 引导环境文件从 Windows 系统目录复制到 EFI 引导分区并重新创建 BCD 引导加载程序配置。运行命令:

bcdboot c:\windows /s G: /f UEFI
Boot files successfully created.

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

结果,将在 EFI 分区上创建预定义的目录结构。 EFI 系统卷上必须存在以下文件:

  • \EFI\Microsoft\Bootmgfw.efi

  • \EFI\Microsoft\Boot ootmgr.efi

  • \EFI\Microsoft\Boot\memtest.efi

  • \EFI\Microsoft\Boot\BCD

  • \EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf

  • \EFI\启动 ootx64.efi

列出当前 Windows 启动管理器引导加载程序配置。 {bootmgr} 部分中应出现一个条目,指向包含 UEFI 启动控制文件的分区 (\

EFI\MICROSOFT\BOOT\bootmgfw.efi

)。在这个例子中,它是

partition=G

, 或者

 partition=\Device\HarddiskVolume2

(如果您尚未为 EFI 分区分配驱动器号)。

UEFI 引导加载程序必须将控制权传递给 Windows 引导加载程序文件

\Windows\system32\winload.efi

partition=C

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

重新启动计算机(使用

wpeutil reboot

命令以便从 WinPE 环境重新启动)并删除可启动 USB 闪存驱动器。

可选! 您可以手动执行 bcdboot 命令执行的所有操作。接下来,我们将向您展示如何复制 EFI 系统文件并使用 bcdedit 命令自行重建 BCD。

从安装 Windows 的驱动器目录中复制 EFI 环境启动文件:

mkdir G:\EFI\Microsoft\Boot

xcopy /s C:\Windows\Boot\EFI\*.* G:\EFI\Microsoft\Boot

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

在 Window Boot Manager 中重建引导配置数据 (BCD) 条目:

g:
cd EFI\Microsoft\Boot
bcdedit /createstore BCD
bcdedit /store BCD  /create {bootmgr} /d “Windows Boot Manager”
bcdedit /store BCD /create /d “My Windows 10” /application osloader

该命令返回创建的 BCD 条目的 GUID。在以下命令中使用此 GUID 代替 {your_guid}

bcdedit /store BCD /set {bootmgr} default {your_guid}
bcdedit /store BCD /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
bcdedit /store BCD /set {bootmgr} displayorder {default}

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

以下 bcdedit 命令在 {default} 上下文中运行:

bcdedit /store BCD /set {default} device partition=c:
bcdedit /store BCD /set {default} osdevice partition=c:
bcdedit /store BCD /set {default} path \Windows\System32\winload.efi
bcdedit /store BCD /set {default} systemroot \Windows
exit

如果 Windows 第一次无法正确启动,请尝试以下操作:

  1. 关闭您的设备;

  2. 拔掉(物理上)您的硬盘;

  3. 打开计算机,等待出现启动错误窗口(未找到操作系统),然后再次关闭计算机;

  4. 重新插上驱动器。

如果这没有帮助,请从安装 USB 闪存驱动器启动并运行以下命令:

bootrec /rebuildbcd

重启你的电脑

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

然后,在我们的案例中(在具有 UEFI 固件的 VMWare 虚拟机上进行测试),我们必须通过选择 EFI 分区上的 EFI\Microsoft\Boot ootmgrfw.efi 文件来向启动菜单添加一个新项目。

在某些UEFI菜单中,以此类推,您需要更改引导分区的优先级。

[玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

完成所有这些操作后,您的 Windows 应该可以正确启动。

提示。如果不起作用,建议确保只有 EFI 分区具有启动标志。您可以使用 GParted LiveCD 来完成此操作。

在某些情况下,重新创建 EFI 和 MSR 分区并恢复 BCD 引导加载程序后,Windows 可能会停止正常关闭。如果您遇到此问题,可以通过禁用 Windows 中的快速启动功能来修复它:

  1. 打开控制面板中的电源选项

    powercfg.cpl

    ;

  2. 选择选择电源按钮的功能

  3. 单击更改当前不可用的设置按钮,并禁用“关机设置”部分中的“打开快速启动”选项。

    [玩转系统] 如何在 Windows 中恢复已删除的 EFI 系统分区

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

取消回复欢迎 发表评论:

关灯