当前位置: 首页 > article >正文

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)

安装必要环境

  1. 首先更新软件源:sudo apt update
  2. 安装必要编译环境:sudo apt install build-essential -y

卸载先前安装的驱动

  1. 首先,请确认先前是否安装了Nvidia驱动。使用dpkg -l | grep nvidia命令查看。
  2. 若先前以apt安装了驱动,使用sudo apt-get purge nvidia-*进行卸载;若先前以.run安装的驱动,使用sudo /usr/bin/nvidia-uninstall卸载。

下载驱动安装脚本

  1. 打开Nvidia驱动官网,查找并下载自己显卡的驱动。若不知道自己的显卡型号,执行lspci | grep -i vga进行查看。
  2. 耐心等待下载,由于服务器位于国外,下载速度较慢,请确保您有良好的国际互联网连接,相关资料请自行搜索,博主无法提供解决方案。
  3. 下载后,得到一个.run结尾的文件。

禁用开源驱动

  1. 执行echo "blacklist nouveau" >> /etc/modprobe.d/blacklist-nouveau.conf以永久禁用开源驱动。
  2. 执行sudo update-initramfs -u使命令生效。

安装动态内核模块支持(DKMS)

  1. 由于.run安装的驱动依赖于内核,当内核更新后,需重新执行.run的安装。因此,我们使用DKMS管理驱动,它会在内核更新后自动重新编译 NVIDIA 驱动模块。
  2. 安装DKMS:sudo apt install dkms -y

进入tty模式并安装

  1. 由于在GUI 环境下安装可能会失败,所以需要切换到纯文本模式进行安装。
  2. 使用sudo systemctl set-default multi-user.target && sudo reboot now重启计算机,重启后,使用系统账户的账号密码登录。
  3. 进入先前下载驱动的目录,此处以~/Download为例:cd ~/Download
  4. 为安装脚本添加可执行权限:sudo chmod a+x ./NVIDIA-Linux-x86_xxx.run。其中xxx请替换为实际驱动版本号。
  5. 执行安装脚本:sudo ./NVIDIA-Linux-x86_xxx.run --dkms,使用选项--dkms以启用DKMS模块进行安装。

生成签名密钥

  1. 一路继续安装,执行脚本会编译内核模块等。
  2. 当执行到询问是否需要签名页面时,选择“Sign the kernel module”。
  3. 签名密钥生成成功后,会展示.der扩展名的文件路径。

导入签名密钥

  1. 进入Nvidia目录:cd /usr/share/nvidia
  2. 使用.der文件进行签名:sudo mokutil --import nvidia-modsign-crt-xxx.der,其中xxx请替换为实际文件名。
  3. 会提示创建密码,输入后确认即可。
  4. 启用GUI模式并重启系统:sudo systemctl set-default graphical.target && sudo reboot now

对密钥签名

  1. 重启后,进入蓝屏的mok management页面。选择“Enroll mok”。
  2. 可见key 0以导入,之后对其签名,选择“Continue”,之后选择“yes”
  3. 输入导入签名密钥时设置的密码,之后选择“Reboot”。

验证

  1. 重启后,安装与签名过程已结束。使用nvidia-smi命令验证是否安装成功。

参考资料

本文参考博客:UEFI安全启动模式下安装ubuntu的nvidia显卡驱动。
本文添加了查看显卡型号,卸载先前驱动,在tty模式下安装,以及DKMS模块内容。


http://www.kler.cn/a/610609.html

相关文章:

  • GitHub 供应链攻击:从 Coinbase 项目到大规模机密泄露
  • 好用的Markdown阅读编辑器Typora破解记录
  • 【蓝桥杯】每日练习 Day13
  • 【区块链安全 | 第一篇】密码学原理
  • 【linux复习】——进程间通信
  • Flutter 中 GetX 的优缺点及常见问题解决方案
  • Java的DES/CBC/PKCS7Padding加密算法封装类
  • 在线运行vscode
  • 应用服务接口第二次请求一直pending问题
  • qtcreator不能用调试怎么办,打开维护工具,添加Qt Debug Information Files” 这一选项
  • 【区块链安全 | 第五篇】DeFi概念详解
  • LabVIEW多CAN设备连接故障
  • ref和reactive区别
  • Ardupilot开源无人机之Geek SDK进展2025Q2
  • Linux Namespace(网络命名空间)系列二 --- 使用 Open vSwitch 和网络命名空间搭建虚拟网络
  • 2025.03.26【基因数据解析】| BackSPIN:高效基因聚类与过滤工具详解
  • 图的广度优先搜索(BFS)和深度优先搜索(DFS)算法介绍与应用场景以及 C# 代码实现
  • C++蓝桥杯实训篇(一)
  • MySQL数据库表的约束,关联及查询
  • 三方线上美食城|基于Springboot的三方线上美食商城系统