修复 UEFI 启动管理器中的多个 Ubuntu 实例

修复 UEFI 启动管理器中的多个 Ubuntu 实例

我最近将 Ubuntu 安装在了它自己的驱动器(Sandisk)上。我遇到了一个问题,在尝试启动 Windows 时,grub 给出了这个错误

error: file '/efi/Microsoft/bootmgfw.efi' not found

尽管我在安装过程中选择了特定的 Sandisk 驱动器,但在 BIOS 中,我看到了 Ubuntu 的多个条目。我该如何清除这一切?

当我选择 Windows 启动管理器作为主要启动管理器时,我可以安全地启动 Windows。

启动信息 -https://paste.ubuntu.com/p/PHnfqhB34x/

在此处输入图片描述

答案1

不确定您对 Sandisk 上的其他操作系统有何打算,但我建议将 grub 安装到 Sandisk 上(您确实在其上创建了 EFI 分区,对吗?)或者只需将内部磁盘 EFI 上的所有内容复制到 Sandisk 的 EFI 中,也可以,无需编辑。 grub-install 确实有效,请检查所需的选项,如 --removable 和 --uefi-secure-boot 和 --efi-directory。(--uefi-secure-boot 上有一个旧错误,它没有以应有的方式使用 shim,但现在可能已经修复)。然后尝试直接启动 sandisk,设备默认引导程序应该是 grub 并且可以正常工作。

现在要清理内部磁盘,您需要做的就是使用 efibootmgr 删除包含 grub EFI 条目的 ubuntu 目录,并将 Sandisk 放在启动顺序的首位。此外,查看内部磁盘的 EFI/Boot 目录,用备份的 Windows bootmgfw.efi 替换 bootx64.efi(它是 grubx64.efi 或 ahimx64.efi 的副本),名称中带有 bkp,因此文件应该是显而易见的(或者只需从 EFI/Microsoft... 目录复制 bootmgfw.efi 并将其重命名为 bootx64.efi)。

这样应该会让您的 Sandisk 作为任何系统上的可启动设备(也许存在硬件问题),并且当 Sandisk 未连接时,您的主机系统将启动 Windows。


我不知道新安装的 Windows 会做什么,但如果你从头开始,我假设会创建一个只有 Windows 引导加载程序的新 EFI 分区。因此,如果你已经使用有效的 grub 设置了 Sandisk,那么你应该能够根据需要连接它,并在其上安装任何你想要的东西。

相关内容