答案1
UEFI 系统会忘记未插入驱动器的引导条目。 UEFI 通常会找到 Windows 并创建新的 UEFI 条目,但大多数 Linux 系统不会。它们还应该允许您启动后备或硬盘驱动器条目,其启动方式与外部驱动器(安装程序)的启动方式相同。 Grub 现在安装 /EFI/Boot/bootx64.efi 作为后备。对于旧版本,我们必须手动创建该条目,引导修复也已将其作为另一个修复完成。
您可以从 UEFI 启动菜单启动后备或硬盘驱动器条目吗?如果不是 UEFI,系统是否设置为 BIOS/CSM/Legacy 启动?
UEFI 条目需要 ESP - efi 系统分区的 GUID 才能知道在哪里查找启动文件。如果是 UEFI 或 BIOS,您可能需要重新创建 UEFI 条目或重新安装 grub。可能最好查看详细信息,使用带有实时安装程序(第二个选项)的 ppa 版本或任何工作安装,而不是较旧的引导修复 ISO:请复制并粘贴链接到引导信息摘要报告,不要发布报告,不要使用自动修复直至审核。
https://help.ubuntu.com/community/Boot-Repair
您只需使用 efibootmgr 即可恢复正确的 UEFI 启动项。许多人只是完全重新安装 grub,它使用 efibootmgr 在 UEFI NVRAM 中添加新条目作为默认启动。 efibootmgr 条目示例:
man efibootmgr
答案2
罪魁祸首是 UEFI 依赖于计算机内的 NVRAM 存储启动配置,您可以通过efibootmgr
实用程序读取或修改; Windows 倾向于安装 MSFT 在 UEFI 规范中适当指定的“后备引导加载程序” \EFI\BOOT\bootx64.efi
(bootia32.efi
对于 32 位 x86),因此它通过此后备首次启动,并且很可能稍后“修复”NVRAM 配置(我不是这方面的专家) Windows,所以这对我来说是口口相传,而不是经验)。所以你可以:
- 在 Windows“修复”之后“修复”NVRAM(通过运行
grub-install
从支持 UEFI 的救援媒体启动在 UEFI 模式下), 或者 - 将一个副本
/boot/efi/grubx64.efi
放入/boot/efi/bootx64.efi
(但这可能会在 grub 版本更新后中断)。
还有更奇特的方法(比如使用重新找到启动iso链加载主引导加载程序)但我宁愿建议阅读EFI引导加载原理如果你想了解发生了什么以及可以做什么(以及为什么)——显然@oldfred已经为你指明了正确的方向(但也可能从同一手册中受益),所以希望他将提示重新制作为答案: -)
以防万一您再次需要这些工具,我的替代疗法救援image 既有 refind、efibootmgr、grub 等,也很方便。