如何将主板固件数据库中存储的安全启动密钥与签名的 .efi 文件进行比较?

如何将主板固件数据库中存储的安全启动密钥与签名的 .efi 文件进行比较?

在虚拟机中启用安全启动是小菜一碟,但我很难在我的 2012 年老式计算机上使用 OpenSUSE 做同样的事情,即使在标准配置下(似乎使用微软的密钥)也拒绝以安全启动模式启动。我想解决最关键的部分:固件和垫片之间的密钥是否匹配?如何检查?

答案1

什么是安全启动?

引用粒子大作战:

...安全启动是指根据制造时放置在设备上的已知安全加密密钥来验证设备固件和操作系统的过程。每次设备启动时都会进行此身份验证,以验证正在加载的固件或代码是由生产者放置的合法版本。

上面的引用和链接指的是物联网设备。如果我们将个人电脑视为“事物”,这句话仍然适用于个人电脑。就OP的问题而言,设备的年龄并不重要,因为引用的前提在2012年与现在是相同的。我将使用密钥存储库需要“重置”的假设来开始此故障排除答案的其余部分,OP 已经完成了这一操作,但我这样做是为了未来访问者的利益。

详细步骤

让我们生成一个编号列表,列出我们需要做什么来将该任务分成更小的块:

  1. 继续阅读安全启动在 Linux 中如何与 SuSE 配合使用笔记:2012 年该链接中的实现几乎是所有发行版实现安全启动的方式。
    • 为了简单起见,我将发布那篇文章的“内容”(对于那些略读的人),因为这是OP所面临的基本问题): 安全启动流程图
  2. 将 Mac 的固件重置为出厂默认设置执行 PRAM 复位
  3. 使用这些步骤罗德里克·史密斯概述
    • 如果 OpenSuSE Live ISO 包含 MokManager 程序或 MokUtil 程序,则步骤 3 可能会被简化。
  4. 将您所需的密钥注册到 MOK 数据库中。
    • 可选:如果您按照上述步骤(第 3 项和第 4 项)操作,您最终将注册 rEFInd 密钥和 SuSE 密钥。如果您计划双引导 OSX 和 OpenSuSE,我建议使用此引导管理器。如果您只计划使用 OpenSuSE,则只需注册该证书。
  5. 现在应该shim知道新密钥并正确地将进程传递给 Grub2,Grub 2 将引导 OpenSuSE。

如果上述步骤失败怎么办

请参阅故障排除部分在 Mac 上安装 openSUSE。作为预感,再次引用罗德里克·史密斯的话:

一些 EFI 实现(主要是 2014 年之前的)在遵守通过 Linux 的 efibootmgr 或其他工具设置的引导选项方面表现不佳。您也可能无法访问此类实用程序,例如您必须在 Windows 中安装 rEFInd。在这种情况下,您可能需要更改引导加载程序的名称,以便 EFI 将其视为默认引导加载程序。当您的 NVRAM 缺少有关要使用的特定引导加载程序的信息时,rEFInd 应该会引导。

在上述情况下,将 OpenSuSE 的shim<arch>.efi文件重命名为boot<arch>.efi,并将其放置在 或 的BOOT目录中(如果没有BOOT目录,则将其放置在根目录中)如果此方法arch有效,x32x64 OP 的固件仅支持从一个文件启动。看:备用命名选项

顺便说一句,即使在较新的系统上也需要这样的修复。看:更新 NVRAM,以便在 Debian 系统上运行 shimx64.efi 而不是 grubx64.efi,以实现安全启动。我感受到OP在这方面的痛苦。

相关内容