Ubuntu 系统安装和卸载 NVIDIA 驱动完整指南¶
前言¶
本文以 Ubuntu 22.04 / 24.04 为主要示例,详细介绍 NVIDIA 驱动的安装和卸载流程。Ubuntu 官方推荐使用 ubuntu-drivers 工具自动安装驱动,这是最简单且最稳定的方法。
本文包含两种安装场景:
- 在线安装:有网络连接的情况(推荐)
- 离线安装:无网络连接的情况(生产环境常见)
环境准备¶
- 操作系统:Ubuntu 22.04 LTS / Ubuntu 24.04 LTS
- 权限要求:需要 root 或 sudo 权限
- 网络要求:
- 在线安装:需要稳定的网络连接以下载驱动包
- 离线安装:需要提前在有网络的机器上下载驱动文件
第一部分:安装 NVIDIA 驱动¶
步骤 1:检查显卡型号¶
首先确认系统是否识别到 NVIDIA 显卡:
lspci | grep -i nvidia
预期输出示例:
01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)
如果没有任何输出,可能的原因:
- 显卡未正确连接
- 显卡未被系统识别
- 需要检查硬件连接
步骤 2:更新系统软件包¶
在安装驱动前,确保系统是最新的:
sudo apt update
sudo apt upgrade -y
步骤 3:安装必要的工具¶
安装编译工具和依赖包:
sudo apt install -y build-essential dkms
步骤 4:检查推荐的驱动版本¶
Ubuntu 会自动检测并推荐适合的驱动版本:
ubuntu-drivers list
预期输出示例:
nvidia-driver-535, (recommended)
nvidia-driver-525
nvidia-driver-470
步骤 5:安装驱动(推荐方法)¶
方法 A:自动安装推荐版本(最简单)¶
这是 Ubuntu 官方推荐的方法,会自动安装最适合的驱动:
sudo ubuntu-drivers autoinstall
方法 B:手动安装指定版本¶
如果需要安装特定版本的驱动:
# 安装推荐的版本
sudo apt install -y nvidia-driver-535
# 或安装其他可用版本
sudo apt install -y nvidia-driver-525
方法 C:使用 NVIDIA PPA(获取最新驱动)¶
如果需要最新版本的驱动,可以添加 NVIDIA PPA:
# 添加 PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
# 查看可用版本
ubuntu-drivers list
# 安装指定版本
sudo apt install -y nvidia-driver-535
方法 D:离线安装(无网络环境)¶
适用场景
适用于生产环境、内网环境或无法连接互联网的服务器。
准备工作(在有网络的机器上完成)¶
步骤 1:确定驱动版本
在有网络的机器上,访问 NVIDIA 官方驱动下载页面 或使用以下方法确定需要的驱动版本:
# 在有网络的机器上检查推荐版本
ubuntu-drivers list
步骤 2:下载驱动文件
有两种方式下载驱动:
方式 A:下载官方 .run 安装包(推荐)
- 访问 NVIDIA 驱动下载页面
- 选择你的显卡型号和操作系统
- 下载对应的
.run文件,例如:NVIDIA-Linux-x86_64-535.154.05.run
方式 B:下载 .deb 包(使用 apt-offline)
在有网络的机器上安装 apt-offline 工具:
# 安装 apt-offline
sudo apt install -y apt-offline
# 生成下载清单(以 nvidia-driver-535 为例)
apt-offline set nvidia-driver.sig --install-packages nvidia-driver-535
# 下载所有依赖包
apt-offline get nvidia-driver.sig --bundle nvidia-driver.zip
# 将 nvidia-driver.zip 传输到目标机器
方式 C:手动下载 .deb 包
在有网络的机器上:
# 创建下载目录
mkdir -p ~/nvidia-driver-packages
cd ~/nvidia-driver-packages
# 下载驱动包及其所有依赖
apt download nvidia-driver-535
apt download $(apt-cache depends nvidia-driver-535 | grep "Depends:" | cut -d: -f2 | tr -d " ")
# 打包所有 .deb 文件
tar -czf nvidia-driver-535-packages.tar.gz *.deb
# 将压缩包传输到目标机器
在目标机器上安装(离线环境)¶
使用 .run 文件安装(方式 A)
# 1. 将 .run 文件传输到目标机器(使用 U盘、scp 等)
# 假设文件在 ~/Downloads/NVIDIA-Linux-x86_64-535.154.05.run
# 2. 赋予执行权限
chmod +x ~/Downloads/NVIDIA-Linux-x86_64-535.154.05.run
# 3. 安装必要的编译工具(如果系统已有可跳过)
# 注意:这些工具需要提前安装,或从其他源获取
sudo apt install -y build-essential dkms linux-headers-$(uname -r)
# 4. 禁用 Nouveau 驱动(如果未禁用)
sudo bash -c 'echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist-nouveau.conf'
sudo update-initramfs -u
# 5. 进入文本模式(Ctrl+Alt+F3)或停止图形界面
sudo systemctl stop gdm # 或 lightdm/sddm
# 6. 运行安装程序
sudo ~/Downloads/NVIDIA-Linux-x86_64-535.154.05.run
# 安装选项建议:
# - 安装 NVIDIA 32位兼容库:Yes
# - 自动更新 X 配置文件:Yes
# - 安装 OpenGL 库:Yes(如果使用图形界面)
# 7. 重启系统
sudo reboot
使用 apt-offline 安装(方式 B)
# 1. 将 nvidia-driver.zip 传输到目标机器
# 2. 安装 apt-offline(如果未安装,需要提前准备)
sudo apt install -y apt-offline
# 3. 安装驱动包
sudo apt-offline install nvidia-driver.zip
# 4. 重启系统
sudo reboot
使用 .deb 包手动安装(方式 C)
# 1. 将压缩包传输到目标机器并解压
tar -xzf nvidia-driver-535-packages.tar.gz
cd nvidia-driver-packages
# 2. 安装所有 .deb 包
sudo dpkg -i *.deb
# 如果出现依赖问题,修复依赖(需要提前准备依赖包)
sudo apt-get install -f
# 3. 重启系统
sudo reboot
离线安装注意事项¶
重要提示
- 提前准备依赖:离线安装需要提前准备所有依赖包,包括:
build-essentialdkmslinux-headers-$(uname -r)-
其他 NVIDIA 驱动依赖包
-
内核版本匹配:确保目标机器的内核版本与下载驱动时使用的内核版本兼容
-
架构匹配:确保下载的驱动包架构(x86_64/arm64)与目标机器匹配
-
验证文件完整性:传输文件后,建议验证文件完整性:
# 检查 .run 文件 md5sum NVIDIA-Linux-x86_64-*.run # 检查 .deb 包 dpkg-deb -I package.deb
离线安装验证¶
安装完成后,使用相同的方法验证:
nvidia-smi
lsmod | grep nvidia
步骤 6:重启系统¶
安装完成后,必须重启系统以使驱动生效:
sudo reboot
步骤 7:验证安装¶
重启后,使用以下命令验证驱动是否安装成功:
# 检查驱动版本和 GPU 信息
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 |
| 0% 45C P8 12W / 250W | 123MiB / 12288MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
验证要点: - ✅ 能看到 GPU 信息 → 驱动安装成功 - ✅ 显示驱动版本和 CUDA 版本 → 驱动正常工作 - ❌ 提示 "command not found" → 驱动未正确安装
额外验证:检查内核模块¶
确认 NVIDIA 内核模块已加载:
lsmod | grep nvidia
预期输出:
nvidia_uvm 1234567 0
nvidia_drm 56789 0
nvidia_modeset 123456 0
nvidia 4567890 0
第二部分:卸载 NVIDIA 驱动¶
步骤 1:检查当前安装的驱动包¶
首先查看已安装的 NVIDIA 相关包:
dpkg -l | grep -i nvidia
步骤 2:停止图形界面服务(可选)¶
如果当前在图形界面,建议先切换到文本模式(tty),或停止显示管理器:
# 对于使用 GDM 的系统
sudo systemctl stop gdm
# 对于使用 LightDM 的系统
sudo systemctl stop lightdm
# 对于使用 SDDM 的系统(KDE)
sudo systemctl stop sddm
注意:停止图形界面后,你将无法看到图形界面,需要通过 SSH 或切换到其他 tty 继续操作。
步骤 3:卸载 NVIDIA 驱动包¶
方法 A:使用 apt 卸载(推荐)¶
# 卸载所有 NVIDIA 驱动包
sudo apt remove --purge '^nvidia-.*'
sudo apt remove --purge '^libnvidia-.*'
sudo apt autoremove -y
方法 B:彻底清理残留包¶
如果方法 A 无法完全清理,使用以下命令:
# 过滤并卸载所有 nvidia 相关包(包括已配置残留)
dpkg -l | grep nvidia | grep "^rc" | awk '{print $2}' | xargs sudo dpkg --purge
# 卸载所有已安装的 nvidia 包
dpkg -l | grep nvidia | grep "^ii" | awk '{print $2}' | xargs sudo apt remove --purge -y
# 强制卸载(如果上面命令失败)
dpkg -l | grep nvidia | awk '{print $2}' | xargs sudo dpkg --force-all --remove
# 最后清理
sudo apt autoremove -y
sudo apt autoclean
Warning
该步骤可能会将nvidia-docker 一并删除,删除前需要将/etc/docker/daemon.json 配置备份
步骤 4:删除配置文件¶
删除 NVIDIA 相关的配置文件:
# 删除 modprobe 配置
sudo rm -f /etc/modprobe.d/nvidia*.conf
sudo rm -f /etc/modprobe.d/blacklist-nouveau.conf
# 删除 X11 配置(如果存在)
sudo rm -f /etc/X11/xorg.conf
sudo rm -f /usr/share/X11/xorg.conf.d/*nvidia*
步骤 5:删除内核模块¶
删除 NVIDIA 内核模块:
# 删除内核模块
sudo rm -rf /lib/modules/$(uname -r)/updates/dkms/nvidia*
# 更新 initramfs
sudo update-initramfs -u
步骤 6:清理残留文件¶
删除可能残留的驱动文件:
# 删除 NVIDIA 库文件
sudo rm -rf /usr/lib/x86_64-linux-gnu/libnvidia*
# 删除 NVIDIA 工具和二进制文件
sudo rm -rf /usr/bin/nvidia*
sudo rm -rf /usr/bin/glxinfo
sudo rm -rf /usr/bin/glxgears
# 删除 NVIDIA 配置文件
sudo rm -rf /etc/nvidia*
sudo rm -rf ~/.nv
步骤 7:恢复 Nouveau 驱动(如果需要)¶
如果希望恢复使用开源 Nouveau 驱动:
# 删除之前可能存在的 blacklist 配置
sudo rm -f /etc/modprobe.d/blacklist-nouveau.conf
# 确保 Nouveau 模块可以加载
sudo modprobe nouveau
# 更新 initramfs
sudo update-initramfs -u
步骤 8:重启系统¶
完成卸载后,重启系统:
sudo reboot
步骤 9:验证卸载¶
重启后,验证驱动是否已完全卸载:
# 应该提示命令不存在
nvidia-smi
# 检查内核模块(应该没有 nvidia 相关模块)
lsmod | grep nvidia
# 检查已安装的包(应该没有 nvidia 相关包)
dpkg -l | grep nvidia
第三部分:常见问题排查¶
问题 1:安装后无法进入图形界面¶
症状:重启后卡在登录界面,或黑屏
可能原因:
- 驱动版本不兼容
- 与 Nouveau 驱动冲突
- X11 配置错误
解决方法:
# 1. 进入恢复模式或文本模式(Ctrl+Alt+F3)
# 2. 卸载当前驱动
sudo apt remove --purge '^nvidia-.*'
# 3. 安装不同版本的驱动
sudo apt install -y nvidia-driver-470 # 尝试较旧版本
# 4. 重启
sudo reboot
问题 2:nvidia-smi 显示 "NVIDIA-SMI has failed"¶
可能原因:
- 驱动未正确加载
- 内核模块问题
解决方法:
# 检查内核模块
lsmod | grep nvidia
# 如果没有输出,手动加载模块
sudo modprobe nvidia
# 检查 dmesg 日志
dmesg | grep -i nvidia
# 重新安装驱动
sudo apt remove --purge '^nvidia-.*'
sudo apt install -y nvidia-driver-535
sudo reboot
问题 3:安装后系统变慢或卡顿¶
可能原因:
- 驱动版本过新或过旧
- 电源管理设置问题
解决方法:
# 检查驱动版本是否合适
ubuntu-drivers list
# 尝试安装推荐版本
sudo ubuntu-drivers autoinstall
# 检查 GPU 使用情况
nvidia-smi
# 如果 GPU 一直处于高性能模式,可能需要调整电源管理
sudo nvidia-smi -pm 0 # 禁用持久模式(如果不需要)
问题 4:卸载后仍有残留文件¶
解决方法:
# 使用 find 命令查找所有 nvidia 相关文件
sudo find / -name "*nvidia*" 2>/dev/null
# 手动删除找到的文件(谨慎操作)
# 注意:不要删除系统关键文件
# 清理包缓存
sudo apt clean
sudo apt autoclean
问题 5:多 GPU 环境只识别到一个¶
解决方法:
# 检查所有 GPU
lspci | grep -i nvidia
# 检查 nvidia-smi 识别的 GPU 数量
nvidia-smi -L
# 如果硬件连接正常但只识别一个,可能需要:
# 1. 检查 PCIe 插槽
# 2. 更新 BIOS
# 3. 重新安装驱动
问题 6:离线安装时缺少依赖包¶
症状:使用 .deb 包安装时提示缺少依赖
解决方法:
# 方法 1:提前下载所有依赖(推荐)
# 在有网络的机器上
apt-cache depends nvidia-driver-535 | grep "Depends:" | cut -d: -f2 | tr -d " " | xargs apt download
# 方法 2:使用 apt-offline(推荐用于批量部署)
apt-offline set nvidia-driver.sig --install-packages nvidia-driver-535
apt-offline get nvidia-driver.sig --bundle nvidia-driver.zip
# 方法 3:使用 .run 文件安装(不依赖系统包管理器)
# 这是最灵活的方式,但需要手动处理一些配置
chmod +x NVIDIA-Linux-x86_64-*.run
sudo ./NVIDIA-Linux-x86_64-*.run
问题 7:离线安装 .run 文件时内核头文件缺失¶
症状:运行 .run 文件时提示找不到内核头文件
解决方法:
# 1. 检查当前内核版本
uname -r
# 2. 提前准备对应版本的内核头文件
# 在有网络的机器上下载:
apt download linux-headers-$(uname -r)
# 3. 在目标机器上安装内核头文件
sudo dpkg -i linux-headers-*.deb
# 4. 如果仍有依赖问题,需要下载更多依赖包
# 或使用 .run 文件的 --no-kernel-module 选项(不推荐)
问题 8:离线安装后驱动无法加载¶
可能原因:
- 内核版本不匹配
- DKMS 模块未正确构建
- 内核模块签名问题(Secure Boot)
解决方法:
# 1. 检查内核版本匹配
uname -r
ls /lib/modules/
# 2. 手动构建 DKMS 模块
sudo dkms install nvidia/535.154.05 -k $(uname -r)
# 3. 检查模块是否加载
lsmod | grep nvidia
# 4. 如果启用了 Secure Boot,需要禁用或签名模块
# 检查 Secure Boot 状态
mokutil --sb-state
# 如果启用,需要:
# - 禁用 Secure Boot(在 BIOS 中)
# - 或使用已签名的驱动模块
第四部分:最佳实践建议¶
安装前¶
- 备份重要数据:虽然安装驱动通常不会影响数据,但建议备份
- 记录当前配置:保存当前的 X11 配置(如果存在)
- 确保网络稳定:下载驱动包需要稳定的网络连接
安装时¶
- 使用推荐版本:优先使用
ubuntu-drivers autoinstall安装推荐版本 - 避免中断:安装过程中不要中断或重启
- 查看日志:如果出现问题,查看
/var/log/apt/和dmesg日志
安装后¶
- 验证功能:使用
nvidia-smi和实际应用验证驱动是否正常工作 - 更新系统:定期更新系统和驱动以获取安全补丁
- 保存配置:如果进行了特殊配置,记录并备份
卸载时¶
- 先停止服务:卸载前停止相关服务
- 彻底清理:使用
--purge选项确保配置文件也被删除 - 验证清理:卸载后验证是否完全清理
快速参考命令¶
在线安装驱动¶
# 自动安装推荐版本(最简单)
sudo ubuntu-drivers autoinstall
sudo reboot
nvidia-smi # 验证
离线安装驱动¶
# 方式 1:使用 .run 文件安装
chmod +x NVIDIA-Linux-x86_64-*.run
sudo ./NVIDIA-Linux-x86_64-*.run
sudo reboot
# 方式 2:使用 apt-offline(需要提前准备 zip 包)
sudo apt-offline install nvidia-driver.zip
sudo reboot
# 方式 3:使用 .deb 包安装
sudo dpkg -i nvidia-driver-*.deb
sudo apt-get install -f # 修复依赖
sudo reboot
卸载驱动¶
# 快速卸载
sudo apt remove --purge '^nvidia-.*'
sudo apt autoremove -y
sudo update-initramfs -u
sudo reboot
检查状态¶
# 检查驱动版本
nvidia-smi
# 检查内核模块
lsmod | grep nvidia
# 检查已安装的包
dpkg -l | grep nvidia
# 检查推荐版本
ubuntu-drivers list
总结¶
在 Ubuntu 上安装和卸载 NVIDIA 驱动的关键步骤:
在线安装流程(有网络)¶
- 检查显卡型号 → 2. 更新系统 → 3. 自动安装推荐驱动 → 4. 重启 → 5. 验证
离线安装流程(无网络)¶
- 在有网络机器上下载驱动文件 → 2. 传输到目标机器 → 3. 安装驱动 → 4. 重启 → 5. 验证
卸载流程¶
- 停止服务 → 2. 卸载驱动包 → 3. 删除配置文件 → 4. 清理残留 → 5. 重启 → 6. 验证
推荐方法¶
在线安装:
- ✅ 使用 ubuntu-drivers autoinstall 自动安装(最简单)
- ✅ 使用 apt install nvidia-driver-xxx 安装指定版本
离线安装:
- ✅ 使用 .run 文件安装(最灵活,适合生产环境)
- ✅ 使用 apt-offline 工具(适合批量部署)
- ✅ 使用 .deb 包手动安装(需要提前准备依赖)
卸载:
- ✅ 使用 apt remove --purge 彻底卸载
重要提醒¶
- 安装或卸载驱动后必须重启系统才能生效
- 离线安装需要提前准备所有依赖包
- 生产环境建议使用离线安装方式,避免网络问题
- 卸载前记得备份
/etc/docker/daemon.json(如果使用 nvidia-docker)
参考资料¶
最后更新:2025-12-17 测试环境:Ubuntu 22.04 LTS / Ubuntu 24.04 LTS 驱动版本:nvidia-driver-535(示例)