如何 UEFI 双启动 Windows 10 和 Ubuntu?

Sim*_*ich 4 multi-boot ubuntu grub2 uefi windows-10

TL;DR:在 Windows 10 / Ubuntu UEFI双引导方案中,从 Grub 引导 Windows 10 会导致 Windows 引导管理器覆盖/删除 Grub。我怎样才能阻止这种情况发生?

很长一段时间以来,我的 PC 一直很高兴使用 UEFI 单启动 Ubuntu 18.04。我最近决定安装 Windows 10 并双启动它们。我在旧的 BIOS/MBR 时代已经这样做了很多次,所以没有预料到重大问题。

安装过程

我的安装过程是:

  • 安装 Windows 10。正如预期的那样,这用 Windows 启动管理器覆盖了 Grub。
  • 使用 live-usb 和Boot-Repair重新安装 Grub。
  • 启动到我现有的 Ubuntu 18.04 安装并运行update-grub它会自动获取新的 Windows 安装。
  • 使用 Grub 启动 Windows 10

问题

这就是事情出错的地方。在 Windows 上花了一些时间后,我需要重新启动到 Ubuntu。我重新启动了机器,令我惊讶的是,它发现它直接启动回 Windows 10,在任何地方都没有 Grub 的迹象。

我像以前一样恢复了 Grub,但发现每次启动到 Windows 都会导致 Grub“消失”。

设置

  • HP Z420:最新的 BIOS
  • 启动设置:
    • 启用 UEFI 启动模式
    • 旧启动模式已禁用
    • 安全启动已禁用
    • 启用快速启动
  • sda带 GPT 表的单个 SSD ( )
    • sda1 : 电喷系统分区
    • sda2:Ubuntu 18.04(安装sda1在 下/boot/efi
    • sda3 : 视窗 10

我尝试过的事情

  • 围绕此问题弹出的许多答案似乎都建议使用 Legacy/MBR 双引导。我想避免将 GPT 切换到 DOS 分区表的麻烦和潜在的数据丢失,而且……现在是 2020 年,感觉这应该不是问题!
  • 我尝试efibootmgr按照此处此处的建议停用和降低 Windows 启动管理器的优先级,但是当我启动 Windows 时,Windows 启动管理器只会重新启用!

我非常感谢任何帮助。我觉得这应该不难!

Sim*_*ich 6

为回答我自己的问题而道歉,但以防将来对其他人有所帮助。

正如评论中所建议的,我尝试了以下操作:

  • 在 Windows 中禁用休眠
  • 在 BIOS 中禁用 Fastboot

但这些都没有奏效。

当我偶然发现这个答案时,我正准备尝试重命名原始启动管理器。运行命令:

bcdedit /set "{bootmgr}" path \EFI\ubuntu\grubx64.efi
Run Code Online (Sandbox Code Playgroud)

已阻止 Windows 启动管理器替换 Grub。我什至成功地重新打开了 Hibernate 和 Fastboot,而没有丢失 Grub。

注意:让 EFI 路径正确很重要。从 LiveUSB 运行引导修复以恢复 grub 后,它会告诉您使用的完整路径,因为它并不总是与上面列出的相同。