mokutil - 几乎所有选项都失败

过去,我成功地创建了一个证书并签署了用于虚拟机内核模块的证书。现在,在运行mokutil时,除了--sb-state之外,我尝试的所有其他参数都失败了。
基本信息:
1. 在Asus X99-E主板上运行的Ubuntu 17.10 64位。 2. 所有命令都以root身份运行。
示例结果:
--reset
Failed to write MokAuth
Failed to issue a reset request

--list-enrolled
Failed to read MokListRT: No such file or directory

--password
input password: 
input password again: 
Failed to write MokPW: Invalid argument

--import MOK.der
input password: 
input password again: 
Failed to enroll new keys

可能相关的信息:
dmesg | grep -i mok
[    9.114419] MODSIGN: Couldn't get UEFI MokListRT

有人有什么建议吗?我做错了什么?MokAuth、MokListRT、MokPW等等存储在哪里,导致无法写入它们?
可能相关的一点信息是,之前成功使用mokutil的时候是在硬件更改之前。我曾经有一个RAID控制器,会随机弹出我的阵列中的驱动器,所以我将阵列上的分区克隆到外部驱动器上,更换了卡片,重新创建了新的阵列并恢复了分区。这包括Ubuntu的根分区。
除此之外,机器和之前正常工作时一样。
欢迎任何想法。
史蒂夫。
3个回答

看起来是主板上的 UEFI bug。其他一些 UEFI/BIOS 也未能实现 mokutil 所需的某种方法。我还有一个问题是跟 Asus X99-E USB3.1 主板有关。

你可以通过将密钥保存在 USB 存储设备上,进入 BIOS 设置并导入密钥来手动注册密钥。由于涉及鼠标和回车键的奇怪交互方式,当你认为应该导入时它可能没有成功。但你仍然可以这样做。


1至少ASUS Z97-WS也无法成功注册密钥。供参考。 - Monah Tuk
1应该将密钥添加到哪个密钥库中?我指的是KEK、DB还是DBX。 - user4182277
非常感谢提供有关如何使其与华硕主板兼容的更多信息。我在使用华硕X99 Deluxe时遇到了问题。 - Alex
所有这些模块签名密钥的密钥库是“db”。PK是平台密钥,通常不会对其进行更改。KEK是密钥交换密钥,一般情况下不会对其进行更改,因为它是用于交换密钥的密钥。dbx是被吊销的密钥。 - LarrySB

这个问题在18.04 LTS上也存在,并且可能在后续的Ubuntu版本中也存在。
我有多个ASUS X99WS/IPMI和X99WS-E主板,但它们都无法与'mokutil'一起使用。这可能是主板或BIOS的某种错误。我有ASUS-X299 Prime-II,它可以正常工作。
虽然x99主板已经有些年头了,但Xeon E5-2600v3和E5-2600v4系列在多GPU和Infiniband或10+g RoCe以太网的RDMA方面表现非常出色。
解决方法是手动在BIOS设置中注册密钥:
Nvidia的驱动程序安装将创建一个'MOK.der'文件,该文件是您机器独有的,并对驱动程序进行签名(或者您可以使用自己的文件进行签名)。Nvidia的apt安装程序会将mok文件放置在以下位置:
/var/lib/shim-signed/mok

它将使用相同的密钥签署后续安装,非常方便。
最简单的方法是将"MOK.der"文件复制到USB键上。
重新启动计算机,进入BIOS设置,使用"高级模式"并导航到"Boot/SecureBoot/ManageKeys"菜单。
密钥放在'db'存储库中。因此,在弹出的对话框中选择"追加到db",并选择"否"(至少可以说是违反直觉)。导航到UEFI存储路径以找到您的USB键,选择它并按Enter键。它会询问文件是什么类型,选择"...blob"。
执行"保存并重置"(F10键)以重新启动。
完成,您的NVIDIA驱动程序将在安全启动中加载。
我还必须安装Mellanox驱动程序。Mellanox提供直接下载:
wget http://www.mellanox.com/downloads/ofed/mlnx_signing_key_pub.der

.der文件复制到USB键上,然后执行相同操作(在BIOS中可以添加多个键)。

请记住来自UEFI安全启动定制的4.3.1节 - 2020年9月版本1.1 S/N: U/OO/168873-20 PP-20-0652 - NSA(未分类)中的内容:“不使用PEM和DER扩展名,因为许多UEFI配置界面和操作系统实现不将PEM和DER识别为有效的证书文件扩展名。” - Shawn Eary
这个出色的指南对于ASUS ROG Maximus VII Hero来说非常完美,可以启用amdgpu内核模块。只是在启动之前不要忘记拔掉USB驱动器 - 看起来ASUS的BIOS在记住启动优先级选择方面有问题... - Dmitry Mikushin
太棒了的回答!真希望我能给这个点赞一百万次! - Hossein

你应该使用sudo权限运行上述命令。
例如:sudo mokutil --password 来设置新密码。

为什么我需要使用“sudo”来切换到root用户,当我在第二点明确说明“所有命令都以root身份运行”? - user821263