Ubuntu22.04重装显卡驱动
适用场景
- 需要升级 NVIDIA 驱动以满足 CUDA 版本要求
- 当前驱动版本过低(如 550 支持 CUDA 12.4,但某些工程需要 CUDA 12.6+)
- 从手动安装的驱动切换到系统推荐版本
步骤 1:查看当前驱动版本
nvidia-smi记录 Driver Version 和 CUDA Version(驱动支持的 CUDA 上限)。
步骤 2:查看系统可用驱动
ubuntu-drivers devices找到标记recommended的版本(如nvidia-driver-595)。
步骤 3:确认之前驱动安装方式
nvidia-uninstall| 结果 | 说明 | 处理方式 |
|---|---|---|
| 命令不存在 | apt 安装 | 用apt purge卸载 |
| 命令存在 | .run 文件安装 | 用nvidia-uninstall卸载 |
步骤 4:卸载旧驱动
# apt 安装的驱动sudoaptpurge nvidia-* nvidia-driver-*# 清理残留sudoaptautoremove步骤 5:安装系统推荐驱动
sudoubuntu-drivers autoinstall自动安装recommended标记的驱动版本。
步骤 6:重启生效
sudoreboot步骤 7:验证新驱动
nvidia-smi确认 Driver Version 和 CUDA Version 已更新。
驱动版本与 CUDA 对应关系
| 驱动版本 | 支持 CUDA 上限 |
|---|---|
| 535 | 12.2 |
| 545 | 12.3 |
| 550 | 12.4 |
| 560+ | 12.6+ |
| 580 | 12.8 |
| 595 | 12.9 |
常见问题
| 问题 | 原因 | 解决 |
|---|---|---|
Driver/library version mismatch | 新驱动安装后未重启 | 执行sudo reboot |
nvidia-smi失败 | 驱动未正确加载 | 重启或检查安装日志 |
快速命令汇总
# 一键操作(从卸载到安装)sudoaptpurge nvidia-* nvidia-driver-*&&sudoaptautoremove&&sudoubuntu-drivers autoinstall&&sudoreboot内核版本与驱动冲突问题
问题背景
| 内核版本 | 支持的最高 NVIDIA 驱动 | CUDA 版本 |
|---|---|---|
| 6.8.0-52-generic | nvidia-550 | CUDA 12.4 |
| 6.8.0-100+ | nvidia-560/570/580/595 | CUDA 12.6+ |
SAM3 官方要求 CUDA ≥ 12.6。
冲突场景
当内核被apt-mark hold锁定在旧版本(如 6.8.0-52),但需要新驱动(如 nvidia-595)时:
HWE 元包机制 → 自动拉取最新内核的驱动模块 用户内核锁定 → 内核不升级 结果 → 驱动模块装到不存在的内核版本,nvidia-smi 失败临时解决方案:双内核切换
适用于两个程序不同时使用、需要远程切换的场景。
1. 锁定旧内核防止被删除
sudoapt-mark hold linux-image-6.8.0-52-generic2. 切换到新内核环境(SAM3)
# 设置默认启动内核(修改 /etc/default/grub)sudosed-i's/6.8.0-52-generic/6.8.0-111-generic/'/etc/default/grubsudoupdate-grub# 安装新驱动(会自动卸载旧驱动)sudoaptinstallnvidia-driver-595 linux-modules-nvidia-595-6.8.0-111-generic# 重启sudoreboot3. 切换回旧内核环境(其他程序)
# 设置默认启动内核sudosed-i's/6.8.0-111-generic/6.8.0-52-generic/'/etc/default/grubsudoupdate-grub# 安装旧驱动sudoaptinstallnvidia-driver-550 linux-modules-nvidia-550-6.8.0-52-generic# 重启sudoreboot4. 创建一键切换脚本(可选)
# 切换到 SAM3 环境echo'#!/bin/bash sudo sed -i "s/6.8.0-52-generic/6.8.0-111-generic/" /etc/default/grub sudo update-grub sudo apt install nvidia-driver-595 linux-modules-nvidia-595-6.8.0-111-generic -y sudo reboot'>~/switch_to_sam3.sh&&chmod+x ~/switch_to_sam3.sh# 切换到其他程序环境echo'#!/bin/bash sudo sed -i "s/6.8.0-111-generic/6.8.0-52-generic/" /etc/default/grub sudo update-grub sudo apt install nvidia-driver-550 linux-modules-nvidia-550-6.8.0-52-generic -y sudo reboot'>~/switch_to_other.sh&&chmod+x ~/switch_to_other.sh使用:
~/switch_to_sam3.sh# 一键切换到 SAM3 环境~/switch_to_other.sh# 一键切换回其他程序环境常用命令
# 查看当前运行的内核uname-r# 查看 GRUB 默认启动的内核grepGRUB_DEFAULT /etc/default/grub# 查看已安装的内核dpkg-l|greplinux-image|grep-vmeta# 查看被锁定的包,支持锁住多个apt-mark showhold apt-mark showhold|greplinux-image# 锁定内核sudoapt-mark hold linux-image-6.8.0-52-generic# 解锁内核sudoapt-mark unhold linux-image-6.8.0-52-generic