我使用我的发行版(Zorin OS)在首次安装时提供的选项在我的 PC 上安装了专有的 NVIDIA 驱动程序。不幸的是,驱动程序的签名未注册到 MOK,这导致安全启动阻止其加载。
运行modinfo nvidia
告诉我驱动程序确实已签名,但mokutil --list-enrolled
在任何地方都没有显示驱动程序的签名。所以一直没有被录取。
之后如何将驱动程序签名注册到MOK?我只找到了有关自己签署模块,然后将自己的签名注册到 MOK 的解决方案 - 但我已经签署了它,我只是找不到一种方法将签名从modinfo
MOK 中获取。
提前致谢!
您不注册特定签名;您注册用于进行签名的密钥(公共部分)。通常(= 除非您接管系统上整个安全启动密钥层次结构的控制),该密钥称为机器所有者密钥,简称 MOK。
由于 Zorin 基于 Ubuntu,而 Ubuntu 又基于 Debian,因此我预计 MOK 签名密钥的标准位置将与 Debian 中的相同,即目录
/var/lib/shim-signed/mok/
。该目录应包含两个文件:
MOK.der
是可用于检查签名有效性的公钥,以及相应的,可用于创建签名的私钥。MOK.priv
要使用现有密钥(您的 NVidia 模块已使用该密钥进行签名)重新启动 MOK 注册过程,请运行:
它将要求您设置一个一次性密码以完成注册过程,这将在下次重新启动时发生。
重新启动系统后,安全启动垫片将启动 MOK 管理器 EFI 实用程序 (
/boot/efi/EFI/<distribution>/mmx64.efi
),该实用程序将询问您刚刚设置的密码,并最终确认您确实希望注册 MOK。此过程可确保您只有在拥有 root 权限并且可以访问物理系统控制台的情况下才能注册 MOK。