![如何解决 grub“错误:无签名”问题?](https://linux22.com/image/223624/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%20grub%E2%80%9C%E9%94%99%E8%AF%AF%EF%BC%9A%E6%97%A0%E7%AD%BE%E5%90%8D%E2%80%9D%E9%97%AE%E9%A2%98%EF%BC%9F.png)
我一直在玩 QEMU/KVM 上运行 Archlinux 的虚拟机
几天来一切都很好,然后我向虚拟机添加了一个新磁盘以增加其容量。
我不确定到底发生了什么,但现在当我尝试启动虚拟机时,grub 出现错误
error: no signature
我不知道从哪里开始。如果您能帮助我解决问题,我将不胜感激。
更新 这个问题可能是 QEMU/KVM 错误还是其他什么问题?因为,我可以导航到我的自己的 grub 菜单并正常启动如果我使用live-usb。
- 使用安装USB
- 当出现启动菜单时,我选择了
UEFI Firmware Settings
- 选择
Boot Manager
- 选择
Grub
- 这让我到了我的自己的 grub 菜单
- 系统启动正常
答案1
搜索 GRUB 源代码后,错误文本“无签名”仅与错误一起出现GRUB_ERR_BAD_PART_TABLE
,即 GRUB 在应该从中启动的磁盘上没有看到有效的分区表。这里不涉及安全启动。
我猜想,按照 VM 固件的检测顺序,您添加到 VM 的新磁盘最终位于您最初启动的磁盘之前,而现在 GRUB(或者可能是系统固件?)正在查找错误的磁盘。
由于您通过使用 UEFI 固件启动管理器菜单成功启动了 VM,因此故障排除的下一步可能应该是efibootmgr -v
在 VM 中运行,查看该BootCurrent
值是什么以及BootXXXX
它引用的是哪个启动变量。
BootCurrent
该值与变量中的第一个值相同吗BootOrder
?
如果是,这可能是虚拟机固件错误或意外情况(自我修复系统???)
如果不是,这两个启动选项有什么区别?换句话说,如果BootCurrent是XXXX,而BootOrder的第一个值是YYYY,那么
BootXXXX
和BootYYYY
引导变量有什么区别?
如果BootXXXX
指示的变量似乎有效,您只需将其作为第一项BootCurrent
即可解决问题:XXXX
BootOrder
efibootmgr -o XXXX,<other BootOrder values, if any>