保姆级教程:Ubuntu 22.04 安装 NVIDIA GPU 驱动 + CUDA 12.6(RTX 3080 显卡)

本文记录了一次从驱动损坏到成功安装的全过程,包含清理、编译问题解决、全局环境配置等完整步骤,适用于多卡服务器场景。


目录

环境说明

安装前准备

[1. 检查当前状态](#1. 检查当前状态)

[2. 下载CUDA runfile](#2. 下载CUDA runfile)

彻底清理旧驱动和CUDA

步骤1:卸载apt安装的NVIDIA/CUDA包

步骤2:清理依赖

步骤3:删除CUDA残留目录

步骤4:清理残留的TensorRT等包(如果有)

步骤5:卸载内核中的NVIDIA模块

步骤6:验证清理完成

准备工作:编译器问题处理

检查当前编译器版本

[临时将 cc 指向 GCC 12+](#临时将 cc 指向 GCC 12+)

安装CUDA和驱动(runfile方式)

执行安装

安装界面操作说明

安装成功标志

配置全局环境变量

创建全局配置脚本

立即生效

恢复编译器配置

验证安装

[1. 检查驱动](#1. 检查驱动)

[2. 检查CUDA编译器](#2. 检查CUDA编译器)

[3. 检查GPU进程](#3. 检查GPU进程)

重启服务器(推荐)

常见问题汇总

[Q1: Driver/library version mismatch 错误](#Q1: Driver/library version mismatch 错误)

[Q2: 编译驱动时报 unrecognized command-line option '-ftrivial-auto-var-init=zero'](#Q2: 编译驱动时报 unrecognized command-line option '-ftrivial-auto-var-init=zero')

[Q3: runfile 运行时卡住没反应](#Q3: runfile 运行时卡住没反应)

[Q4: 安装后 nvcc 找不到](#Q4: 安装后 nvcc 找不到)

[Q5: 只想给当前用户配置CUDA](#Q5: 只想给当前用户配置CUDA)

[📌 总结](#📌 总结)


环境说明

项目 配置
GPU NVIDIA GeForce RTX 3080 (LHR, Ampere架构)
操作系统 Ubuntu 22.04, 内核 6.8.0
目标CUDA版本 12.6
目标驱动版本 560.28.03
安装方式 runfile 离线安装

安装前准备

1. 检查当前状态

bash 复制代码
# 查看GPU是否可用(驱动损坏时会报错)
nvidia-smi

# 检查内核版本
uname -r

# 查看已安装的NVIDIA相关包
dpkg -l | grep -iE 'nvidia|cuda'

2. 下载CUDA runfile

NVIDIA官网 下载对应版本的 runfile:

bash 复制代码
# 从官网下载CUDA包
wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda_12.6.0_560.28.03_linux.run

官网下载地址:

CUDA Toolkit 12.6 Downloads | NVIDIA Developerhttps://developer.nvidia.com/cuda-12-6-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local

⚠️ 注意:runfile 同时包含 CUDA ToolkitNVIDIA 驱动,约 4GB。


彻底清理旧驱动和CUDA

⚠️ 重要:如果系统存在多个CUDA版本或驱动残留,必须彻底清理,否则会导致安装冲突。

步骤1:卸载apt安装的NVIDIA/CUDA包

bash 复制代码
sudo apt-get --purge remove -y '*nvidia*' '*cuda*' '*libnvidia*'

步骤2:清理依赖

bash 复制代码
sudo apt-get autoremove -y
sudo apt-get autoclean

步骤3:删除CUDA残留目录

bash 复制代码
sudo rm -rf /usr/local/cuda /usr/local/cuda-* /etc/alternatives/cuda*

步骤4:清理残留的TensorRT等包(如果有)

bash 复制代码
sudo dpkg --purge libcufile-12-4
sudo apt-get --purge remove -y 'libnvinfer*' 'libnvonnxparsers*'
sudo rm -rf /usr/local/cudaback

步骤5:卸载内核中的NVIDIA模块

bash 复制代码
# 查看是否还有nvidia模块
lsmod | grep nvidia

# 卸载模块(如果有)
sudo rmmod nvidia_uvm
sudo rmmod nvidia
sudo rmmod ecc

步骤6:验证清理完成

bash 复制代码
# 应该没有输出
dpkg -l | grep -i nvidia
ls /usr/local/cuda* 2>/dev/null

准备工作:编译器问题处理

⚠️ 关键问题 :内核 6.8+ 编译NVIDIA驱动需要 GCC 12+,但系统默认的 cc 可能指向 GCC 11。

检查当前编译器版本

bash 复制代码
which gcc && gcc --version | head -1
which cc && cc --version | head -1

临时将 cc 指向 GCC 12+

bash 复制代码
# 备份原cc
sudo mv /usr/bin/cc /usr/bin/cc.bak

# 创建软链接到GCC 12(根据实际路径调整)
sudo ln -s /usr/local/bin/gcc /usr/bin/cc

# 验证
cc --version  # 应显示 GCC 12.x

💡 安装完成后记得恢复,见第7步。


安装CUDA和驱动(runfile方式)

执行安装

bash 复制代码
# 进入runfile所在目录
cd /path/to/your/runfile

# 运行安装程序(交互模式)
sudo sh cuda_12.6.0_560.28.03_linux.run

安装界面操作说明

  1. 接受EULA :输入 accept 回车

  2. 选择组件

    • [X] Driver → 必须勾选

    • [X] CUDA Toolkit 12.6 → 必须勾选

    • [ ] CUDA Demo Suite → 可选,建议取消

    • [ ] CUDA Documentation → 可选,建议取消

  3. 开始安装 :用方向键选中 Install 按回车

安装成功标志

bash 复制代码
===========
= Summary =
===========

Driver:   Installed
Toolkit:  Installed in /usr/local/cuda-12.6/

配置全局环境变量

让所有用户都能使用 nvcc 和 CUDA 库。

创建全局配置脚本

bash 复制代码
sudo tee /etc/profile.d/cuda.sh > /dev/null << 'EOF'
export PATH=/usr/local/cuda-12.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH
EOF

立即生效

bash 复制代码
source /etc/profile.d/cuda.sh

恢复编译器配置

安装完成后,将 cc 恢复为原来的版本,避免影响其他编译任务。

bash 复制代码
sudo rm /usr/bin/cc
sudo mv /usr/bin/cc.bak /usr/bin/cc

验证恢复:

bash 复制代码
cc --version  # 应显示原来的版本(如 11.4)

验证安装

1. 检查驱动

bash 复制代码
nvidia-smi

预期输出:

bash 复制代码
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.28.03              Driver Version: 560.28.03      CUDA Version: 12.6     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
|   0  NVIDIA GeForce RTX 3080        Off | 00000000:1A:00.0 Off |                  N/A |
+-----------------------------------------+------------------------+----------------------+

2. 检查CUDA编译器

bash 复制代码
nvcc --version

预期输出:

bash 复制代码
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Fri_Jun_14_16:34:21_PDT_2024
Cuda compilation tools, release 12.6, V12.6.20

3. 检查GPU进程

bash 复制代码
nvidia-smi

查看 Processes 部分,确认没有异常进程占用。


重启服务器(推荐)

bash 复制代码
sudo reboot

重启后再次验证 nvidia-sminvcc --version,确保一切正常。


常见问题汇总

Q1: Driver/library version mismatch 错误

原因:驱动内核模块和用户态库版本不匹配。

解决:彻底清理后重装(参考第3步)。


Q2: 编译驱动时报 unrecognized command-line option '-ftrivial-auto-var-init=zero'

原因:GCC版本低于12,不支持该编译选项。

解决 :将 cc 指向 GCC 12+(参考第4步)。


Q3: runfile 运行时卡住没反应

原因 :runfile 正在解压到 /tmp,4GB文件需要时间。

解决

bash 复制代码
# 检查磁盘空间
df -h /tmp

# 或指定临时目录
sudo TMPDIR=/ssd2/tmp sh cuda_*.run

Q4: 安装后 nvcc 找不到

原因:PATH未配置CUDA的bin目录。

解决:配置环境变量(参考第6步)。


Q5: 只想给当前用户配置CUDA

解决 :在 ~/.bashrc 中添加:

bash 复制代码
echo 'export PATH=/usr/local/cuda-12.6/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

📌 总结

步骤 命令/操作
清理旧驱动 apt-get --purge remove '*nvidia*'
清理CUDA目录 rm -rf /usr/local/cuda*
卸载内核模块 sudo rmmod nvidia_uvm nvidia
修复编译器链接 ln -s /usr/local/bin/gcc /usr/bin/cc
安装runfile sudo sh cuda_*.run
配置环境变量 sudo tee /etc/profile.d/cuda.sh
恢复编译器 rm /usr/bin/cc && mv cc.bak cc
重启验证 reboot && nvidia-smi && nvcc --version

🎉 恭喜!你的 GPU 服务器已经成功安装 CUDA 12.6 和 NVIDIA 驱动 560.28.03,可以开始深度学习训练了!

如果本文对你有帮助,欢迎点赞收藏!

相关推荐
Embedded-Xin2 小时前
ROS2进阶——消息服务质量QOS策略
linux·机器人·嵌入式
Embedded-Xin2 小时前
ROS2进阶—ROS2生命周期节点
linux·机器人·自动驾驶·嵌入式
比昨天多敲两行2 小时前
Linux.基础I/O
linux
Irissgwe2 小时前
三、Socket 编程 TCP
linux·网络·tcp·socket编程
vortex52 小时前
Kali Linux 安装与使用 GitHub CLI (gh)教程
linux·运维·github
Garfield0_03 小时前
epoll软件架构及原理
linux
小匠石钧知3 小时前
01_以RockyLinux的镜像为基础_构建自己开发学习所需的镜像
linux·docker·jdk·mariadb
学无止境_永不停歇3 小时前
从零手写高性能 C++ TCP 服务器框架(一):项目介绍
linux·服务器·c++·中间件
dingxingdi3 小时前
Linux 清理过程
linux·运维·服务器