Ubuntu下UEFI安全启动安装Nvdia驱动
简介
众所周知,Ubuntu默认使用Nouveau开源驱动,其性能受限,因此我们需要安装Nvidia专用驱动。
安装专用驱动的一般方法非常简单,只需要sudo ubuntu-drivers devices && sudo ubuntu-drivers autoinstall
即可,但该方法安装的驱动需要手动进行内核签名,否则其将无法与安全启动共存。因此,更推荐采取在Nvidia官网下载.run
并执行安装的方式。
本博客结合其他优质博客,取其精华去其糟粕,结合本人在安装时遇到的实际问题,详细整理执行.run
的安装方式,并发表此文。
博主系统环境如下:
- KDE Neon 6.3
- Geforce RTX 4060(Laptop)
安装必要环境
- 首先更新软件源:
sudo apt update
- 安装必要编译环境:
sudo apt install build-essential -y
卸载先前安装的驱动
- 首先,请确认先前是否安装了Nvidia驱动。使用
dpkg -l | grep nvidia
命令查看。 - 若先前以apt安装了驱动,使用
sudo apt-get purge nvidia-*
进行卸载;若先前以.run
安装的驱动,使用sudo /usr/bin/nvidia-uninstall
卸载。
下载驱动安装脚本
- 打开Nvidia驱动官网,查找并下载自己显卡的驱动。若不知道自己的显卡型号,执行
lspci | grep -i vga
进行查看。 - 耐心等待下载,由于服务器位于国外,下载速度较慢,请确保您有良好的国际互联网连接,相关资料请自行搜索,博主无法提供解决方案。
- 下载后,得到一个
.run
结尾的文件。
禁用开源驱动
- 执行
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist-nouveau.conf
以永久禁用开源驱动。 - 执行
sudo update-initramfs -u
使命令生效。
安装动态内核模块支持(DKMS)
- 由于
.run
安装的驱动依赖于内核,当内核更新后,需重新执行.run
的安装。因此,我们使用DKMS管理驱动,它会在内核更新后自动重新编译 NVIDIA 驱动模块。 - 安装DKMS:
sudo apt install dkms -y
进入tty模式并安装
- 由于在GUI 环境下安装可能会失败,所以需要切换到纯文本模式进行安装。
- 使用
sudo systemctl set-default multi-user.target && sudo reboot now
重启计算机,重启后,使用系统账户的账号密码登录。 - 进入先前下载驱动的目录,此处以
~/Download
为例:cd ~/Download
- 为安装脚本添加可执行权限:
sudo chmod a+x ./NVIDIA-Linux-x86_xxx.run
。其中xxx
请替换为实际驱动版本号。 - 执行安装脚本:
sudo ./NVIDIA-Linux-x86_xxx.run --dkms
,使用选项--dkms
以启用DKMS模块进行安装。
生成签名密钥
- 一路继续安装,执行脚本会编译内核模块等。
- 当执行到询问是否需要签名页面时,选择“Sign the kernel module”。
- 签名密钥生成成功后,会展示
.der
扩展名的文件路径。
导入签名密钥
- 进入Nvidia目录:
cd /usr/share/nvidia
。 - 使用
.der
文件进行签名:sudo mokutil --import nvidia-modsign-crt-xxx.der
,其中xxx请替换为实际文件名。 - 会提示创建密码,输入后确认即可。
- 启用GUI模式并重启系统:
sudo systemctl set-default graphical.target && sudo reboot now
对密钥签名
- 重启后,进入蓝屏的mok management页面。选择“Enroll mok”。
- 可见key 0以导入,之后对其签名,选择“Continue”,之后选择“yes”
- 输入导入签名密钥时设置的密码,之后选择“Reboot”。
验证
- 重启后,安装与签名过程已结束。使用
nvidia-smi
命令验证是否安装成功。
参考资料
本文参考博客:UEFI安全启动模式下安装ubuntu的nvidia显卡驱动。
本文添加了查看显卡型号,卸载先前驱动,在tty模式下安装,以及DKMS模块内容。