我正在尝试签署一份nVidia 内核和一个virtualbox 模块使用莫库蒂尔。
我的问题是Shim IEFI 密钥管理重启后没有显示,所以我可以注册钥匙。
使用mokutil --list-new
,我可以看到我的密钥已安排注册。此外,安全启动特点是已启用以及 mokutil 验证。但是,重启后,我预计Shim IEFI 密钥管理加载,但我启动到 Ubuntu,并且密钥仍然未注册(执行mokutil --list-enrolled
给出:无法读取 MokListRT:没有此文件或目录)
我的操作系统是 Ubuntu 16.04 LTS,我尝试签名的 nvidia 驱动程序是 384.59,我的 virtualbox 版本是 5.1.26。
先感谢您。
答案1
您可以通过多种方式进行操作,但并非所有方式都能发挥同样好的效果,具体取决于您的硬件和需求:
- 一些 EFI 提供了启动任意程序的选项。您可以使用此功能启动 MokManager(
MokManager.efi
或在包含和 的mmx64.efi
同一目录中)。这可能是最直接的方法,但此 EFI 功能相对较少,即使存在,也没有关于它在 EFI 菜单系统中的位置的标准化规定,因此您必须自己去寻找它。shimx64.efi
grubx64.efi
- 准备一个带有 FAT 文件系统的 USB 闪存驱动器,
EFI/BOOT
在该驱动器上创建一个目录,然后将一些文件从该/boot/efi/EFI/ubuntu
目录复制到EFI/BOOT
USB 闪存驱动器上的目录:在新位置将shimx64.efi
其复制并重命名为,然后复制或而不重命名。(您的 Ubuntu 可能有,但我不记得它是什么时候重命名的。)然后您可以启动到 USB 闪存驱动器,这将启动 MokManager。bootx64.efi
MokManager.efi
mmx64.efi
mmx64.efi
- 您可以使用 EFI shell 程序来完成这项工作。有些 EFI 内置了这样的程序,但这种情况与启动任意程序的能力一样罕见。如果您的 EFI 没有这样的功能,您可以从互联网上下载一个 - 请参阅此Arch Linux 维基页面获得一些提示。将程序放在名为的 FAT USB 闪存驱动器上
EFI/BOOT/bootx64.efi
。然后,您应该能够将 USB 闪存驱动器启动到 shell 并使用它来运行 MokManager。但请注意,您需要暂时禁用安全启动才能运行 EFI shell。您还需要了解足够的 EFI shell 知识,以便导航到 MokManager 二进制文件并运行它。(此 shell 类似于 DOS 或 Windows 命令提示符。Arch wiki 提供了一些有关如何使用它的提示。) - 你可以使用我的rEFInd 启动管理器在 USB 闪存驱动器或 CD-R 上。这将为您提供一个图标来启动 MokManager,或者至少是 EFI shell。与直接启动 EFI shell 一样,您需要暂时禁用安全启动才能使此选项起作用。
- 您可以使用 PPA 或 Debian 软件包将 rEFInd 安装到硬盘上。重新启动时,MokManager 应启动,使您能够注册 rEFInd 的密钥和您自己的密钥。这是一种极端的方法,因为它会让 rEFInd 控制您的启动过程。因此,除非您确定要切换到 rEFInd 作为您的主要启动管理器,否则这不是一个好选择。我提到它只是为了完整性。
我会大致按照这个顺序尝试这些选项,但如果你不喜欢它的声音或知道它不起作用,你可以自行判断并跳过某些内容。