Linux操作系统,从头安装Nvidia显卡驱动,特别详细!

来源: AINLPer公众号(每日干货分享!!)
编辑: ShuYini
校稿: ShuYini
时间: 2023-9-15

 跑模型少不了了显卡驱动,这部分主要内容包括:显卡驱动型号对齐、驱动依赖安装、显卡安装等三个部分。如果安装过了显卡驱动可以跳过这一步。

1、查看服务器型号:

cat /etc/redhat-release

2、查看服务器显卡型号:

sudo lshw -numeric -C display  或  lspci | grep -i vga

3、访问英伟达官网:https://www.nvidia.cn/Download/index.aspx?lang=cn,根据自己显卡的系列型号,选择对应的版本,进行下载。 如下图所示:
请添加图片描述

 我使用的显卡是T4,操作系统是Centos7.9,所以选择这个版本。这里又一点需要注意,CUDA Toolkit的版本需要和使用的Pytorch、Tensorflow等框架版本一致。目前我看Pytorch最高可以支持11.8的CUDA版本。
4、安装GCC、kernal组件、dkms等相关依赖

yum install gcc
yum install gcc-c++
yum -y install kernel-devel
yum -y install kernel-headers
yum -y install epel-release
yum -y install dkms

4、关闭nouveau。其中Nouveau 是由第三方为 NVIDIA 显卡开发的一个开源 3D 驱动,也没能得到 NVIDIA 的认可与支持。虽然 Nouveau Gallium3D 在游戏速度上还远远无法和 NVIDIA 官方私有驱动相提并论,不过却让 Linux 更容易的应对各种复杂的 NVIDIA 显卡环境,让用户安装完系统即可进入桌面并且有不错的显示效果,所以,很多 Linux 发行版默认集成了 Nouveau 驱动,在遇到 NVIDIA 显卡时默认安装。企业版的Linux 更是如此,几乎所有支持图形界面的企业 Linux 发行版都将 Nouveau 收入其中。

 对于个人桌面用户来说,处于成长阶段的 Nouveau 并不完美,与企业版不一样,个人用户除了想让正常显示图形界面外很多时候还需要一些 3D 特效,Nouveau 多数时候并不能完成,而用户在安装 NVIDIA 官方私有驱动的时候 Nouveau 又成为了阻碍,不禁用 Nouveau 安装时总是报错, 错误如下:ERROR: The Nouveau kernel driver is currently in use by your system. This driver is incompatible with the NVIDIA driver……

  • 1)查看是否有nouveau在运行:
lsmod | grep nouveau
  • 2)修改系统黑名单配置文件,进入到/etc/modprobe.d文件夹下面,找到具有blacklist.conf字样的文件。通过vim修改该配置文件,在文件中新增以下内容,最后通过!wq保存。
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
  • 3)更新内核服务器参数(如果第一个命令不行,可以尝试第二个)
update-initramfs -u  或者  dracut --force
  • 4)重启服务器
reboot
  • 5)再次查看是否有nouveau在运行,如果没有,则表示nouveau完全关闭了。
lsmod | grep nouveau

5、将驱动拷贝到服务器上,执行以下命令,安装显卡驱动(如果安装报错,请看下面第6条):

chmod +x NVIDIA-Linux-x86_64-515.105.01.run
sh NVIDIA-Linux-x86_64-515.105.01.run

6、显卡安装报错
 在安装过程中,我主要遇到的报错为:ERROR:Unable to find the kernel source tree for the currently running kernel…
在这里插入图片描述
 遇到这个问题的时候,网上看了很多的例子,这里再做一下整理。这个报错意思是说操作系统运行的内核版本与kernel-devel不一致。这里将两者版本对齐就可以了。具体操作如下:
1)查看系统运行版本的内核编号

cat /proc/version

2)列出目前系统所有内核相关资源

rpm -qa | grep kernel
  • 或者直接列出安装的kernel-devel、kernel-headers的版本
yum info kernel-devel、kernel-headers

如下图所示:
在这里插入图片描述

 可以发现,服务器运行的内核编号和kernel-devel、kernel-headers的版本编号并不一样。这个时候有两种做法,一种是让服务器的内核版本编号与kernel-devel、kernel-headers版本编号对齐,另外一种是让kernel-devel、kernel-headers的版本编号与服务器系统运行的内核编号对齐。
1)系统内核编号与kernel-devel等编号对齐。

# 根据kernel-devel编号安装对应的系统内核
yum install kernel-3.10.0-1160.95.1.el7.x86_64

# 设置系统默认启动内核版本
grub2-set-default kernel-3.10.0-1160.95.1.el7.x86_64

# 重启服务器
reboot

# 再次进入服务器,查看系统运行内核编号
cat /proc/version

2)kernel-devel等编号与系统内核编号对齐(这里假如系统内核编号为:kernel-3.10.0-1160.95.1.el7.x86_64)

# 根据系统内核编号安装对应的kernel-devel、kernel-headers
yum install kernel-headers-3.10.0-1160.95.1.el7.x86_64
yum install kernel-devel-3.10.0-1160.95.1.el7.x86_64

以上不管是按照哪种方式,得到的结果如下图所示,此时按照上面第5步的命令,安装显卡驱动就可以了。
在这里插入图片描述
另外,如果有其它的服务,需要之前的内核,那么就需要给服务器切换内核。具体操作如下:

# 进入到/boot/grub2或者/etc目录下面,其中:/etc/grub2.cfg文件是一个文件链接,实际链接到/boot/grub2/grub.cfg
#看一下是否有:grub.cfg,如果没有需要创建。
grub2-mkconfig -o /boot/grub2/grub.cfg

#查看当前内核
grub2-editenv list

#查看已安装内核
awk -F' '$1=="menuentry " {
    
    print i++ " : " $2}' /boot/grub2/grub.cfg

#设置默认启动版本
grub2-set-default xx #xx为你看到的内核编号

#重建内核配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg

#重启生效
reboot

安装完成!!!
如有问题,关注 AINLPer 公众号,加群交流!

猜你喜欢

转载自blog.csdn.net/yinizhilianlove/article/details/132908863