在我升级系统后,efi 启动顺序时不时会发生变化,系统无法启动。我必须进入 bios 并重新选择 ubuntu efi 条目。我猜它是这些软件包之一(至少当我看到其中一个软件包正在升级时总是会发生这种情况):
grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub-efi-amd64-
signed grub2-common shim shim-signed
当我运行 efibootmgr 时,我得到了这个:
efibootmgr
No BootOrder is set; firmware will attempt recovery
我跑了:
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
UEFI
我找不到 efibootgmr 无法运行的任何答案。请帮忙。谢谢!
更新:
我尝试使用以下命令添加 EFI 启动变量:
efibootmgr --create --disk /dev/sda --part 1 --label "Ubuntu" --loader
\\EFI\\ubuntu\\grubx64.efi
返回:
BootOrder: 0000
Boot0000* Ubuntu
重新启动时系统无法启动。
现在工作条目被标记为 Ubuntu。当我选择它时,Ubuntu 启动。再次运行 efibootmgr 后,我得到与之前相同的结果:
efibootmgr
No BootOrder is set; firmware will attempt recover
如果相关的话,当更新改变了引导顺序时,shim 和 shim-signed 也会更新。
更新:
该计算机是 Gigabyte Brix GB-BXBT-1900,具有最新的 BIOS 版本。
我想我最初的问题是为什么 efigootmgr 不工作,这个问题已经得到解答了。感谢您的意见。
答案1
你正在遭遇我所说的“引导政变”。我曾就此问题写过一页;请参阅这里有关详细信息。话虽如此,您的问题听起来有点不寻常,但可能与此有关:
efibootmgr
No BootOrder is set; firmware will attempt recovery
通常,基于 EFI 的计算机确实有一个BootOrder
变量集。情况我我个人见过没有设置该变量的情况,因为固件有缺陷,根本拒绝接受该变量。在这样的电脑上,启动的唯一机会是通过后备文件名(通常EFI/BOOT/bootx64.efi
在 ESP 上,但EFI/Microsoft/Boot/bootmgfw.efi
有时也会起作用)。话虽如此,我也听说过变量BootOrder
为空但可以设置的情况。在这种情况下,添加 EFI 启动变量,如下所述这里,可以解决问题。
如果您的计算机有严重缺陷并需要通过后备文件名进行启动,则必须将引导加载程序复制或移动/重命名为适当的名称,并可能支持配置文件等文件。
鉴于您提到了“ubuntu efi 条目”,这让我认为您有启动变量,但变量BootOrder
丢失了。这可能是固件错误,尽管它可能表明 NVRAM 硬件有缺陷。如果是错误,升级固件可能会解决问题。请咨询制造商,看看是否存在这样的升级。如果这没有帮助,您可以将 GRUB 复制到 fallback 文件名,如果/当变量BootOrder
再次丢失时,应该在那里调用它。ESP 通常安装在/boot/efi
,并且正常的 Linux 文件系统命令可以在其上运行,因此您可以执行以下操作:
sudo cp -r /boot/efi/EFI/ubuntu /boot/efi/EFI/BOOT
sudo mv /boot/efi/EFI/BOOT/shimx64.efi /boot/efi/EFI/BOOT/bootx64.efi
这会将 Shim 复制到后备文件名。如果您确定您的计算机不使用安全启动,则可以将 (grubx64.efi
而不是shimx64.efi
)重命名为bootx64.efi
。
答案2
我在技嘉 GB-BXBT-2807一直存在完全相同的问题。
的输出efibootmgr
与您指示相同:
No BootOrder is set; firmware will attempt recovery
如果我运行以下命令来创建启动项,那么BootOrder
变量就会被设置:
sudo efibootmgr -c -w -l \\EFI\\ubuntu\grubx64.efi -L "Ubuntu" -p 1 -d /dev/sda
输出efibootmgr
如下:
BootCurrent: 0000
BootOrder: 0000
Boot0000* Ubuntu
但重启后,系统会再次提示我选择启动设备。选择后,我会登录、运行efibootmgr
,但BootOrder
变量仍然没有设置。
使固定
我通过更新固件解决了这个问题。原始固件是F7,然后我升级到了F10。
固件从这里下载:
我按照这里的说明更新固件:
https://www.nathandickman.com/how-to-flash-update-the-bios-on-gigabyte-brix/