Ubuntu系统下NVIDIA显卡驱动安装与更新全流程指南

8 次阅读

Ubuntu 安装 NVIDIA 显卡驱动时,最重要的并不是单纯执行一条安装命令,而是先确认显卡型号、Ubuntu 版本、可用驱动分支以及当前系统是否存在旧驱动或冲突组件。选择正确的安装方式,可以明显降低黑屏、驱动加载失败、CUDA 环境异常等问题。

一、安装 NVIDIA 驱动前的准备工作

正式安装前建议先确认系统版本和显卡信息。

查看 Ubuntu 版本:

Bash
lsb_release -a

也可以使用:

Bash
cat /etc/os-release

查看 NVIDIA 显卡是否被系统识别:

Bash
lspci | grep -i nvidia

如果系统已经安装过 NVIDIA 驱动,可以执行:

Bash
nvidia-smi

正常情况下会看到 GPU 型号、驱动版本、CUDA Version 等信息。

还可以检查 PCI 设备详细信息:

Bash
lspci -nnk | grep -A 3 -i nvidia

重点关注 Kernel driver in use。如果这里已经显示 nvidia,说明 NVIDIA 内核驱动已经加载。

二、Ubuntu中查询推荐的NVIDIA驱动

Ubuntu 通常提供了 ubuntu-drivers 工具,可以根据当前硬件自动判断适合的驱动。

执行:

Bash
sudo ubuntu-drivers devices

典型结果可能类似:

driver   : nvidia-driver-550 - distro non-free recommended
driver   : nvidia-driver-535 - distro non-free

其中带有 recommended 的版本通常是系统针对当前硬件推荐的驱动版本。

也可以直接查看可安装的软件包:

Bash
apt search nvidia-driver

需要注意,驱动版本并不是越新越好。如果 Ubuntu 官方仓库已经提供了针对当前显卡测试较充分的推荐版本,优先使用推荐版本通常比手动追求最新版本更加稳妥。

三、使用ubuntu-drivers自动安装

对于普通桌面用户,这是比较推荐的安装方式。

首先更新软件包索引:

Bash
sudo apt update

然后执行:

Bash
sudo ubuntu-drivers autoinstall

系统会自动安装适合当前硬件的 NVIDIA 驱动及相关依赖。

安装过程中如果出现确认提示,输入:

Y

继续即可。

安装完成后重启系统:

Bash
sudo reboot

重新进入 Ubuntu 后,可以使用:

Bash
nvidia-smi

验证驱动是否正常。

如果能够正常显示 GPU 信息,例如:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI ...                                                             |
| GPU  Name                 Driver-Version                                   |
+-----------------------------------------------------------------------------+

通常说明 NVIDIA 驱动已经成功加载。

四、手动指定NVIDIA驱动版本

如果明确知道需要安装某个驱动分支,也可以通过 APT 直接安装。

例如:

Bash
sudo apt update
sudo apt install nvidia-driver-550

具体版本应以当前 Ubuntu 软件源实际提供的版本为准,不要直接照搬其他系统教程中的版本号。

安装完成后:

Bash
sudo reboot

然后检查:

Bash
nvidia-smi

如果需要确认安装了哪些 NVIDIA 软件包,可以使用:

Bash
dpkg -l | grep -i nvidia

五、Ubuntu桌面环境中的图形化安装方法

Ubuntu Desktop 用户还可以通过“软件和更新”中的“附加驱动”功能安装 NVIDIA 驱动。

打开应用菜单,找到:

软件和更新 → 附加驱动

系统会扫描当前硬件,并列出可使用的 NVIDIA 驱动。

通常可以看到类似:

NVIDIA driver metapackage
NVIDIA driver (proprietary)
NVIDIA driver (open kernel)

对于普通用户,选择系统标记为推荐的方案即可。

选择驱动后点击“应用更改”,等待安装完成,然后重启系统。

这种方式的优势是操作直观,而且驱动来自 Ubuntu 软件源,后续更新也比较方便。

六、开源Nouveau驱动与NVIDIA专有驱动

Ubuntu 默认可能使用 Nouveau,这是 NVIDIA 显卡的开源驱动。

可以通过以下命令查看当前使用的内核驱动:

Bash
lspci -nnk | grep -A 3 -i nvidia

如果看到:

Kernel driver in use: nouveau

说明当前使用的是 Nouveau。

如果安装官方 NVIDIA 驱动后看到:

Kernel driver in use: nvidia

则表示 NVIDIA 驱动已经接管显卡。

Nouveau 对基本图形显示通常没有问题,但在 CUDA、深度学习、GPU 加速、专业图形应用以及部分高性能计算场景中,通常需要使用 NVIDIA 官方驱动。

七、不要随意混用多种NVIDIA驱动安装方式

比较常见的错误是先通过 APT 安装一个驱动,然后又从 NVIDIA 官网下载 .run 安装程序覆盖系统驱动。

这种方式容易导致软件包管理器与手动安装程序之间产生冲突。

例如系统可能出现:

nvidia-smi has failed because it couldn't communicate with the NVIDIA driver

或者升级内核之后 NVIDIA 驱动突然无法加载。

如果没有特殊需求,建议优先使用 Ubuntu 官方仓库中的 APT 包,而不是直接运行 NVIDIA 官网提供的 .run 文件。

八、安装后如何全面检查驱动状态

仅仅看到安装命令没有报错并不能完全证明驱动正常。

可以按照下面几个步骤检查。

1. 查看NVIDIA-SMI

Bash
nvidia-smi

这是最直接的检查方法。

重点观察:

  • GPU 是否被识别

  • Driver Version 是否存在

  • GPU 使用率是否正常

  • 显存容量是否正确

  • 运行中的进程是否能够显示

2. 查看内核模块

执行:

Bash
lsmod | grep nvidia

正常加载时通常能够看到多个 NVIDIA 相关模块。

也可以查看:

Bash
modinfo nvidia

确认内核模块版本和模块信息。

3. 查看PCI驱动绑定状态

Bash
lspci -nnk | grep -A 3 -i nvidia

重点确认:

Kernel driver in use: nvidia

4. 检查驱动服务

部分系统中可以查看 NVIDIA 相关服务:

Bash
systemctl --type=service | grep -i nvidia

如果涉及持久化模式,还可以检查:

Bash
systemctl status nvidia-persistenced

具体服务是否存在取决于 Ubuntu 版本和驱动包配置。

九、Ubuntu中更新NVIDIA显卡驱动

NVIDIA 驱动更新通常可以通过 Ubuntu 软件包管理器完成。

首先刷新软件源:

Bash
sudo apt update

查看当前可以升级的软件包:

Bash
apt list --upgradable

如果驱动属于普通系统更新的一部分,可以执行:

Bash
sudo apt upgrade

升级完成后建议重启:

Bash
sudo reboot

然后重新检查:

Bash
nvidia-smi

确认驱动版本是否发生变化。

如果 Ubuntu 软件源提供了新的 NVIDIA 驱动分支,可以再次查询:

Bash
ubuntu-drivers devices

根据推荐结果决定是否切换到新的驱动版本。

十、从旧驱动切换到新驱动

如果准备从一个 NVIDIA 驱动分支切换到另一个版本,不建议简单删除某一个 .deb 文件,而应该让 APT 正确处理相关依赖。

例如当前使用某个旧版本,需要安装新的驱动,可以先查询:

Bash
ubuntu-drivers devices

然后安装目标版本:

Bash
sudo apt install nvidia-driver-xxx

将 xxx 替换成软件源实际提供的版本。

完成后:

Bash
sudo reboot

如果系统中存在大量旧版本 NVIDIA 组件导致依赖混乱,可以先查看:

Bash
dpkg -l | grep -i nvidia

确认软件包情况后再进行清理。

十一、彻底清理NVIDIA驱动后重新安装

如果系统已经出现严重的驱动冲突,可以考虑清理现有 NVIDIA 软件包。

首先查看已安装的软件包:

Bash
dpkg -l | grep -i nvidia

常见清理方式:

Bash
sudo apt purge 'nvidia-*'

随后清理不再需要的依赖:

Bash
sudo apt autoremove

更新软件包索引:

Bash
sudo apt update

重新安装推荐驱动:

Bash
sudo ubuntu-drivers autoinstall

最后:

Bash
sudo reboot

需要注意,purge 'nvidia-*' 会删除当前 NVIDIA 相关软件包。如果机器依赖 NVIDIA GPU 工作,执行前应确认自己能够接受驱动暂时不可用的状态。

十二、安装后出现黑屏怎么办

NVIDIA 驱动安装后黑屏是比较常见的故障之一。

首先不要急着反复安装驱动。可以尝试进入 TTY。

通常可以使用:

Ctrl + Alt + F3

进入文本终端,然后登录账户。

查看系统日志:

Bash
journalctl -b -p err

检查 NVIDIA 相关日志:

Bash
journalctl -b | grep -i nvidia

查看显示管理器状态:

Bash
systemctl status gdm3

如果使用的是其他桌面环境或显示管理器,需要检查对应服务。

还可以检查 NVIDIA 内核模块是否加载:

Bash
lsmod | grep nvidia

黑屏并不一定完全由 NVIDIA 驱动本身造成,也可能与 Secure Boot、Wayland、显示管理器、内核版本或显卡驱动残留配置有关。

十三、Secure Boot导致NVIDIA驱动无法加载

启用了 UEFI Secure Boot 的电脑,在安装第三方内核模块时可能涉及模块签名问题。

可以检查 Secure Boot 状态:

Bash
mokutil --sb-state

如果结果类似:

SecureBoot enabled

说明 Secure Boot 已开启。

此时安装 NVIDIA 驱动后,如果:

Bash
nvidia-smi

无法正常工作,同时日志显示内核模块加载或签名相关错误,就需要重点检查 Secure Boot 和 NVIDIA 内核模块签名配置。

不同 Ubuntu 版本和安装方式处理这一问题的流程可能不同,因此不要直接删除 Secure Boot 或修改 UEFI 设置,应该先确认具体报错。

十四、NVIDIA驱动与CUDA版本的关系

安装 NVIDIA 驱动后,经常还会涉及 CUDA。

需要区分两个概念:

NVIDIA Driver 负责让操作系统和 GPU 正常通信。

CUDA Toolkit 则提供 CUDA 编译器、开发库、工具链等开发环境。

运行:

Bash
nvidia-smi

看到的:

CUDA Version

并不等于系统已经安装了完整的 CUDA Toolkit。它主要表示当前驱动能够支持的 CUDA 运行时兼容版本上限。

如果需要进行 CUDA 开发,可以另外检查:

Bash
nvcc --version

如果系统提示:

nvcc: command not found

不代表 NVIDIA 驱动安装失败,只说明 CUDA Toolkit 可能没有安装,或者 nvcc 没有加入 PATH。

十五、驱动更新前需要特别注意什么

生产环境、深度学习服务器和 GPU 计算节点更新驱动前,建议先确认应用兼容性。

可以记录当前版本:

Bash
nvidia-smi

同时查看:

Bash
uname -r

记录当前 Linux 内核版本。

如果服务器正在运行 CUDA、PyTorch、TensorFlow、Docker GPU 容器等业务,还需要确认新驱动与现有运行环境之间的兼容性。

尤其不要在重要计算任务运行期间直接执行:

Bash
sudo apt upgrade

因为驱动、内核或相关组件更新后可能需要重启,部分 GPU 任务也可能因此中断。

十六、常见错误及排查思路

nvidia-smi: command not found

通常说明 NVIDIA 管理工具没有安装,或者相关软件包不完整。

检查:

Bash
dpkg -l | grep nvidia-utils

再根据当前驱动版本安装对应的软件包。

NVIDIA-SMI has failed

优先检查:

Bash
lspci -nnk | grep -A 3 -i nvidia

以及:

Bash
lsmod | grep nvidia

如果 NVIDIA 模块没有加载,需要进一步检查内核日志、Secure Boot 和驱动版本。

安装驱动后仍然使用nouveau

执行:

Bash
lspci -nnk | grep -A 3 -i nvidia

如果仍然显示:

Kernel driver in use: nouveau

说明 NVIDIA 驱动没有成功接管设备,需要检查安装状态和内核模块加载情况。

APT提示依赖冲突

可以先执行:

Bash
sudo apt --fix-broken install

然后:

Bash
sudo apt update

再重新检查:

Bash
ubuntu-drivers devices

不要在依赖关系尚未恢复正常时强行安装大量不同版本的 NVIDIA 软件包。

十七、Ubuntu NVIDIA驱动安装的推荐流程

如果是普通 Ubuntu Desktop 用户,可以采用下面这套流程:

Bash
# 1. 更新软件源
sudo apt update

# 2. 查看系统推荐驱动
ubuntu-drivers devices

# 3. 自动安装推荐驱动
sudo ubuntu-drivers autoinstall

# 4. 重启
sudo reboot

# 5. 验证驱动
nvidia-smi

如果 nvidia-smi 能正常显示 GPU、驱动版本和显存信息,基本可以确认驱动已经正常工作。

对于服务器或开发环境,则建议进一步检查:

Bash
lspci -nnk | grep -A 3 -i nvidia
lsmod | grep nvidia
nvcc --version

根据实际用途分别验证 GPU 驱动、内核模块以及 CUDA Toolkit。

十八、总结

Ubuntu 安装 NVIDIA 显卡驱动时,优先使用系统自带的 ubuntu-drivers 和 APT 管理方式,可以减少手动安装带来的依赖和升级问题。安装前先确认 Ubuntu 版本、GPU 型号和当前驱动状态,安装后通过 nvidia-smi、lspci、lsmod 等命令进行验证。

驱动更新也不应该单纯追求最新版本。对于桌面电脑,以 Ubuntu 推荐驱动为优先;对于 CUDA、AI 训练和 GPU 服务器,则应同时考虑驱动、CUDA Toolkit、内核以及具体应用框架之间的兼容性。遇到黑屏、nvidia-smi 失败或驱动无法加载时,应从内核模块、Secure Boot、旧驱动残留和软件包依赖几个方向逐层排查,而不是反复安装驱动。