当尝试在启用 UEFI 安全启动的情况下启动 Ubuntu 时,加载 GRUB 时出现以下错误:
启动失败:未找到正确的数字签名。
所选启动设备上的某个文件被安全启动功能拒绝。
从 USB 启动时,安全启动可以正常工作,无论是 Ubuntu 14.04.3 还是 Ubuntu 16.04。
我该如何开始解决此问题?
更多信息
相关安装的软件包:
- fwupdate-signed 1.11+0.5-2ubuntu4
- grub-efi-amd64-signed 1.66+2.02~beta2-36ubuntu3
- linux-signed-generic 4.4.0.22.23
- shim-signed 1.12+0.8-0ubuntu2
答案1
简单的解决方案是禁用安全启动,如我的这个页面。可以肯定的是,最好在启用安全启动的情况下运行,但如果该功能不能按设计运行,那就是一个负担。
为了进行更彻底的诊断,我建议您首先通过键入来检查您的 EFI 启动项sudo efibootmgr -v
,如下所示:
$ sudo efibootmgr -v
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0003,0007,0001
Boot0000* rEFInd Boot Manager HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\refind\refind_x64.efi)
Boot0001* Lenovo Recovery System HD(3,276800,1f4000,de3b7563-97f5-48c6-ab7f-2f5d6d57c644)File(\EFI\Microsoft\Boot\LrsBootMgr.efi)RC
Boot0003* ubuntu HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\ubuntu\shimx64.efi)RC
Boot0007* Windows Boot Manager HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\Microsoft\Boot\bootmgfw.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.}....................
检查该BootOrder
行并按顺序检查每个指定的条目。例如,在此示例中,0000
是第一个,并Boot0000
启动 rEFInd。您应该更详细地检查的是文件启动的文件,例如\EFI\refind\refind_x64.efi
本例中的Boot0000
。在标准 Ubuntu 安全启动的情况下,文件应该是shimx64.efi
,当然本例中的情况并非如此Boot0000
——但它是对于此示例的下一个启动项而言为 true Boot0003
。
此示例可能会产生安全启动警告,如您在大多数计算机上描述的一样,但在该警告之后,GRUB 和 Ubuntu 可能会启动,因为当Boot0000
失败时,系统将继续Boot0003
,这应该成功。这种情况可能发生在你身上——但它可能grubx64.efi
先启动,然后无法继续或shimx64.efi
可能没有条目。如果是这种情况,你可以使用选项调整启动顺序-o
或efibootmgr
完全创建一个新条目。不过,细节取决于你看到的内容efibootmgr -v
以及硬盘上实际安装的内容。
如果你的efibootmgr -v
输出显示计算机应该shimx64.efi
首先启动,那么我建议你将该文件与EFI/BOOT/bootx64.efi
Ubuntu 安装介质上的文件进行比较做启动。使用 检查它们的文件大小,ls -l
并检查它们是否与 相同diff
;例如:
diff /mnt/cd-media/EFI/BOOT/bootx64.efi /mnt/esp/EFI/ubuntu/shimx64.efi
(当然,挂载点可能会有所不同。)这些文件应该相同,diff
表示没有输出。如果它们不相同,您可以尝试用安装介质中的文件覆盖shimx64.efi
硬盘上的bootx64.efi
。如果由于软件包升级导致两个文件不相同,则可能是提交错误报告。但是,它们可能由于其他原因而不相同,例如磁盘损坏或复制文件时出现(非常罕见的)错误。
如果文件相同,但外部介质可以启动而硬盘不能,那么这可能意味着您的 EFI 存在错误。您可以在制造商的网站上查找更新。(他们可能称之为“BIOS 更新”,尽管它实际上不是 BIOS。)如果这没有帮助,您可以尝试向制造商提交错误报告。