2023年马上结束了,相信各个Linux发行版安装nvidia驱动都差不多是一键安装的方便程度了,今天介绍签名以支持主板安全启动的方法,适用于 Debian 12,可能 Ubuntu、mint 等基于debian的发行版也可以借鉴这个方法,如果你是其他发行版或者安装的官网驱动也可以简单看看。
通过 Debian apt 包管理器安装 nvidia 驱动
建议安装发行版仓库里的 nvidia 驱动,nvidia 官网也推荐这样做,Linux发行版众多,接口、包、库可能各有差异,要想针对本发行版做到最大化的支持和兼容,还是得选择稳妥的方案
nvidia 官网的驱动我之前安装过,但是某次内核升级,debian重启之后就挂掉了,似乎nvidia 官网的驱动和模块并没有被自动重编译,查询相关的解决方案是要么重新安装一次驱动,要么重新签名,总之体验十分不好,总不能次次更新系统都要这样吧,而 apt 仓库里的驱动已经有脚本自动配置好跟随系统一起重新编译和加载了
配置源文件,nvidia 驱动需要启用 contrib 和 non-free 分支 ,你也可以直接复制下面这个清华大学镜像源
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware 2.刷新源
apt update 3.安装 headers 和 dkms
apt install linux-headers-amd64 dkms 4.安装nvidia驱动
apt install nvidia-driver firmware-misc-nonfree 这样就安装好了,至于禁用 nouveau 驱动不用特别处理,官方的包都已经自动帮你配置好了,安装过程你只需要敲一次回车确认会帮你禁用的,然后重启,就能使用nvidia驱动了
然而
如果你没有启用安全启动,一切到这里都应该划上句号了
下面讲签名
在 /var/lib/dkms 目录下,你能看到相关的密钥

确认之后,那么我们就开始导入
mokutil --import /var/lib/dkms/mok.pub 输入,回车之后,系统会让你输入密码,随意,尽量简单,输完还会让你重输一次确认,该密码主要是用来确认证书是由“自然人”安装的,不是恶意程序导入的,在你待会儿重启的时候,甚至在grub都没加载之前,主板就会开始问你是否导入证书以用来安全启动认证,到时候你就输入这个密码,确认即可,放心只需要导入一次,以后就不用每次重启都这样了
reboot 重启之后,你会发现电脑自动进入蓝屏界面,但是不要害怕,不是故障,而是让你认证刚才导入的密钥,请按照流程导入、认证。请注意,当你开机看到蓝屏之后要赶紧随便按键盘任意一个键停留下来,什么都不按这个导入密钥的界面大概只有不到10秒的等待时间,就会跳过,不要发呆,倒是之后的界面你可以慢慢的操作不用着急

选择 Enrool MOK 回车确认

选择 Continue 回车确认

选择 yes 回车继续

输入密码。刚才导入密钥时你设置的那个密码,回车确认即可

选择 Reboot 重启
至此,安全启动下的 nvidia 已经配置好了,打开bios里的安全启动能正常开机了
开机,在终端里验证,安全模式启动,nvidia密钥存在,lsmod 模块已载入


GRUB
echo 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX nvidia-drm.modeset=1"' > /etc/default/grub.d/nvidia-modeset.cfg 配置GRUB修改内核启动参数
update-grub 更新生成新的grub引导配置
重启即可
initramfs
echo options nvidia_drm modeset=1 | sudo tee /etc/modprobe.d/nvidia_drm.conf 配置initramfs模块的加载
update-initramfs -u 更新生成新的initramfs
重启即可
以上两种方法任意选择一个,效果都一样,都能解决Wayland无法使用nvidia的问题
系统不正常的原因一般很多,都需要自己查原因,这里只是提供一个可能的解决办法以及假设就是sddm的问题
安装随机数工具
apt install rng-tools5
systemctl enable rngd.service
systemctl start rngd.service 出现这个情况的大多是 KDE 桌面和 SDDM 管理器的组合,原因是SDDM在搭配闭源nvidia驱动启动桌面的过程中,需要获取随机数来生成安全相关的一些数据,但是某些情况下,系统的 /dev/random 生成过于缓慢,以至于阻塞了,安装这个随机数工具,能够大大提高系统随机数的熵池以及生成速度,如果你已经在进不了桌面的情况了,可以重启进入恢复模式,在恢复模式安装这个工具,设置开机自启,就OK了
一般出现在新手里,通常网上的方法是对的,配置grub也好,配置modprobe也罢,重启后发现无效的原因是没有更新生成相应的文件,
如果你是通过修改 grub 内核启动参数来禁用nouveau,一定在修改之后记得更新grub再重启
update-grub 如果你是通过配置modprobe(modules)禁用模块的方式,一定在修改之后记得更新initramfs再重启
update-initramfs -u 这个没办法,所有发行版都这样,没什么特别需要,X11还是默认的