软件包升级后 efi 启动顺序发生变化

软件包升级后 efi 启动顺序发生变化

在我升级系统后,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://download.gigabyte.com/FileList/BIOS/MZBAYAP-00_F10_BIOS_Web.zip?v=d70f22c517e5a4ed85d46cf4661eb705

我按照这里的说明更新固件:

https://www.nathandickman.com/how-to-flash-update-the-bios-on-gigabyte-brix/

相关内容