![将 Ubuntu EFI DB 和 PK 添加回 UEFI](https://linux22.com/image/991246/%E5%B0%86%20Ubuntu%20EFI%20DB%20%E5%92%8C%20PK%20%E6%B7%BB%E5%8A%A0%E5%9B%9E%20UEFI.png)
我重置了我的 BIOS,现在我的 Ubuntu 16.04 磁盘无法启动,因为它找不到 Ubuntu 安全启动密钥。我该如何将它们重新添加到我的 UEFI 中以便启动?
当我尝试启动时,收到一条消息:“检测到无效签名。在设置中检查安全启动策略”
答案1
首先,Ubuntu 的 Shim 二进制文件包含嵌入其中的 Canonical (Ubuntu) 公钥的副本,并且此二进制文件由 Microsoft 签名,因此应该可以在没有固件中的 Canonical 密钥的情况下启动。也就是说,如果您使用另一个 Shim 二进制文件(例如,如果您与 Fedora 进行双启动并使用 Fedora 的 Shim 来启动启动过程),则可能会遇到您描述的问题。(另请参阅此答案的最后部分...)
在这种情况下,您应该能够使用 MokManager 工具将 Canonical 的密钥添加到 Shim 将读取的 MOK 列表中。MokManager 应该位于您磁盘的EFI 系统分区 (ESP)与 Shim 二进制文件一起。理想情况下,MokManager 应该是您在启动时看到的任何 GRUB 或其他启动管理器菜单上的一个选项。如果不是,您可以调整文件/boot/grub/grub.cfg
以添加这样的条目,它应该如下所示:
menuentry "MokManager" {
insmod part_gpt
insmod chain
set root='(hd0,gpt1)'
chainloader /EFI/fedora/MokManager.efi
}
您需要针对您的特定系统调整该条目。特别是,该set root
选项应指向您的 ESP,它可能是也可能不是(hd0,gpt1)
;并且 MokManager 的路径可能不是我指定的路径。(我以 Fedora 路径为例。请注意,您必须指向您所使用的 Shim 二进制文件附带的 MokManager 二进制文件。)
您还有其他几种选择:
- 您可以完全禁用安全启动。这是最简单的方法,但安全启动是为了提高安全性而存在的,因此我不建议将其作为一般规则,特别是如果您使用 Windows 双启动。如何禁用它的细节因系统而异。我提供了几个示例我的这个页面。
- 您可以完全控制安全启动并将规范公钥添加到您的固件中,如我的这个页面。不过,这种方法适合那些拥有大量“极客街头信誉”的人;它在技术上具有挑战性,即使是熟悉命令行工具的人也可能会遇到一些困难。我提到这种方法主要是因为您的问题的标题指的是 PK 和 db,它们是以这种方式存储的密钥。Canonical 的安全启动标准方法确实不是涉及修改这些键,但这些变量是当您完全控制安全启动时,可以进行调整。如果您以前这样做过,也许您所需要的只是一个指向相关文档的指针,所以就是这样....