删除Windows 10启动管理器后恢复遇双EFI分区报错,求解决方案
删除Windows 10启动管理器后恢复遇双EFI分区报错,求解决方案
兄弟,我碰到过几乎一模一样的问题!这个报错其实是因为Windows的引导工具分不清你那两个EFI分区到底哪个是原来的Windows ESP——毕竟它们都是GPT格式的ESP分区,系统没法自动识别对应的设备。给你两个靠谱的解决方案,选哪个看你的偏好:
方案一:明确指定Windows ESP分区,修复引导
这个方法不用动Grub,直接让Windows工具找到正确的分区就行:
- 从Windows安装介质进入WinPE的命令提示符(CMD)
- 打开磁盘分区工具:输入
diskpart - 列出所有磁盘:
list disk,找到你的系统磁盘(一般是Disk 0,根据容量判断) - 选中系统盘:
select disk 0,再列出所有分区:list partition - 你会看到两个标记为「系统」的分区(就是那两个EFI分区,大小一般在100-500MB左右),分别给它们分配临时盘符:
- 选中第一个EFI分区:
select partition X(X是分区编号,比如1) - 分配盘符:
assign letter=S: - 再选中第二个EFI分区:
select partition Y - 分配盘符:
assign letter=T:
- 选中第一个EFI分区:
- 退出diskpart:
exit - 检查哪个盘符里有Windows的引导文件:输入
dir S:\EFI\Microsoft,如果能看到Boot文件夹,那S盘就是原来的Windows ESP;如果没有就看T盘 - 现在指定引导路径:
- 如果你想用Grub作为默认引导,执行:
bcdedit /set {bootmgr} path \EFI\grub\grubx64.efi /store S:\EFI\Microsoft\Boot\BCD(把S换成你找到的正确盘符) - 如果你想恢复Windows自带引导,先执行:
bootrec /fixboot /s S:,再执行bootrec /rebuildbcd,当提示找到Windows安装时选Y确认
- 如果你想用Grub作为默认引导,执行:
方案二:删除现有Grub,重新安装到Windows的ESP分区
这也是你提到的思路,操作起来也很稳妥:
- 用Artix安装介质引导进入系统(或者进入chroot环境,这个你应该熟)
- 先找到Windows的ESP分区,挂载它,比如:
mount /dev/nvme0n1p1 /mnt/esp(替换成你实际的ESP设备名,比如/dev/sda1) - 找到原来安装Grub的那个EFI分区,挂载后删除Grub文件:比如原来装在/dev/nvme0n1p2,就先
mount /dev/nvme0n1p2 /mnt/oldesp,然后rm -rf /mnt/oldesp/EFI/grub - 重新把Grub安装到Windows的ESP分区:
grub-install --target=x86_64-efi --efi-directory=/mnt/esp --bootloader-id=grub - 生成新的Grub配置文件:
grub-mkconfig -o /boot/grub/grub.cfg,这样Grub会自动检测到Windows系统,以后开机就能直接选系统了
注意事项
- 操作前最好备份两个EFI分区的内容,避免误操作搞崩系统
- WinPE里用diskpart分配的盘符是临时的,重启后会自动取消,不用担心占用
- 执行diskpart时一定要选对系统盘,别把外接U盘当成系统盘操作了
备注:内容来源于stack exchange,提问作者Alfie




