服务器重启nvidia无法使用
1、问题
服务器进行了重启后,进行docker run 使用gpu时报错:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: Running hook #0:: error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown.
用nvidia-smi命令查看也发现无法使用,并提示
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
Make sure that the latest NVIDIA driver is installed and running.
说明重启导致nvidia蹦了
二、原因
linux服务器重启之后有时候内核更新了,这时候系统会自动更新内核,那么原来的nvidia驱动器的版本就跟不上内核的版本了。
三、方案一
参考(https://zhuanlan.zhihu.com/p/89714824)
sudo yum install dkms
sudo dkms install -m nvidia -v 418.87.00
其中,418.87.00 是之前安装 nvidia 驱动的版本号,可通过下面方法查到:
ls /usr/src | grep nvidia
但本人试过,没用
四、方案二
重装nvidia驱动
4.1 依赖环境
yum install kernel-devel gcc cmake build-essential -y
4.2 修改设置
4.2.1 屏蔽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……
查看命令
ls mod | grep nouveau
修改dist-blacklist.conf文件
vim /lib/modprobe.d/dist-blacklist.conf
#将nvidiafb注释掉:
#blacklist nvidiafb
#然后添加以下语句:
blacklist nouveau
options nouveau modeset=0
重启
sudo reboot
屏蔽后,lsmod | grep nouveau 将无信息输出
但,实践试过,还有信息输出,下面操作之后才无信息输出:
重建initramfs images:
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
这时lsmod | grep nouveau 命令才显示无内容,说明禁用成功
4.2.2 屏蔽nouveau或者采用:
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
加入:
blacklist nouveau
options nouveau modeset=0
更新使其生效
sudo update-initramfs -u
4.2.3 修改运行级别为文本模式
systemctl set-default multi-user.target
如果不改为文本模式将无法安装
或者用下面的操作:
systemctl set-default multi-user.target
# init 3
4.2.4 重新启动服务器
sudo reboot
4.3 NVIDIA驱动下载安装
下载地址:NVIDIA 驱动程序下载
复制到服务器的文件夹中,cd到此文件夹中
修改权限
chmod +x NVIDIA-Linux-x86_64-440.118.02.run
安装
./NVIDIA-Linux-x86_64-440.118.02.run
安装过程,选择yes 跟accept
如果报错 unable to find the kernel source tree for the currently running kernel…,使用下面命令安装,3.10.0-1062.18.1.el7.x86_64需要改成自己的目录,可以用uname -r查看
./NVIDIA-Linux-x86_64-440.118.02.run --kernel-source-path=/usr/src/kernels/3.10.0-1160.25.1.el7.x86_64 -k $(uname -r)
4.4 安装成功
nvidia-smi
[参考]
CentOS7安装NVIDIA显卡驱动maqian5的博客-CSDN博客centos7安装nvidia显卡驱动
CentOS 7 安装 NVIDIA 显卡驱动和 CUDA Toolkit_Xue Shengke 博客-CSDN博客
Linux服务器重启后nvidia-smi无法使用的解决方法_周晓松的个人主页-CSDN博客
参考4(https://blog.csdn.net/real_cactus/article/details/110621471)