我有一台安装了专有 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 功能的最简单、最安全的方法是使用官方contrib
和non-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.8
到nvcc
命令行。
如果你想使用 CUDA 9,你可以使用存储库中的版本backports
,就像我之前安装它一样nvidia-driver
:
# apt-get install -t stretch-backports nvidia-cuda-dev nvidia-cuda-toolkit
您可能想查看更改日志,看看使用backports
.
6) 重新启动机器
此时,一切都应该运行良好,就像以前一样,没有任何明显的性能影响。