Debian安装nvidia驱动并签名,支持安全启动 & 一些tips
钱包里放的有创可贴
编辑于 2025年10月13日 14:25
收录于文集
共5篇

2023年马上结束了,相信各个Linux发行版安装nvidia驱动都差不多是一键安装的方便程度了,今天介绍签名以支持主板安全启动的方法,适用于 Debian 12,可能 Ubuntu、mint 等基于debian的发行版也可以借鉴这个方法,如果你是其他发行版或者安装的官网驱动也可以简单看看。

  • 通过 Debian apt 包管理器安装 nvidia 驱动

  • 建议安装发行版仓库里的 nvidia 驱动,nvidia 官网也推荐这样做,Linux发行版众多,接口、包、库可能各有差异,要想针对本发行版做到最大化的支持和兼容,还是得选择稳妥的方案

  • nvidia 官网的驱动我之前安装过,但是某次内核升级,debian重启之后就挂掉了,似乎nvidia 官网的驱动和模块并没有被自动重编译,查询相关的解决方案是要么重新安装一次驱动,要么重新签名,总之体验十分不好,总不能次次更新系统都要这样吧,而 apt 仓库里的驱动已经有脚本自动配置好跟随系统一起重新编译和加载了


 

安装 nvidia 驱动

  1. 配置源文件,nvidia 驱动需要启用 contrib 和 non-free 分支 ,你也可以直接复制下面这个清华大学镜像源

代码块
HTML
自动换行
复制代码
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.刷新源

代码块
HTML
自动换行
复制代码
apt update
复制成功

   3.安装 headers 和 dkms

代码块
HTML
自动换行
复制代码
apt install linux-headers-amd64 dkms
复制成功

   4.安装nvidia驱动

代码块
HTML
自动换行
复制代码
apt install nvidia-driver firmware-misc-nonfree
复制成功

这样就安装好了,至于禁用 nouveau 驱动不用特别处理,官方的包都已经自动帮你配置好了,安装过程你只需要敲一次回车确认会帮你禁用的,然后重启,就能使用nvidia驱动了

然而

如果你没有启用安全启动,一切到这里都应该划上句号了

下面讲签名


签名

  • 签名有两种方法,一种是自己生成密钥、认证、导入、启用等等一系列繁琐的步骤,一种是只需要复制黏贴一行命令即可

  • 我们先讲最简单的,因为上一步安装的是官方仓库的包,所以密钥都已经帮我们生成好了,只需要我们手动导入即可,就这么简单

  • 原因可能是说到底nvidia驱动是不开源的,可能违背开源精神,不方便直接信任载入安全启动密钥列表,可以理解

  • mok签名密钥和mok证书的位置默认为 /var/lib/dkms

在 /var/lib/dkms 目录下,你能看到相关的密钥

顺便提一下,如果你安装的是nvidia官网的驱动,生成的密钥在 /usr/share/nvidia 下,后缀名为 der 的就是你要的密钥文件,导入流程都是一样的,导入的时候自行替换路径和文件名即可

确认之后,那么我们就开始导入

代码块
HTML
自动换行
复制代码
mokutil --import /var/lib/dkms/mok.pub
复制成功

输入,回车之后,系统会让你输入密码,随意,尽量简单,输完还会让你重输一次确认,该密码主要是用来确认证书是由“自然人”安装的,不是恶意程序导入的,在你待会儿重启的时候,甚至在grub都没加载之前,主板就会开始问你是否导入证书以用来安全启动认证,到时候你就输入这个密码,确认即可,放心只需要导入一次,以后就不用每次重启都这样了

代码块
HTML
自动换行
复制代码
reboot
复制成功

重启之后,你会发现电脑自动进入蓝屏界面,但是不要害怕,不是故障,而是让你认证刚才导入的密钥,请按照流程导入、认证。请注意,当你开机看到蓝屏之后要赶紧随便按键盘任意一个键停留下来,什么都不按这个导入密钥的界面大概只有不到10秒的等待时间,就会跳过,不要发呆,倒是之后的界面你可以慢慢的操作不用着急

选择 Enrool MOK   回车确认

选择 Continue   回车确认

选择 yes  回车继续

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

选择 Reboot 重启

至此,安全启动下的 nvidia 已经配置好了,打开bios里的安全启动能正常开机了

开机,在终端里验证,安全模式启动,nvidia密钥存在,lsmod 模块已载入


至于第一种用户手动生成证书的步骤,太过冗长,这里分享一下 Debian 官方wiki的流程,相信debian系衍生版可以得到参考,其他发行版应该也能借鉴,网址在下面

https://wiki.debian.org/SecureBoot#Using_your_key_to_sign_modules


关于使用nvidia驱动过程中碰到的一些问题

Nvidia驱动对于Wayland的支持,主要有两个方法,修改grub启动参数,或者配置initramfs

第一种方法

GRUB

代码块
XML
自动换行
复制代码
echo 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX nvidia-drm.modeset=1"' > /etc/default/grub.d/nvidia-modeset.cfg
复制成功

配置GRUB修改内核启动参数

代码块
HTML
自动换行
复制代码
update-grub
复制成功

更新生成新的grub引导配置

重启即可

第二种方法

initramfs

代码块
HTML
自动换行
复制代码
echo options nvidia_drm modeset=1 | sudo tee /etc/modprobe.d/nvidia_drm.conf
复制成功

配置initramfs模块的加载

代码块
HTML
自动换行
复制代码
update-initramfs -u
复制成功

更新生成新的initramfs

重启即可

以上两种方法任意选择一个,效果都一样,都能解决Wayland无法使用nvidia的问题


输入密码后黑屏

系统不正常的原因一般很多,都需要自己查原因,这里只是提供一个可能的解决办法以及假设就是sddm的问题

安装随机数工具

代码块
HTML
自动换行
复制代码
apt install rng-tools5
复制成功

代码块
HTML
自动换行
复制代码
systemctl enable rngd.service
复制成功

代码块
HTML
自动换行
复制代码
systemctl start rngd.service
复制成功

出现这个情况的大多是 KDE 桌面和 SDDM 管理器的组合,原因是SDDM在搭配闭源nvidia驱动启动桌面的过程中,需要获取随机数来生成安全相关的一些数据,但是某些情况下,系统的 /dev/random 生成过于缓慢,以至于阻塞了,安装这个随机数工具,能够大大提高系统随机数的熵池以及生成速度,如果你已经在进不了桌面的情况了,可以重启进入恢复模式,在恢复模式安装这个工具,设置开机自启,就OK了

禁用nouveau失败的问题

一般出现在新手里,通常网上的方法是对的,配置grub也好,配置modprobe也罢,重启后发现无效的原因是没有更新生成相应的文件,

如果你是通过修改 grub 内核启动参数来禁用nouveau,一定在修改之后记得更新grub再重启

代码块
HTML
自动换行
复制代码
update-grub
复制成功

如果你是通过配置modprobe(modules)禁用模块的方式,一定在修改之后记得更新initramfs再重启

代码块
HTML
自动换行
复制代码
update-initramfs -u
复制成功

一些应用对Wayland支持不好的情况

这个没办法,所有发行版都这样,没什么特别需要,X11还是默认的