CentOS 7 安装 NVIDIA GPU 12.6 驱动全流程指南与避坑实践

1次阅读
没有评论

共计 2300 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

技术背景

在深度学习或图形计算场景中,NVIDIA 驱动与内核版本的匹配至关重要。CUDA 12.6 驱动要求 Linux 内核版本在 3.10 以上,而 CentOS 7 默认内核(3.10.0-1160)虽满足基础条件,但实际安装时常因 kernel-devel 版本偏移、Secure Boot 启用等问题导致失败。正确的驱动部署能确保 GPU 计算稳定性,避免后续 CUDA Toolkit 安装出现兼容性报错。

CentOS 7 安装 NVIDIA GPU 12.6 驱动全流程指南与避坑实践

前置检查

  1. 确认 GPU 型号
    执行以下命令检测 NVIDIA 显卡是否被系统识别:

    lspci | grep -i nvidia

    预期输出类似:

    01:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)

  2. 检查内核版本

    uname -r

    输出应为 3.10.0-xxxx.el7.x86_64 格式,记录完整版本号用于后续 kernel-devel 安装。

分步骤操作

禁用 Nouveau 驱动

  1. 创建黑名单配置文件

    sudo vi /etc/modprobe.d/blacklist-nouveau.conf

    插入以下内容:

    blacklist nouveau
    options nouveau modeset=0

  2. 重建 initramfs

    sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
    sudo dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

  3. 重启后验证

    lsmod | grep nouveau

    若无输出则表示禁用成功。

安装 kernel-devel

  1. 精确匹配当前内核版本

    sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)

  2. 验证头文件路径

    ls /usr/src/kernels/$(uname -r)/include

    应看到大量.h 头文件。

驱动安装交互配置

  1. 下载官方驱动
    NVIDIA 官网 获取对应 GPU 的 12.6 版本驱动(文件名通常为 NVIDIA-Linux-x86_64-*.run)

  2. 赋予执行权限并安装

    chmod +x NVIDIA-Linux-x86_64-*.run
    sudo ./NVIDIA-Linux-x86_64-*.run

    关键选项建议:

  3. 接受 DKMS 编译(确保内核更新后自动重建模块)
  4. 不安装 32 位兼容库(减少依赖冲突)
  5. 允许安装程序自动修改 Xorg 配置

验证安装

  1. 基础功能检查

    nvidia-smi

    预期输出应显示 GPU 型号、温度、显存占用等信息。

  2. 图形界面验证

    nvidia-settings

    若出现 ”Unable to load X server” 错误,需先启动图形界面或添加 --no-x-server 参数。

避坑指南

处理内核源码错误

若安装时报错 ”Unable to find kernel source”,尝试:

sudo ln -s /usr/src/kernels/$(uname -r) /usr/src/linux

解决 Secure Boot 问题

在 BIOS 中禁用 Secure Boot,或手动签名驱动模块:

sudo mokutil --disable-validation

(需重启后在 MOK 界面确认)

多 GPU 初始化顺序

在 /etc/modprobe.d/nvidia.conf 中添加:

options nvidia NVreg_AssignGpus=0

避免设备编号随机变化。

自动化安装脚本

#!/bin/bash
# 检查 root 权限
if [[$EUID -ne 0]]; then
   echo "请使用 root 用户执行此脚本" 
   exit 1
fi

# 记录当前内核版本
KERNEL_VERSION=$(uname -r)

# 禁用 nouveau
echo "[步骤 1] 禁用 Nouveau 驱动"
echo "blacklist nouveau" > /etc/modprobe.d/blacklist-nouveau.conf
echo "options nouveau modeset=0" >> /etc/modprobe.d/blacklist-nouveau.conf
mv /boot/initramfs-${KERNEL_VERSION}.img{,.bak}
dracut -v /boot/initramfs-${KERNEL_VERSION}.img ${KERNEL_VERSION}

# 安装内核头文件
echo "[步骤 2] 安装 kernel-devel"
yum install -y kernel-devel-${KERNEL_VERSION} kernel-headers-${KERNEL_VERSION} || {
    echo "内核头文件安装失败,请检查 yum 源配置"
    exit 2
}

# 驱动安装
echo "[步骤 3] 安装 NVIDIA 驱动"
chmod +x NVIDIA-Linux-x86_64-*.run
./NVIDIA-Linux-x86_64-*.run --silent \
    --dkms \
    --no-opengl-files \
    --no-questions \
    --accept-license || {
    echo "驱动安装失败,请检查日志"
    exit 3
}

# 验证
echo "[完成] 验证安装结果"
nvidia-smi || exit 4

延伸阅读

  1. CUDA Toolkit 12.6 安装指南
  2. NVIDIA 驱动与内核模块管理
  3. 多 GPU 环境配置最佳实践

实际安装过程中,不同硬件环境可能出现特异性问题。建议保存安装日志(/var/log/nvidia-installer.log)以便排查。对于生产环境,推荐使用 Ansible 等工具将上述流程剧本化,实现批量部署。

正文完
 0
评论(没有评论)