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 目录安装新内核或新版本的模块内核后,您必须重复签名过程。
阅读以下链接以澄清:
答案2
内核错误 #1571691答案:
sudo apt-get install mokutil; sudo mokutil --disable-validation