现在很多教程都没有覆盖全报错问题,本文几乎把所有问题都描述到位

首先说下我电脑的环境:

  • centos7 x86-64: uname -r 命令显示为3.10.0-1160.el7.x86_64 ;
  • 物理显卡为单卡2080ti ;
  • gcc通过yum安装,yum install gcc 版本为4.8.5, 同时会显示安装一些其他包,如glibc版本为2.17 ;

安装准备

以下为驱动和官网文件名一致, 可到nvidia官网下载,选择历史版本,选择rpm(local)模式

  • cuda-repo-rhel7-10-0-local-10.0.130-410.48-1.0-1.x86_64
  • cuda-repo-rhel7-10-0-local-nvjpeg-update-1-1.0-1.x86_64.rpm
  • libcudnn7-7.6.5.32-1.cuda10.0.x86_64.rpm [这个需要注册,去官网注册下载]
  • libcudnn7-devel-7.6.5.32-1.cuda10.0.x86_64.rpm[需要注册下载]
  • NVIDIA-Linux-x86_64-418.165.02.run [每个人的硬件不一样,去官网下载]
    以下为CUDA官网链接选择截图:

安装流程

  1. 禁用Nouveau驱动
# 文件也可能这 /lib/modprobe.d/dist-blacklist.conf
vim /etc/modprobe.d/blacklist-nouveau.conf
# 注释掉 #blacklist nvidiafb
# 添加下列两行
 #blacklist nvidiafb
blacklist nouveau
options nouveau modeset=0
# 重新生成 kernel initramfs
dracut --force
# 重做initramfs镜像
cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
# 改为终端模式,runlevel改为3
systemctl set-default multi-user.target
init 3
# 重启服务器
reboot
# 重启后验证驱动是否被禁用 如果无结果显示则表明成功禁用
lsmod | grep nouveau
  1. 优先安装cuda,使命令nvcc -V有效
#rpm模式安装基础包
rpm -ivh cuda-repo-rhel7-10-0-local-10.0.130-410.48-1.0-1.x86_64
rpm -ivh cuda-repo-rhel7-10-0-local-nvjpeg-update-1-1.0-1.x86_64.rpm
#通过yum安装cuda其他依赖
yum clean all
yum install -y cuda

如上一步步执行,有可能会遇到缺失其他包,最基础的比如gcc, 自己yum安装下就好了。下面我们说一个重点报错的依赖项 dkms:dkms-nvidia-410.48-1.el7.x86_64

# centos系统安装dkms:
#安装dkms时提示“没有可用软件包”,安装EPEL(Extra Packages for Enterprise Linux)
yum install -y epel-release

# 安装kernel-headers, kernel-devel,dkms
yum install -y kernel-headers kernel-devel dkms
# 检查kernel和命令uname -r下的系统版本是否一致
uname -r

安装完成后,在/usr/local/ 文件夹下,会存在cuda、cuda-10.0文件夹,接下来配置全局环境变量,使命令nvcc -V有效:

vim /etc/profile
# 编辑环境变量文件,末尾追加
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
# 通过 esc - :wq 保存编辑
# 保存后立马生效
source /etc/profile
# 检查配置是否成功
echo $LD_LIBRARY_PATH

# 安装完成,检查cuda是否正常
nvcc -V
  1. 安装nvidia驱动,使命令nvidia-smi有效,驱动版本为418
# 首先查看自己的kernels版本
cd /usr/src/kernels
ls
# 把上命令显示的版本号copy下来,填写到下个命令kernel-source中, 本文记为path1代号哈
#--------------------------------------------
#一般来说,如果现在直接执行下一步安装,会报错:ERROR: Failed to run `/sbin/dkms build -m nvidia -v 390.87 -k 3.10.0-514.el7.x86_64`:
#Error! echo Your kernel headers for kernel 3.10.0-1160.el7.x86_64
#cannot be found at /lib/modules/3.10.0-1160.el7.x86_64/build or /lib/modules/3.10.0-514.el7.x86_64/source.

# 此时,需要进入报错提示的文件夹设置软连接:
cd /lib/modules/
ls
# 看是不是存在报错找不到的那个文件夹,并进入显示的文件夹
cd 3.10.0-1160.el7.x86_64
rm -f build 
# 重设软连接。可以通过 ll命令查看软连接是否设置正确
ln -s /usr/src/kernels/3.10.0-1160.11.1.el7.x86_64(这个其实就是path1) build

# 进入到下载的驱动文件夹执行安装
./NVIDIA-Linux-x86_64-418.165.02.run --kernel-source-path=/usr/src/kernels/3.10.0-1160.11.1.el7.x86_64(用你的上步结果代替, 这个记为path1)
# 一直选择yes直到安装完成就行
#测试安装结果
nvidia-smi
  1. 安装cudnn
# 下面两项安装完成即可
rpm -ivh libcudnn7-7.6.5.32-1.cuda10.0.x86_64.rpm
rpm -ivh libcudnn7-devel-7.6.5.32-1.cuda10.0.x86_64.rpm
  1. 特地提醒下大家第3步安装418驱动时要注意的问题就是:/usr/src/kernels/3.10.0-1160.11.1.el7.x86_64, 这个文件软连接到的目录是 /lib/modules/3.10.0-1160.el7.x86_64,,仔细看!!两个文件内核文件名是不一样的!!!!