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