看外国人:如何恢复Windows系统中被删除的EFI系统分区?

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

温馨提示:如果您阅读本文感到困难,请直接看文末。

本文将会向你展示如何手动恢复一个在UEFI固件上被意外删除的Windows系统EFI系统分区。这个手动重建可启动EFI和MSR分区的简单方法会允许你在意外地格式化或删除EFI分区后再次成功启动操作系统。本指南对所有的Windows系统版本都有效(包括Windows10/11,以及Windows server 2025/2022/2019/2016)。

假设你的UEFI(非传统BIOS)固件电脑上的EFI启动分区不小心被删除或格式化了(比如,当你要移动或删除一个OEM恢复分区的时候)。结果是,你的Windows 10/11/8.1/7系统无法正常启动,并循环提示你选择一个启动设备(Reboot and select proper boot device or insert boot media in selected boot device and press a key)。接下来,我们会告诉你如何在删除EFI系统分区后,不用重装系统并恢复Windows系统启动(包括Windows启动管理器和BCD配置文件)。

警告。

本教程会操作磁盘分区,并不适合初学者。如果你错误的输入了命令,就可能错误的删除你硬盘上的所有数据。同时特别建议提前将数据备份到独立的硬盘存储中。


目录

  • Windows中基于UEFI/GPT的磁盘分区
  • Windows中丢失的EFI分区
  • 如何在GPT磁盘上创建EFI和MSR分区?
  • 修复GPT磁盘上EFI启动器和Windows BCD数据库

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

设想一下,一个运行在UEFI固件上的电脑中,存在一个GUID分区表(GPT)的可启动磁盘。它的默认分区结构应该是什么样的呢?

  • EFI系统分区(ESP)—— 100MB (分区类型:EFI)
  • 微软保留分区 —— 16MB(分区类型:MSR)
  • Windows系统主分区(安装Windows系统的分区)

Default efi partitoions

这就是最简单的分区配置。这些分区都是Windows安装器在一个未格式化的硬盘上全新安装Windows的时候创建的。

电脑制造商或用户可以创建其他用于存放数据的分区,例如,在winre.wim文件中的WindowsRE(Windows恢复环境),OEM制造商提供的原厂系统镜像备份分区(允许将电脑回滚到初始状态),用户分区,等等。

EFI分区是UEFI固件的电脑中,GPT分区表磁盘上的一个文件系统是FAT32的法定分区。它的GUID是c12a7328-f81f-11d2-ba4b-00a0c93ec93b。他的默认大小是100MB(在4KB扇区大小的高级格式化磁盘中,EFI分区的大小是260MB)。

MSR分区(微软保留分区)是GPT分区表磁盘上的一个用于简化分区管理的分区。它被用于服务操作(例如,将一个磁盘的模式从基本转换为动态)。这个分区GUID是e3c9e316-0b5c-4db8-817d-f92df00215ae,没有盘符,并不能存储用户数据。在Windows10和11中,MSR分区的大小只有16MB(在Windows8.1中,MSR分区大小是128MB),且他的文件系统是NTFS。MSR分区必须位于EFI系统分区(ESP)和Windows系统主分区之间。

主分区就是安装Windows系统,软件,存储用户数据的NTFS分区。磁盘上还可能有其他数据分区。


Windows中丢失的EFI分区

EFI分区(与MBR分区表磁盘中的系统保留分区类似)存储启动配置数据库(BCD)和几个Windows系统启动所需的文件。当电脑启动的时候,UEFI环境从EFI分区中加载Windows启动管理器文件(EFI\Microsoft\Boot\bootmgfw.efi)然后把计算机控制权交给他。bootmgfw.efi 程序就是Windows启动管理器(Windows boot manager),它从BCD文件中读取启动配置数据。一旦BCD文件被加载,Windows通过winload.efi 开始启动进程。

uefi windows boot manager: set bootmgfw.efi path

当一个UEFI固件电脑启动时,它会在所有硬盘中寻找EFI系统分区。如果EFI系统分区被删除了或出现故障,那你就不能从那个磁盘上启动Windows系统了。电脑会显示一个UEFI报错:could not locate \efi\boot\bootx64.efi – not found或显示一个空的UEFI shell等待你输入命令选择一个启动设备。

此外,如果EFI系统分区的文件系统是NTFS,那么Windows系统也无法启动。在这种情况下,即使全新安装一遍Windows,也会遇到报错:

1
Windows检测到EFI系统分区格式为NTFS。请将EFI系统分区格式化为FAT32,然后重新启动安装。

如何在GPT磁盘上创建EFI和MSR分区?

因为Windows无法启动,我们需要一个Windows10/11的安装介质(也就是U盘启动盘)。从Windows安装介质启动,然后在第一个出现的安装屏幕上按下shift+F10组合键。一个命令行窗口就会出现了。

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

diskpart

列出连接到电脑上的所有磁盘:

list disk

在我们的例子中,电脑上只有一个磁盘,也就是磁盘0(disk 0)。GPT那一列中的星号(*)代表着这个磁盘是GPT分区表的。

diskpart check gpt partition table

如果GPT那一列没有*,那这个磁盘就是MBR分区表的。你需要提前确保你使用原生UEFI模式启动电脑(否则,本教程对你毫无意义)。

选择这个磁盘:

select disk 0

显示磁盘上的分区列表:

list partition

在我的例子中,磁盘上仅剩三个分区:

  • MSR分区——16MB
  • Windows系统分区——30GB
  • 恢复分区——541MB

你可以看到,EFI系统分区(卷标可能叫做“系统”)已经丢失了(已经被删除了)。

missing efi system partition on windows disk

提示。

如果只是EFI分区中的EFI启动文件被破坏了,但EFI分区本身没有被删除,那么你可以跳过使用diskpart重新创建分区这一步。

我们的任务是移除这个仍然还在的MSR分区,以获得至少116MB的未分配磁盘空间(用于创建MSR和EFI分区)。你可以使用图形用户界面软件Gparted工具或直接使用命令行工具(我们使用命令行工具)。

重要!

请极其小心谨慎,不要意外删除Windows分区或存储其他用户文件的分区(如果有的话)。

选择需要被移除的分区:

select partition 1

然后删除它:

delete partition override

确保现在只剩下了那个30GB的Windows系统主分区和恢复分区(在我们的情况中):

list partition

remove msr and efi partitions with diskpart

现在你可以手动创建EFI和MSR分区,用于存放Windows启动文件。在diskpart中一行一行的运行下面的命令。

选择磁盘:

select disk 0

创建一个100MB的EFI分区:

create partition efi size=100

确保100MB的分区在diskpart中被选中(分区1前面有一个星号*)使用FAT32文件系统格式化EFI分区,然后给他分配一个盘符:

list partiton

select partition 1

format quick fs=fat32 label="System"

assign letter=G

现在你需要创建一个16MB的MSR分区了(仅限Windows11/10)。

create partition msr size=16

list partition

list vol

在我的情况中,盘符C已经分配给了Windows系统主分区。如果没有的话,使用下面的命令给它分配一个盘符:

select vol 1

assign letter=C

diskpart: create efi partition

关闭diskpart:

exit

使用diskpart创建EFI或MSR分区分区时,可能遇到报错:

1
2
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).
找不到可用的空闲空间。可能是可用空间不足以创建指定大小和偏移量的分区。请指定不同的大小和偏移量值,或者两者都不指定,以创建最大大小的分区。磁盘可能使用 MBR 磁盘分区格式进行分区,并且磁盘包含 4 个主分区(无法创建更多分区),或者 3 个主分区和 1 个扩展分区(只能创建逻辑驱动器)

diskpart:No usable free extent could be found

这意味着磁盘上没有足够的空闲空间来创建新分区。这种情况下,你需要将Windows系统主分区(在本例中为卷 1)缩小128MB。

select volume 1

shrink desired=128 minimum=128

shrink partition with diskpart

然后再按照上述内容创建EFI和MSR分区。


修复GPT磁盘上EFI启动器和Windows BCD数据库

成功地在UEFI固件电脑中的GPT分区表磁盘上创建了最基本的磁盘分区结构后,你可以将EFI启动文件复制到新分区中并且创建启动配置文件(BCD)了。

现在,使用bcdboot.exe工具将UEFI启动环境文件从Windows系统目录里复制到EFI启动分区中,同时重建BCD启动配置数据库。运行以下命令:

bcdboot c:\windows /s G: /f UEFI

1
2
Boot files successfully created.
成功创建启动文件。

bcdboot: restore uefi bootloader on windows 10 and 11

操作的结果是,EFI分区中会出现一个预制的目录结构。下列文件必须存在于EFI系统分区中:

  • \EFI\Microsoft\Boot\bootmgfw.efi
  • \EFI\Microsoft\Boot\bootmgr.efi
  • \EFI\Microsoft\Boot\memtest.efi
  • \EFI\Microsoft\Boot\BCD
  • \EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf
  • \EFI\Boot\bootx64.efi

列出当前Windows启动管理器的配置。在{bootmgr}区域,会出现一个启动项,指向含有UEFI启动控制文件的分区(\EFI\MICROSOFT\BOOT\bootmgfw.efi)在这个例子当中,这个分区是partition=G,或partition=\Device\HarddiskVolume2(如果你没有给EFI分区分配盘符的话)。

UEFI的Windows启动管理器一定会将计算机控制权交给位于C盘的Windows启动加载器文件 \Windows\system32\winload.efi:

bcdbedit: show windows boot manager configuration, check bootmgfw.efi path

重启电脑(使用wpeutil reboot命令在winPE环境中重启)并拔掉U盘启动盘。

可选操作!

你可以手动进行那行bcdboot命令背后的所有操作。下面,我们会向你展示如何手动复制EFI系统文件,使用bcdedit命令行重建BCD。

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

1
2
3
mkdir G:\EFI\Microsoft\Boot

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

copy efi files

重建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}

bcdbedit: create boot entry for efi system partition

以下 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. 开机,等到启动报错界面出现(An Operating System not found),然后再关机;
  4. 插上硬盘。

如果还是无法启动,那就启动U盘启动盘,然后输入如下命令:

bootrec /rebuildbcd

重启电脑。

bootrec rebuildbcd

在我们的例子中(在一个UEFI固件的VMware虚拟机里测试),我们需要选择EFI分区中的EFI\Microsoft\Boot\bootmgrfw.efi这个文件,来给启动菜单中添加一个新的启动项。

在一些UEFI菜单中,类似的,你需要改变启动分区的优先级。

efi boot option FI\Microsoft\Boot\bootmgrfw.efi

操作完这些后,你的Windows系统应该可以正常启动了。

提示。

如果还是有问题,那么推荐操作是:确保只有那一个EFI分区有启动的标志。你可以使用GParted LiveCD 操作。

在某些情况下,重建EFI和MSR分区并恢复BCD数据库后,Windows可能无法正常关机。如果你遇到这个问题,你可以通过关闭“快速启动”功能来修复它:

  1. 启动控制面板中的“电源管理”(powercfg.cpl)
  2. 点击“选择按电源键的功能”
  3. 点击“更改当前不可用的设置”,然后取消“启用快速启动“选项。

disable fast startup on windows 10/11


原文链接:https://woshub.com/how-to-repair-deleted-efi-partition-in-windows-7/

翻译/校对:吕了了


我的评价

本文优势:

  • 本文适合于对系统有近乎洁癖的追求或有绝对安全保密需求的计算机高级管理员。
  • 本文所有的工具均使用微软提供的原生工具,例如WinPE,diskpart,bcdboot,bcdedit等,因此可以保证绝对的纯净和安全。这些工具全部属于命令行工具,需要大量输入命令,适合高级IT管理员,并不适合初学者。

本文缺点:

  • 本文对某些技术词汇的使用极不规范。例如,我在翻译过程中发现,本文对Windows boot manager(Windows启动管理器),bootmgfw.efi,UEFI启动管理器等名词有各种各样的称呼,甚至有时将多个名词混为一谈。这会导致严重的理解误差。
  • 本文介绍的方法均为微软推荐的经典操作,极为死板。事实上,本文在技术上可以更加灵活。例如,本文拘泥于Windows一定要有MSR分区,GPT分区表一定搭配UEFI固件。事实上,Windows没有MSR分区可以正常运行,UEFI固件可以搭配GPT分区表和MBR分区表两种类型的分区表。这些都是经过我的实验验证的可行操作。
  • WinPE在中国没有那么流行,中国的维护者更习惯于使用图形用户界面的第三方PE系统。

本文所有的操作均有第三方套壳替代工具可以完成。

但以上缺点并不能否认这是一篇经典优秀的Windows系统原生引导修复详细操作教程。

如果你无法理解其中的内容,那么我强烈推荐你阅读我自己写的文章:

《[超长文预警]小白必看:Windows系统引导和启动详细介绍与运维实操全面讲解》

微信阅读链接

网站阅读链接

这是一篇纯新手向,深浅出的技术+实操结合的文章,经过我不吃不喝6小时写完。这篇文章中的内容囊括了本文的所有操作的所有第三方替代方法,并且同样也能保证所有操作的99.99%的纯净和高效。

感谢您的阅读。


看外国人:如何恢复Windows系统中被删除的EFI系统分区?
https://lvlele.top/232winoshub_01/
作者
吕了了
发布于
2026年11月1日
许可协议