Skip to content

Linux NVIDIA 显卡驱动安装全攻略:从驱动到 CUDA 一站式搞定

来源:微信公众号「学了笔记」 原文链接:https://mp.weixin.qq.com/s/W7l4BTmbEexL7sGgofq1Kg

在 Linux 上配置 NVIDIA 显卡是深度学习环境的必修课。驱动、CUDA、cuDNN、nvidia-docker2 一套下来,踩坑无数。

本文从查看显卡型号开始,到驱动安装、CUDA 配置、Docker GPU 支持,全流程实战,命令可直接复制使用。

以下内容由博主多年实践积累整理,内容扎实,建议收藏备用。

查看显卡型号

一、查看显卡型号

bash
# 方法1:通用命令
lspci | grep -i nvidia

# 方法2:显示具体型号
lshw -numeric -C display

# 方法3:NVIDIA 自带命令
nvidia-smi -L

查看显卡信息

查询型号对应关系:

如果显示 NVIDIA Corporation [10DE:1E82] 这样的十六进制代码,去百度搜索"PCI Devices"网站输入查询具体型号。

二、安装驱动

Ubuntu 自动安装(推荐)

bash
# 1. 安装驱动检测工具
apt install ubuntu-drivers-common

# 2. 查看可用驱动版本
ubuntu-drivers devices

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

# 4. 重启系统
reboot

手动安装指定版本

  1. 去官网下载对应驱动:https://www.nvidia.cn/drivers/lookup/
  2. 安装依赖:
bash
# CentOS / RHEL
yum install -y gcc gcc-c++ kernel-devel
dnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r)

# Ubuntu / Debian
apt install -y build-essential dkms
apt install linux-headers-$(uname -r)
  1. 运行安装脚本:
bash
chmod +x NVIDIA-Linux-x86_64-xxx.xx.run
sudo ./NVIDIA-Linux-x86_64-xxx.xx.run
  1. 开启持久化:
bash
nvidia-smi -pm 1

验证安装

bash
nvidia-smi

NVIDIA驱动安装

三、卸载驱动

方法一:使用 .run 文件卸载

bash
./NVIDIA-Linux-x86_64-xxx.xx.run --uninstall
# 或
nvidia-uninstall

方法二:Ubuntu 包管理器卸载

bash
# Ubuntu
sudo apt remove --purge '^nvidia-.*'
sudo apt autoremove

# 清理 DKMS 模块
sudo dkms remove nvidia/xxx.xx.xx --all
sudo dkms status

# 清理配置文件
sudo rm -f /etc/X11/xorg.conf
sudo rm -f /etc/modprobe.d/nvidia*
sudo rm -f /lib/modprobe.d/nvidia*

方法三:CentOS / RHEL

bash
sudo yum remove nvidia-*
sudo yum remove kmod-nvidia-*

四、安装 CUDA

自动安装(推荐)

bash
# 1. 下载并安装 CUDA 密钥环
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb

# 2. 更新源
sudo apt update

# 3. 安装 CUDA Toolkit(不含驱动)
sudo apt install -y cuda-toolkit-12-8

配置环境变量

bash
echo 'export PATH=/usr/local/cuda-12.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

验证安装

bash
nvcc -V
nvidia-smi

CUDA安装验证

手动安装

  1. 下载对应版本:https://developer.nvidia.com/cuda-toolkit-archive
  2. 运行安装:
bash
chmod +x cuda_xxx_linux.run
sudo ./cuda_xxx_linux.run

注意:安装时取消勾选 Driver(避免与已安装驱动冲突)。

卸载 CUDA

bash
sudo apt-get remove --purge nvidia-cuda-toolkit cuda-toolkit
sudo apt-get autoremove
sudo rm -rf /usr/local/cuda*
sudo rm -rf /usr/lib/cuda*

五、安装 cuDNN

  1. 下载对应版本:https://developer.nvidia.com/cudnn-downloads
  2. 解压并复制文件:
bash
tar -xvf cudnn-linux-x86_64-xxx.tgz

# 复制到 CUDA 目录
sudo cp cuda/include/* /usr/local/cuda-12.2/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-12.2/lib64/
sudo chmod a+r /usr/local/cuda-12.2/include/cudnn.h
sudo chmod a+r /usr/local/cuda-12.2/lib64/libcudnn*
  1. 验证安装:
bash
cat /usr/local/cuda-12.2/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

六、安装 nvidia-docker2

Ubuntu 22.04 / 24.04

方法一:apt 安装

bash
# 导入 GPG 密钥
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

# 添加源
echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/ubuntu24.04/amd64 /" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 安装
sudo apt update
sudo apt install -y nvidia-container-toolkit nvidia-container-toolkit-base nvidia-docker2

# 配置 Docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

方法二:离线安装

如果 apt 安装报错,可以下载 deb 包手动安装:

bash
# 按顺序安装依赖
dpkg -i libnvidia-container1_1.17.8-1_amd64.deb
dpkg -i libnvidia-container-tools_1.17.8-1_amd64.deb
dpkg -i nvidia-container-toolkit-base_1.17.8-1_amd64.deb
dpkg -i nvidia-container-toolkit_1.17.8-1_amd64.deb
dpkg -i nvidia-docker2_2.14.0-1_all.deb

# 配置 Docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

CentOS / RHEL

bash
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
sudo yum install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
sudo systemctl restart docker

七、测试 GPU 可用

Docker 测试

bash
docker run --gpus all --rm nvidia/cuda:12.6.0-cudnn-runtime-ubuntu22.04 nvidia-smi

Python 测试

python
import torch

# 检查 CUDA 是否可用
print(f"CUDA 可用: {torch.cuda.is_available()}")
print(f"显卡数量: {torch.cuda.device_count()}")
print(f"当前显卡: {torch.cuda.get_device_name(0)}")

# 简单计算测试
x = torch.zeros(1).cuda()
y = x + 1
print(f"GPU 计算结果: {y}")

性能测试

python
import time
import torch

# GPU 计算
A = torch.ones(5000, 5000).to('cuda')
B = torch.ones(5000, 5000).to('cuda')

start = time.time()
for i in range(100):
    C = torch.matmul(A, B)
end = time.time()
print(f'GPU 计算时长: {round((end - start) * 1000, 2)} ms')

# CPU 计算
A = torch.ones(5000, 5000)
B = torch.ones(5000, 5000)

start = time.time()
for i in range(100):
    C = torch.matmul(A, B)
end = time.time()
print(f'CPU 计算时长: {round((end - start) * 1000, 2)} ms')

八、常见问题解决

问题1:驱动安装失败 - Nouveau 冲突

症状:安装 NVIDIA 驱动时提示 Nouveau 驱动正在使用。

解决:禁用 Nouveau

bash
# 编辑配置文件
sudo nano /etc/modprobe.d/blacklist-nouveau.conf

添加内容:

blacklist nouveau
options nouveau modeset=0
bash
# 更新 initramfs
sudo update-initramfs -u
# 重启
reboot

问题2:CUDA 版本不匹配

解决:查看系统 CUDA 版本

bash
cat /usr/local/cuda/version.txt

在代码中指定 CUDA 版本:

python
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'

问题3:Docker 找不到 GPU

解决:配置默认运行时

编辑 /etc/docker/daemon.json:

json
{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}

重启 Docker:

bash
systemctl restart docker

总结

组件作用安装方式
NVIDIA Driver显卡驱动ubuntu-drivers autoinstall
CUDAGPU 计算平台apt install cuda-toolkit-12-8
cuDNN深度学习加速库手动复制到 CUDA 目录
nvidia-docker2Docker GPU 支持apt install nvidia-docker2

安装顺序:驱动 → CUDA → cuDNN → nvidia-docker2