Ubuntu 22.04 视觉开发环境搭建(一):NVIDIA 显卡驱动安装完全指南

摘要: 本文详细讲解在 Ubuntu 22.04 上安装 NVIDIA 显卡驱动的完整流程,包括环境预检、Nouveau 禁用、三种安装方法对比、验证步骤以及常见问题排坑。作为视觉开发环境搭建系列的第一篇,这是整个开发链路的基石。
适用读者:有基础 Linux 操作经验的开发者 | 难度:入门 ~ 中级 | 预计阅读时间:20 分钟


一、前言

在 Ubuntu 上搭建视觉开发环境(深度学习、计算机视觉、机器人等),第一步必须是安装 NVIDIA 显卡驱动。这不仅是流程上的建议,更是一条铁律——如果驱动装不好,后面的 CUDA、cuDNN、PyTorch、TensorRT 全部无法工作。

很多初学者会犯一个错误:先装好 CUDA 和 PyTorch,最后才来折腾驱动。结果驱动安装失败导致系统崩溃,前面几个小时的努力全部白费,不得不重装系统。

✅ 推荐原则: 驱动是最脆弱、最容易翻车的环节,必须放在最前面。做成了再继续,做不成随时可以重装系统,代价最小。

本系列文章将覆盖 Ubuntu 22.04 视觉开发环境的完整搭建流程:

篇章 内容 链接
第一篇(本文) NVIDIA 显卡驱动安装
第二篇 CUDA Toolkit 安装与环境配置 待更新
第三篇 cuDNN 安装完全指南 待更新
第四篇 PyTorch GPU 版安装与验证 待更新
第五篇 TensorRT 安装与推理加速 待更新

本文将涵盖以下内容:

  • 安装前的环境预检与冲突排查
  • 彻底禁用 Nouveau 开源驱动
  • 三种驱动安装方法的详细步骤与对比
  • 安装验证与常见问题排坑指南

📌 安装适配提醒

本文提供的是通用安装流程和示例命令。不同显卡型号(如 RTX 3060、RTX 4090、RTX 50 系列)、不同 Ubuntu 内核版本,需要安装的驱动版本可能完全不同。请务必在执行以下步骤之前:

  1. 通过 lspci -nn | grep -i nvidia 确认你的显卡型号。
  2. 通过 uname -r 确认你的内核版本。
  3. 将上述信息提供给 AI 助手(如 ChatGPT、DeepSeek 等)或查阅 NVIDIA 官方文档,获取针对你当前设备的最合适驱动版本
  4. 下文中出现的 535550575-open 等版本号均为示例,请替换为 AI 或官方推荐的实际版本。

二、为什么先装驱动?

在 Ubuntu 上,系统默认会加载一个名为 Nouveau 的开源显卡驱动。它能让你点亮屏幕,但性能非常有限,而且对于任何需要使用 CUDA 的开发任务(深度学习框架、OpenCV CUDA 加速等),Nouveau 完全不兼容,并且会和官方驱动产生严重冲突。

Nouveau 与 NVIDIA 官方驱动的冲突本质:

GPU 硬件

谁来控制?

Nouveau 开源驱动

NVIDIA 官方驱动

内核模块冲突

黑屏/驱动加载失败

两个驱动会同时尝试控制同一硬件,在系统底层(内核模块)“打架”,导致"未能创建内核"的报错,甚至引发系统黑屏无法启动。

📌 特殊提醒: 对于 Ubuntu 22.04,如果使用的是 RTX 50 系列显卡(如 5060、5070 Ti、5080),必须安装开源版 NVIDIA 驱动,命令行安装需要指定 -open 后缀:

sudo apt install nvidia-driver-575-open
# 或
sudo ubuntu-drivers install nvidia:575-open

三、安装前:环境预检与冲突排查

⚠️ 重要提示: 90% 的驱动问题都可以通过安装前的系统状态检查来预防。

打开终端(Ctrl + Alt + T),依次执行以下检查:

3.1 确认显卡型号

lspci -nn | grep -i nvidia

输出示例:

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3080] [10de:2206] (rev a1)

其中 [10de:2206] 的前段 10de 是 NVIDIA 厂商 ID,后段 2206 是具体设备型号。记下这个信息有助于后续选择正确的驱动版本。

3.2 检查当前使用的驱动

lspci -k | grep -A 3 -i vga

查看输出中 Kernel driver in use: 这一行。如果是 nouveau,说明系统正在使用开源驱动,后续需要禁用它。

3.3 检查 Secure Boot 状态

mokutil --sb-state

如果显示 SecureBoot enabled,说明安全启动已开启。这可能会阻止未签名的 NVIDIA 驱动模块加载,安装前需要:

  • 方案 A:进入 BIOS 将 Secure Boot 关闭(推荐)
  • 方案 B:在安装过程中完成 MOK 密钥注册

3.4 检查内核版本

uname -r

Ubuntu 22.04 默认内核为 5.15.0-91,该内核支持 535/550 驱动。如果升级过内核,需确保驱动与内核版本匹配。

3.5 安装编译依赖

安装 NVIDIA 驱动需要编译内核模块,必须提前安装必要的工具:

sudo apt update
sudo apt install build-essential gcc make dkms
sudo apt install linux-headers-$(uname -r)
包名 作用
build-essential 包含 gccmake 等基本编译工具
dkms Dynamic Kernel Module Support,确保内核更新后驱动自动重新编译
linux-headers-$(uname -r) 当前内核版本对应的头文件,编译驱动时必需

💡 提示: dkms 非常重要。没有它,每次系统内核更新后你的 NVIDIA 驱动都可能失效,需要手动重装。


四、禁用 Nouveau 开源驱动

⚠️ 注意: 这是最关键的一步。如果不先禁用 Nouveau,NVIDIA 驱动安装必然失败。

4.1 清除旧的 NVIDIA 驱动残留

如果你之前安装过 NVIDIA 驱动,先彻底清理:

sudo apt-get --purge remove "*nvidia*"
sudo apt-get --purge remove "*cuda*"
sudo apt autoremove

💡 提示: 如果之前用 .run 文件安装过驱动,还需要运行卸载脚本:

sudo /usr/bin/nvidia-uninstall   # 如果提示找不到文件,说明之前没用过此方式

4.2 将 Nouveau 加入黑名单

推荐方式:创建独立配置文件

sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"

验证文件内容:

cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf

应显示:

blacklist nouveau
options nouveau modeset=0

备选方式:通过 GRUB 内核参数禁用

sudo nano /etc/default/grub
# 找到 GRUB_CMDLINE_LINUX_DEFAULT 行,在引号内添加 nouveau.blacklist=1
# 修改为:
# GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.blacklist=1"
sudo update-grub

4.3 更新内核并重启

sudo update-initramfs -u
sudo reboot

4.4 验证 Nouveau 是否已禁用

重启后,在终端执行:

lsmod | grep nouveau

如果命令没有任何输出,说明 Nouveau 已被成功屏蔽,可以继续下一步。

💡 提示:在 Ubuntu 22.04 中,通过正规渠道(如 ubuntu-drivers 或"附加驱动")安装 NVIDIA 驱动时,系统通常会自动处理 Nouveau 的禁用问题。如果后续使用推荐方法安装,此步骤可以跳过,但提前做好清理能避免绝大多数潜在冲突。


五、安装 NVIDIA 驱动(三种方法任选其一)

方法一:ubuntu-drivers 命令行安装 ⭐ 首选

这是最推荐的方式,简单可靠,系统会自动检测并推荐最佳驱动版本。

步骤 1:安装工具(通常已预装)

sudo apt install ubuntu-drivers-common

步骤 2:添加 Graphics Drivers PPA(可选但推荐)

Ubuntu 官方仓库中的驱动版本可能较旧,添加 PPA 可以获取更新且更稳定的驱动:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

步骤 3:查看系统推荐的驱动版本

sudo ubuntu-drivers devices

输出示例:

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002206sv00001458sd0000403Fbc03sc00i00
vendor   : NVIDIA Corporation
model    : GA102 [GeForce RTX 3080]
driver   : nvidia-driver-535 - distro non-free recommended
driver   : nvidia-driver-550 - distro non-free

recommended 标记的就是系统推荐的最佳版本

步骤 4:安装驱动

自动安装推荐驱动:

sudo ubuntu-drivers autoinstall

或者手动指定版本(更可控):

sudo apt install nvidia-driver-535

步骤 5:重启系统

sudo reboot

💡 提示:即使安装完成后 nvidia-smi 暂时看不到显卡信息,重启后就能正常显示,这是正常现象。


方法二:图形界面安装(备选)

适合不太熟悉命令行的用户,操作更直观。

  1. 在应用程序菜单中搜索并打开 “软件和更新”
  2. 切换到 “附加驱动” 选项卡,系统会自动检测可用驱动
  3. 选择标记为"专有,测试过(tested)" 的推荐版本
  4. 点击"应用更改",输入密码,等待安装完成
  5. 点击"重启"使驱动生效

💡 提示:如果命令行 ubuntu-drivers autoinstall 反复失败,可以试试这个图形界面方法,有时它能自动解决一些奇怪的依赖冲突。


方法三:NVIDIA 官网 .run 文件手动安装(最后手段)

⚠️ 警告: 这是一个更复杂的方案,仅在前两种方法都失败时才考虑。操作繁琐,需要手动处理后续内核更新问题。官方社区甚至建议不要直接从 NVIDIA 安装 .run 文件

步骤 1:下载驱动

访问 NVIDIA 中国驱动下载中心,根据显卡型号和操作系统(Linux 64-bit)下载 .run 文件。

⚠️ 注意: 下载的驱动文件要放在英文路径中,避免中文路径导致问题。

步骤 2:进入 TTY 模式并停止图形界面

# 按 Ctrl + Alt + F2(或 F3~F6)进入 TTY 命令行
# 登录后停止图形界面
sudo service gdm3 stop    # 如果使用 GDM
# 或
sudo service lightdm stop # 如果使用 LightDM

如果 TTY 界面出现中文乱码:

export LANG="UTF-8"
export LANGUAGE="UTF-8"

步骤 3:执行安装

cd ~/Downloads
chmod 777 NVIDIA-Linux-*.run
sudo ./NVIDIA-Linux-*.run --no-opengl-files --no-x-check --no-nouveau-check
参数 作用
--no-opengl-files 只安装驱动,不安装 OpenGL 文件
--no-x-check 安装时关闭 X 服务检查
--no-nouveau-check 跳过 Nouveau 检查

步骤 4:安装过程中的选项

  • Install Nvidia's 32-bit compatibility libraries? → 选择 No
  • Would you like to run the nvidia-xconfig utility...? → 选择 Yes
  • 其他选项保持默认

步骤 5:重启

sudo service gdm3 start   # 恢复图形界面
sudo reboot

三种方法对比

对比维度 方法一:ubuntu-drivers 方法二:图形界面 方法三:.run 手动
操作难度 ⭐ 简单 ⭐ 最简单 ⭐⭐⭐ 较难
可靠性 ✅ 高 ✅ 高 ⚠️ 中等
版本可控性 ✅ 可指定版本 ⚠️ 仅可选列表中版本 ✅ 完全可控
内核更新适配 ✅ 自动(DKMS) ✅ 自动(DKMS) ❌ 需手动处理
推荐指数 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐

六、验证驱动安装

重启后,打开终端执行:

nvidia-smi

如果成功,会看到类似以下输出:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.154.05   Driver Version: 535.154.05   CUDA Version: 12.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
...

重点关注:

  • Driver Version:驱动版本号
  • CUDA Version:驱动支持的最高 CUDA 版本(后续安装 CUDA Toolkit 不能超过这个值)
  • GPU Name:你的显卡型号

还可以通过以下命令打开 NVIDIA 设置面板:

nvidia-settings

如果命令不存在:

sudo apt install nvidia-settings

七、常见问题与排坑指南

问题 可能原因 解决方案
nvidia-smi 报错 “NVIDIA-SMI has failed…” 或 “No devices were found” 驱动未正确加载;Nouveau 未禁用干净;Secure Boot 阻止加载 ① 确认 Nouveau 已禁用:lsmod | grep nouveau 应无输出。② 确认驱动已安装:dpkg -l | grep nvidia-driver。③ 检查 Secure Boot:mokutil --sb-state。④ 彻底清理重装:sudo apt purge "*nvidia*" → 重启 → 重新安装。
安装驱动后重启黑屏或卡在登录界面 驱动版本与内核/显卡不兼容;Wayland 与 NVIDIA 不兼容 ① GRUB 界面按 e,在 quiet splash 后加 nomodeset 临时进入。② 切换到 Xorg 显示协议。③ 卸载当前驱动换一个版本重试。④ 检查 HDMI/DP 线是否插在独立显卡接口上。
安装时提示 “Operation not permitted” 或模块签名失败 Secure Boot 阻止未签名驱动模块加载 进入 BIOS 关闭 Secure Boot,或安装时设置 MOK 密码并在重启后完成密钥注册。
ubuntu-drivers devices 没有输出 软件源问题;显卡太新官方源暂未收录 ① 确保启用 universemultiverse 源。② 添加 Graphics Drivers PPA:sudo add-apt-repository ppa:graphics-drivers/ppa && sudo apt update
使用 .run 文件安装时报 GCC 版本错误 GCC 版本过低或未安装 安装 GCC 12:sudo apt install gcc-12 g++-12
内核更新后驱动失效 DKMS 未正确安装或未启用 确保已安装 dkms,检查:dkms status。修复:sudo apt install --reinstall nvidia-driver-535
nvidia-smi 显示 “No devices were found” 但驱动已安装 双显卡系统 GPU 运行模式问题 prime-select query 检查当前 GPU,使用 sudo prime-select nvidia 切换到独显并重启。
安装驱动后 WiFi 消失 内核更新导致无线网卡驱动未适配 在 GRUB 高级选项中回退到旧内核启动;或重新安装无线网卡驱动。

八、总结

本文要点回顾:

  1. 安装顺序: NVIDIA 驱动必须在所有其他开发环境之前安装,这是确保后续环境稳定性的关键。
  2. 推荐方法: 首选 ubuntu-drivers autoinstall 命令或"软件和更新"图形界面。
  3. 关键步骤: 禁用 Nouveau → 安装编译依赖 → 选择 recommended 标记的驱动版本 → 重启验证。
  4. 验证成功: nvidia-smi 能正确输出 GPU 信息和驱动版本即可。
  5. 最后手段: 如果以上方法都失败,再考虑从 NVIDIA 官网下载 .run 文件手动安装。

📚 系列导航:

  • 下一篇: Ubuntu 22.04 视觉开发环境搭建(二):CUDA Toolkit 安装与环境配置
  • [[技术笔记/视觉环境搭建/Ubuntu22.04.2视觉开发环境搭建全流程]] — 原始完整笔记

参考资料

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐