如何从失败的 Nvidia 驱动程序加载中恢复?

如何从失败的 Nvidia 驱动程序加载中恢复?

我有一台安装了专有 Nvidia 驱动程序的服务器(运行 Debian 9 Stretch)。它对于科学计算来说是如此无头。

因此,安装了 Nvidia 驱动程序以使用 CUDA(在使用从 Nvidia 网站下载的包文件安装 CUDA 期间cuda_10.0.130_410.48_linux.run)。它曾经运作良好。

两天前,我重新启动系统进入BIOS以禁用超线程。重启后,Nvidia 驱动程序未加载。我重启系统好几次了,还是一样。

我怎样才能把它带回来?

这里有一些信息供您参考。

# lspci -v|grep VGA
05:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6G
B] (rev a1) (prog-if 00 [VGA controller])

# nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Ma
ke sure that the latest NVIDIA driver is installed and running.

# modprobe nvidia
modprobe: FATAL: Module nvidia not found in directory /lib/modules/4.9.0-9-amd64

# nvidia-settings

ERROR: libgtk-3.so.0: cannot open shared object file: No such file or directory
       libnvidia-gtk3.so: cannot open shared object file: No such file or
       directory
       libgtk-x11-2.0.so.0: cannot open shared object file: No such file or
       directory
       libnvidia-gtk2.so: cannot open shared object file: No such file or
       directory


ERROR: A problem occured when loading the GUI library. Please check your
       installation and library path. You may need to specify this library when
       calling nvidia-settings. Please run `nvidia-settings --help` for usage
       information.

答案1

正是针对这种情况,您不应该从 Nvidia 网站上提供的脚本安装 Nvidia 专有驱动程序。您已经创建了一个弗兰肯Debian你把它弄坏了。

在 Debian 上安装必要的软件包并使用 GPU 的 CUDA 功能的最简单、最安全的方法是使用官方contribnon-free存储库中的专有驱动程序和 Nvidia 工具包。

这似乎是一个很大的缺点,因为您没有获得最新的版本(但您可以通过使用backports存储库),但是当涉及到 CUDA 时,它确实很有意义,尤其是在无头服务器上。

因此,为了让你的服​​务器恢复正常运行(更不用说更可靠),我强烈建议卸载以前从 Nvidia 网站安装的驱动程序,并安装 Debian 社区打包的 Nvidia 驱动程序和 CUDA 工具包。

1) 卸载以前的驱动程序、CUDA 和其他链接的 Nvidia 软件包:

# apt purge nvidia-*

2)在您的系统中添加 Debian 存储库contrib(如果尚未完成),应如下所示:non-free/etc/apt/sources.list

deb http://deb.debian.org/debian stretch main contrib non-free deb-src 
http://deb.debian.org/debian stretch main contrib non-free

deb http://deb.debian.org/debian-security/ stretch/updates main contrib non-free  
deb-src http://deb.debian.org/debian-security/ strech/updates main contrib non-free

deb http://deb.debian.org/debian stretch-updates main contrib non-free 
deb-src http://deb.debian.org/debian stretch-updates main contrib non-free

如果您想要backports存储库,请在其余部分之后添加这些内容:

deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free

3)更新apt缓存:

# apt update

4) 安装 Nvidia 专有驱动程序(以及内核头文件):

# apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver

如果您想拥有更新的版本并使用backports存储库中的版本(当前分别为 375.66 和 390.48 版本),使用此命令代替上一个命令:

# apt-get install -t stretch-backports nvidia-driver

5)安装CUDA工具包:

# apt-get install nvidia-cuda-dev nvidia-cuda-toolkit

请注意,CUDA 8 仅支持gcc 5.3.1,不适用于stretch.要编译,您需要添加-ccbin clang-3.8nvcc命令行。

如果你想使用 CUDA 9,你可以使用存储库中的版本backports,就像我之前安装它一样nvidia-driver

# apt-get install -t stretch-backports nvidia-cuda-dev nvidia-cuda-toolkit

您可能想查看更改日志,看看使用backports.

6) 重新启动机器

此时,一切都应该运行良好,就像以前一样,没有任何明显的性能影响。

相关内容