NVIDIA 显卡驱动安装完全指南
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 内核版本,需要安装的驱动版本可能完全不同。请务必在执行以下步骤之前:
- 通过
lspci -nn | grep -i nvidia确认你的显卡型号。- 通过
uname -r确认你的内核版本。- 将上述信息提供给 AI 助手(如 ChatGPT、DeepSeek 等)或查阅 NVIDIA 官方文档,获取针对你当前设备的最合适驱动版本。
- 下文中出现的
535、550、575-open等版本号均为示例,请替换为 AI 或官方推荐的实际版本。
二、为什么先装驱动?
在 Ubuntu 上,系统默认会加载一个名为 Nouveau 的开源显卡驱动。它能让你点亮屏幕,但性能非常有限,而且对于任何需要使用 CUDA 的开发任务(深度学习框架、OpenCV CUDA 加速等),Nouveau 完全不兼容,并且会和官方驱动产生严重冲突。
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 |
包含 gcc、make 等基本编译工具 |
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暂时看不到显卡信息,重启后就能正常显示,这是正常现象。
方法二:图形界面安装(备选)
适合不太熟悉命令行的用户,操作更直观。
- 在应用程序菜单中搜索并打开 “软件和更新”
- 切换到 “附加驱动” 选项卡,系统会自动检测可用驱动
- 选择标记为"专有,测试过(tested)" 的推荐版本
- 点击"应用更改",输入密码,等待安装完成
- 点击"重启"使驱动生效
💡 提示:如果命令行
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?→ 选择 NoWould 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 没有输出 |
软件源问题;显卡太新官方源暂未收录 | ① 确保启用 universe 和 multiverse 源。② 添加 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 高级选项中回退到旧内核启动;或重新安装无线网卡驱动。 |
八、总结
本文要点回顾:
- 安装顺序: NVIDIA 驱动必须在所有其他开发环境之前安装,这是确保后续环境稳定性的关键。
- 推荐方法: 首选
ubuntu-drivers autoinstall命令或"软件和更新"图形界面。 - 关键步骤: 禁用 Nouveau → 安装编译依赖 → 选择
recommended标记的驱动版本 → 重启验证。 - 验证成功:
nvidia-smi能正确输出 GPU 信息和驱动版本即可。 - 最后手段: 如果以上方法都失败,再考虑从 NVIDIA 官网下载
.run文件手动安装。
📚 系列导航:
- 下一篇: Ubuntu 22.04 视觉开发环境搭建(二):CUDA Toolkit 安装与环境配置
- [[技术笔记/视觉环境搭建/Ubuntu22.04.2视觉开发环境搭建全流程]] — 原始完整笔记
参考资料
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)