Ubuntu 16.04 内核 4.4.0-21 不再加载 nvidia/vboxdrv 模块(所需密钥不可用)

Ubuntu 16.04 内核 4.4.0-21 不再加载 nvidia/vboxdrv 模块(所需密钥不可用)

Ubuntu 16.04(4.4.0-21)的最新内核不再加载 nvidia(和 vboxdrv)模块。

$ sudo modprobe -v nvidia
insmod /lib/modules/4.4.0-21-generic/updates/dkms/nvidia_361.ko 
modprobe: ERROR: could not insert 'nvidia_361': Required key not available

使用 4.4.0-18 仍可正常运行。有什么变化?我该如何修复该问题?

答案1

有一种方法可以保持安全启动并使用专有内核模块,如 NVidia 或 VirtualBox。首先下载 xca 应用程序:

sudo apt install xca

然后创建新数据库并生成新密钥。接下来从该私钥生成 CA 证书。将私钥导出为 PEM 格式,将 CA 公钥导出为 DER 格式。将 CA 证书导入 MOK 数据库:

sudo mokutil --import CAcert.cer

程序要求您输入 MOK 数据库的密码。重启后,MOKManager 将在 GRUB 之前执行。选择Enroll keys,选择您之前添加的证书并输入密码进行确认。之后,您的 CA 证书将添加到 MOK 数据库。重启。

接下来在内核头文件脚本目录中找到 sign-file 程序。对我来说它位于:

/usr/src/linux-headers-4.4.0-22-lowlatency/scripts/sign-file

现在签署所有内核模块/lib/modules/4.4.0-22-lowlatency/updates/dkms/。例如:

/usr/src/linux-headers-4.4.0-22-lowlatency/scripts/sign-file sha256 CA.pem CAcert.cer /lib/modules/4.4.0-22-lowlatency/updates/dkms/nvidia_361.ko

此后,您将能够无错误地加载模块Required key not available

从 dkms 目录安装新内核或新版本的模块内核后,您必须重复签名过程。

阅读以下链接以澄清:

https://wiki.ubuntu.com/SecurityTeam/SecureBoot

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-signing-kernel-modules-for-secure-boot.html

答案2

内核错误 #1571691答案

sudo apt-get install mokutil; sudo mokutil --disable-validation

相关内容