知悉:本文只涉及run程序安装,不涉及cuda安装,不涉及升级内核,只在现有内核下操作,内核版本3.10-generic
一、检查3090驱动是否异常(centos和ubuntu均适用)
(1)nvidia -smi
1.首先确认系统是否有安装3090驱动 nvidia -smi
(2)环境变量,NVIDIA内核模块
1.这个时候也可能是因为环境变量没有配置,因为我们创建云主机的时候如果选择的系统自带GPU,默认是没有添加环境变量的,但是驱动已经存在,需要查看程序中是否有加载nvidia内核模块 lsmod | grep nvidia,图例是已经有显卡驱动的情况下,只需要增加环境变量就可以全局运行
find / -name nvidia-smi 找到路径
~/.profile内加入export PATH=$PATH:/usr/bin后保存,source ~/.profile即可
2.如果没有输出,但是选择的是自带GPU显卡驱动的系统,表示内核模块没有加载,尝试手动加载:modprobe nvidia 图例为重新加载
(3)检查nouveau驱动冲突
如果不了解nouveau是什么请参考官方nvidia文档:nouveau是什么
1.确保nouveau驱动已被禁用且没有加载lsmod | grep nouveau,图例为没有
2.如果nouveau驱动仍在加载,需要重新生成initramfs并重启系统(注:initramfs
(initial RAM filesystem)是一个初始的文件系统,用于在系统启动时加载内核模块和驱动程序。如果 nouveau
驱动在禁用后仍然加载,可能是因为它在 initramfs
中保留了旧的配置。
重新生成 initramfs
是为了确保新生成的 initramfs
不包含 nouveau
驱动模块,从而彻底禁用 nouveau
驱动。)
sudo bash -c "echo 'blacklist nouveau' > /etc/modprobe.d/blacklist-nouveau.conf"
sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nouveau.conf" (这两步是禁用nouveau驱动)
dracut -f /boot/initramfs-$(uname -r).img $(uname -r) 如果有问题直接 dracut -f 一样 (重新生成initramfs文件系统)
reboot (重启后可以再次lsmod | grep nouveau验证是否有加载)
(4)确认版本兼容性
确认gcc,kernel-devel,内核版本是否互相适配,这是一个必要条件
1.gcc是一个支持多种编程语言的编译器集合,包括C C++ GO等等
2.kernel-devel是包含内核头文件和Makefile,这些是编译内核模块时必须的,可以让第三方模块(NVIDIA驱动)可以与当前运行的内核编译和链接
4.1检查gcc版本是否适配内核
uname -r 检查当前内核版本
gcc --version 查看gcc版本(但是这个只能检查环境变量里目前用的gcc,不能说是内核适配的acc) 所以这个是看不出来的
cat /proc/version 可以查看内核支持的gcc是哪个版本,然后可以通过上面的gcc --version来判断是否一致 ,,,, 这样就可以判断gcc 和 内核是适配的
如果gcc不适配,下面还有gcc安装说明
4.2检查kernel-devel版本是否适配内核
uname -r 检查当前内核版本
rpm -qa | grep kernel-devel 查看kernel-devel包的版本(centos) 很显然适配
rpm -qa | grep kernel-headers 查看kernel-headers包的版本(centos)
dpkg -l | grep "linux-headers-$(uname -r)" 查看kernel-devel包的版本(ubuntu) 这条直接针对系统版本
如果kernel-devel不适配,可以通过 yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)方式准确安装正确的版本 apt-get install linux-headers-$(uname -r)是ubuntu的方式
有可能装的都是对的但是损坏了
yum reinstall -y kernel-devel-$(uname -r) kernel-headers-$(uname -r) 重新安装下
确保之前的构建文件被完全清除,以防止冲突:
cd/usr/src/kernels/$(
uname-r)
4.3其他检查
Chapter 2. Minimum Requirements
这个是系统本身有的,重要的是要考虑内核和这些是否适配,如果升级了内核,很有可能导致的是内核和软件的不适配,而不是版本没有达到要求
二、centos 安装3090显卡驱动过程
(1)安装前工作
正常云主机创建的centos7.9不含GPU的时候,是没有gcc和kernel-devel的,需要安装对应的版本
cd / 确保没有环境变量的问题
gcc --version 查看gcc的版本
rpm -qa | grep kernel-devel 查看kernel-devel包的版本
发现都没有,需要安装对应的版本,yum我这边试过了,wangsu的yum源有点问题,更换阿里云yum源参考这篇文档
更换完以后我们一般依据客户的使用习惯基本都会 yum update,操作完以后会遇到无法ssh远程登录,解决参考这篇文章
1.1安装kernel-devel
yum install -y kernel-devel-$(uname -r) 方式准确安装正确的版本
1.2安装gcc
cat /proc/version 可以查看内核支持的gcc是哪个版本
yum groupinstall -y "Development Tools"安装 Development Tools
组包,这个组包包含了 GCC 以及其他开发工具 也可以直接 yum install gcc-4.8.5,如果不行可以 yum list gcc 看下库里的是什么,正常是有的
1.3nouveau驱动程序的禁用
*创建一个名字为blacklist-nouveau.conf的文件,
*添加blacklist nouveau和options nouveau modeset=0到文件中,
*重新生成initramfs文件系统,
*重启系统
sudo bash -c "echo 'blacklist nouveau' > /etc/modprobe.d/blacklist-nouveau.conf"
sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nouveau.conf" (这两步是禁用nouveau驱动)
dracut -f /boot/initramfs-$(uname -r).img $(uname -r) 如果这条命令有异常可以直接执行 dracut -f (重新生成initramfs文件系统)
reboot
lsmod | grep nouveau验证是否有加载
(2)安装3090驱动过程
2.1正式安装NVIDIA 3090显卡驱动包(客户思路,可以看下,但是命令不要执行)
官网:NVIDIA GeForce 驱动程序 - N 卡驱动 | NVIDIA
按正常思维正常都是装最新的,点击获取下载,立即下载,右键点击复制链接https://us.download.nvidia.com/XFree86/Linux-x86_64/555.58.02/NVIDIA-Linux-x86_64-555.58.02.run 要有.run是正确的
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/555.58.02/NVIDIA-Linux-x86_64-555.58.02.run 下载3090驱动
chmod +x NVIDIA-Linux-x86_64-555.58.02.run 增加执行权限
./NVIDIA-Linux-x86_64-440.64.00.run 运行
- NVIDIA Proprietary(NVIDIA 专有):这是 NVIDIA 提供的专有驱动程序模块,通常提供更好的性能和功能支持,但它是闭源的。
- MIT/GPL(开源):这是根据 MIT 或 GPL 许可证发布的开源内核模块,可能提供更好的兼容性和社区支持,但性能可能不如专有驱动。
正常是选择第一个,然后报错了,提示我们需要进入log查看报错日志
cat /var/log/nvidia-installer.log 查看到核心是当前内核版本太旧,NVIDIA 驱动程序不支持 Linux 内核版本低于 4.15。然而,CentOS 7.9 的默认内核版本是 3.10.x,导致无法直接安装最新版的 NVIDIA 驱动。 所以这个驱动不能使用,只能升级内核以及其他软件包的版本,才能使用这个3090驱动
2.2正式安装NVIDIA 3090显卡驱动包(正确过程)
NVIDIA官网搜寻版本
由于我们的内核是3.10过于早,所以直接在官网下载最新的驱动是无法正常应用的,而我们又不知道什么版本能适配,我们直接开一台带gpu的镜像然后在根目录/执行nvidia -smi查看版本 535.54.03
进入nvidia官网直接搜索这个版本
找到后使用wget进行下载
wget https://cn.download.nvidia.com/XFree86/Linux-x86_64/535.54.03/NVIDIA-Linux-x86_64-535.54.03.run 下载3090驱动
chmod +x NVIDIA-Linux-x86_64-535.54.03.run.1增加执行权限
./NVIDIA-Linux-x86_64-535.54.03.run.1 运行
请知悉后面安装的时候还会鱼洞一些报错,解决方法也附上了
出现报错,我安装的时候是纯centos7.9系统安装,提示是无法自动检测到 X 库和 X 模块的路径。通常,这是因为系统缺少某些必要的软件包,如 pkg-config
和 X.Org SDK/development 包。
yum install pkgconfig -y
yum groupinstall "X Window System" -y
yum install xorg-x11-server-devel -y
./NVIDIA-Linux-x86_64-535.54.03.run.1 运行
虽然 NVIDIA 驱动程序包包含了 Vulkan 组件,但系统上缺少 Vulkan ICD(Installable Client Driver)加载器。Vulkan ICD 加载器是 Vulkan 运行时的一部分,用于加载和管理 Vulkan 驱动程序。
要解决这个问题,你需要安装 Vulkan ICD 加载器。(可以不用管直接OK,不安装不会影响安装成功)
yum install vulkan vulkan-tools -y (这是安装方法)
在安装 NVIDIA 驱动程序时,系统会提示你是否要运行 nvidia-xconfig
工具来自动更新你的 X 配置文件,使 NVIDIA X 驱动程序在你重新启动 X 服务器时可以被使用。这个工具会自动生成一个新的 /etc/X11/xorg.conf
文件,并备份任何已有的 X 配置文件。
./NVIDIA-Linux-x86_64-535.54.03.run.1 运行
恭喜你成功安装了 NVIDIA 加速图形驱动程序版本 535.54.03,并且 X 配置文件已成功更新。
reboot后
nvidia -smi就可以正常显示了
三、 ubuntu安装3090显卡驱动过程
(1)安装前工作
还是先更新apt镜像源,参考文档 apt换源
一些依赖包会在下面的安装程序中一次性下载完全,不需要再提前下载,相对简单
1.1nouveau驱动程序的禁用
sudo bash -c "echo 'blacklist nouveau' > /etc/modprobe.d/blacklist-nouveau.conf"
sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nouveau.conf" (这两步是禁用nouveau驱动)
update-initramfs -u (这边ubuntu有些不一样,重新生成initramfs文件系统)
reboot (重启后可以再次lsmod | grep nouveau验证是否有加载)
(2)安装3090驱动程序
不同于centos,ubuntu安装相对简单
apt install nvidia-driver-535 这一条就会将所有的依赖都会下载完成,535版本,默认是没有加入环境变量的,加一下环境变量即可。
find / -name nvidia-smi 找到路径
~/.profile内加入export PATH=$PATH:/usr/bin后保存,source ~/.profile即可