如何恢复意外删掉的EFI系统分区

适用范围

如果你的电脑以UEFI模式安装在了GPT磁盘上,那么如果EFI引导分区被意外移除后格式化,本文都可能帮的到你。当出现上述意外事件时,尝试启动会循环提示需要选择启动设备(Windows 10/8.1/7)并无法正常启动:Reboot and select proper boot device or insert boot media in selected boot device and press a key

GPT磁盘以UEFI模式安装Windows系统时的分区结构

  1. 在GPT磁盘上以UEFI模式安装windows系统。至少有如下几个分区存在
  • EFI 系统分区 (ESP - Extensible Firmware Interface) - 100 MB (分区类型- EFI
  • 微软预留分区 - 128 MB (分区类型 - MSR)
  • window系统安装分区 (windows安装的目标)
image.png

这几个分区在windows安装时被创建。

  1. 以上几个分区简介
  • EFI分区是一个FAT32格式的分区,基于UEFI模式将windows系统安装到计算机上时,这个分区是必须的,他的GUID为c12a7328-f81f-11d2-ba4b-00a0c93ec93b,大小为100MB(但是在扇区大小为4KB的磁盘上,该分区大小为260MB)
  • MSR(Microsoft System Reserved)分区,用于GPT磁盘的分区管理和维护(比如将磁盘由basic转为动态),它是GUID为e3c9e316-0b5c-4db8-817d-f92df00215ae的备份分区。这个分区未分配盘符,不能存储用户数据。Windows 10系统该分区只需16MB,windows 8.1则需要128MB,文件系统为NTFS。另外,MSR分区必须存在于EFI分区(ESP)和windows安装分区之间。

修复丢失的EFI分区

EFI分区

EFI分区类似于MBR/BIOS模式中的系统预留分区,存储着windows引导所需的BCD文件和其它所需文件。当计算机启动时,UEFI程序从EFI分区载入bootloader(EFI\Microsoft\Boot\bootmgfw.efi)并将后续引导控制权交由其控制,bootmgfw.efi将执行Windows Boot Manager并从BCD中载入引导配置数据,引导配置数据载入完成后,控制权交由winload.efi,winload.efi将接管后续windows引导完成windows系统启动

小知识
Winload.efi文件是一个可执行文件,位于windows安装目录X:\windows\system32\winload.ef(x代表系统安装分区),在UEFI环境中结合bootloader初始化并引导windows系统启动。(个人理解相当于Linux下的0号初始化进程,不知是否合适,实在没有找到相关信息,如有大神知道,请教!!!)

如果EFI分区被损坏或者被意外删除,系统将无法正常启动。UEFI会报"could not locate \efi\boot\bootx64.efi – not found"或者空的启动项选择菜单并提示“请指定启动设备”
还有一种情况,如果将EFI分区格式化成NTFS格式,在新安装系统时,会有下面报错显示

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

手动重建EFI和MSR分区

  1. 进入WinRE模式,打开CMD命令行,运行diskpart命令(如何进入Windows修复模式请自行百度)列出当前分区
diskpart
select disk 0 
list partition

示例如下图,128M的时MSR分区,EFI分区丢失

image.png
  1. 重建EFI和MSR分区
    Select partition 1 - 选中MSR分区
    Delete partition override - 删除MSR分区
    确保系统分区存在,本例中是9GB的NTFS分区
image.png

Select disk 0 - 选目标前磁盘
create partition efi size=100 - 新建EFI分区
为新建的分区分配盘符和label

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

新建MSR分区(Window 8.1 128MB, Windows 10 16MB)

create partition msr size=128
list partition
list vol 
image.png

修复EFI bootloader 和 Windows BCD

新建EFI分区后,下一步就需要将EFI引导文件复制到其中并创建新的BCD(bootloader configuration file)

  1. 从windows系统安装分区复制EFI引导文件到新建的EFI分区
mkdir G:\EFI\Microsoft\Boot
xcopy /s C:\Windows\Boot\EFI\*.* G:\EFI\Microsoft\Boot
image.png
  1. 重建Windows BCD bootloader configuration
g: #切换到g(EFI分区)盘
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

命令最后会返回创建条目的GUID

image.png
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}
image.png

使用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
image.png

最后重启电脑完成修复。

你可能感兴趣的:(如何恢复意外删掉的EFI系统分区)