背景:
Dual boot system, with Ubuntu 20.4.4 and Windows 10
Motherboard: Tomahawk B450 Max
Storage: NVME 1TB ssd - split between Ubuntu and Windows
CPU: AMD Ryzen 3600
Memory: 16GB
我已经使用这个双启动系统一年多了。我最近更新了 BIOS,这导致重新初始化“启动顺序”设置,删除了“ubuntu”条目,导致它直接启动到 Windows。grub 找不到了。
为了修复它,我首先从 Live 会话运行了“启动修复”,然后重新启动。直接进入 Windows,没有看到 grub。
接下来我从 Windows 运行了这个:
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
重启开始时,屏幕清除后我收到一条消息:
Failed to open \EFI\UBUNTU\yyyy - Invalid Parameter
Failed to load image \EFI\UBUNTU\yyyy: Invalid Parameter
start_image() returned Invalid Parameter, falling back to default loader
注意:yyyy - 由两个反向视频问号、后跟两个亚洲字符(S)和“soh”组成
接下来该屏幕消失了,并且出现了 Grub 屏幕......并且开始工作。
进一步的研究表明(根据 efibootmgr),通过 Grub 启动到 Windows 后,Ubuntu 的启动管理器条目会被修改。这是我在以下时间创建的一个文件,调用了“efibootmgr -v”:
- 通过 grub 启动进入 Ubuntu 后
- 重启后,启动 Ubuntu Live 会话,运行启动修复,然后通过 grub 启动到 Ubuntu
- 重启后,通过 grub 启动进入 Window10,然后从 Windows 重启,通过 grub 启动进入 Ubuntu
请注意,在 efibootmgr 运行的三次不同时间中,每次运行的“Boot0000*”行都不同,注意结尾不同...第二个结尾:“/File(\EFI\UBUNTU\SHIMX64.EFI)..BO”,这是预期的结尾。另外两个结尾:“/File(\EFI\UBUNTU\SHIMX64.EFI)WINDOWS....”延伸得更远。
这是我的文件的内容,其中带有注释以标识每次 efibootmgr 调用的时间:
Before running boot-repair:
:~$ sudo efibootmgr -v
[sudo] password for trb:
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001,0002
Boot0001* ubuntu HD(2,GPT,6f5b61c0-cf1c-4414-bc56-4cb4de62b22d,0x109000,0x31800)/File(\EFI\UBUNTU\SHIMX64.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...,................
Boot0002* Windows Boot Manager HD(2,GPT,6f5b61c0-cf1c-4414-bc56-4cb4de62b22d,0x109000,0x31800)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)..BO
After running boot-repair on a Live-Session at 05:52 05/20/2022,
then immediately booting via grub into Ubuntu:
:~$ sudo efibootmgr -v
[sudo] password for trb:
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001,0002
Boot0001* ubuntu HD(2,GPT,6f5b61c0-cf1c-4414-bc56-4cb4de62b22d,0x109000,0x31800)/File(\EFI\UBUNTU\SHIMX64.EFI)
Boot0002* Windows Boot Manager HD(2,GPT,6f5b61c0-cf1c-4414-bc56-4cb4de62b22d,0x109000,0x31800)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)..BO
After rebooting, and booting via grub into Windows 10:
:~$ sudo efibootmgr -v
[sudo] password for trb:
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0002
Boot0000* ubuntu HD(2,GPT,6f5b61c0-cf1c-4414-bc56-4cb4de62b22d,0x109000,0x31800)/File(\EFI\UBUNTU\SHIMX64.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...,................
Boot0002* Windows Boot Manager HD(2,GPT,6f5b61c0-cf1c-4414-bc56-4cb4de62b22d,0x109000,0x31800)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)..BO
这是上次 boot-repair 所做更正的链接 https://paste.ubuntu.com/p/PXhpZRtKsm/