我使用 Kubuntu 18.04,并尝试使用 NVIDIA 本身提供的运行文件安装 NVIDIA 驱动程序,而不是使用包管理器。我首先安装了以下软件包:
$ sudo nano /etc/modprobe.d/blacklist-nouveau.conf
进入文件后,我添加了以下内容并保存了文件:
blacklist nouveau
options nouveau modeset=0
运行以下命令并重新启动操作系统:
$ dracut -f
如果你不熟悉它,它就像这样的命令:
update-initramfs -u
重启后我安装了这些必需的软件包:
$ sudo apt install build-essential make acpid dkms libglvnd-core-dev libglvnd0 libglvnd-dev dracut pkg-config linux-headers-$(uname -r)
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install libc6:i386
处理所有必要的依赖关系
由于已启用安全启动(我打算保持这种状态),为了能够继续安装,我必须签署内核模块才能安装 NVIDIA 驱动程序。但我不知道如何从内核模块制作所需的 .der 文件,但我知道如何将其添加到 UEFI/BIOS 中的 DB 中,这样错误就会消失。如果我尝试使用 dkms 安装,它会卡在 5%,如果我不使用 dkms 安装,我会收到此错误:
The kernel module failed to load, because it was not signed by a key that is trusted by the kernel. Please try installing the driver again, and sign the kernel module when prompted to do so.
那么我如何签署内核模块并输出.der 文件以添加到安全启动数据库?
答案1
如果你以前没有做过这件事,那就不容易。
- 安装
xca
,因为它更容易使用和创建自签名证书或链。 - 将根链或自签名证书本地存储在证书数据库中并运行导入脚本。不确定它在 Ubuntu 上的位置。
- 安装内核源
- 运行
<path to kernel source>/scripts/sign-file sha256 <path to cert root PEM> <path to cert CRT file> <kernel module.ko>
。PEM 和 CRT 不能是同一个文件。 - 将其复制到
/lib/modules/<kernel mod dir>/misc
,并根据需要压缩它。 - 跑步
depmod
- 现在你应该能够做到
modprobe
了。
我确信该证书必须设置代码签名属性。
我思考这就对了。