无法在 Ubuntu 20.04 上安装 NVIDIA Tesla T4 驱动程序

无法在 Ubuntu 20.04 上安装 NVIDIA Tesla T4 驱动程序

我渐渐对在 Ubuntu 系统上安装 NVIDIA Tesla T4 的显卡驱动程序感到困惑。我所在的团队为我们提供了一台配有专用显卡的虚拟服务器,因此我们可以将 CUDA 用于计算密集型应用程序。

我一直在关注NVIDIA 提供的官方安装文档。我使用了 Ubuntu 的网络 repo 安装方法。我在下面链接了安装日志和系统信息。但每次我尝试验证安装时,都会失败。

# 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 驱动程序 v515.65.01 很好地支持 Tesla T4.所以我开始挖掘。

我目前所做的

我一直在尝试诊断问题,从内核模块开始。果然,NVIDIA 内核模块确实已加载,但modprobe nvidia声称没有 NVIDIA 设备节点。

# lsmod | grep -i nvidia     
nvidia              40796160  1         
drm                   491520  7 vmwgfx,drm_kms_helper,nvidia,ttm
# modinfo nvidia        
filename:       /lib/modules/5.4.0-125-generic/updates/dkms/nvidia.ko
firmware:       nvidia/515.65.01/gsp.bin                                                                              
alias:          char-major-195-*
version:        515.65.01
supported:      external
license:        NVIDIA
srcversion:     8049D44E2C1B08F41E1B8A6
alias:          pci:v000010DEd*sv*sd*bc06sc80i00*
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
depends:        drm
retpoline:      Y
name:           nvidia
vermagic:       5.4.0-125-generic SMP mod_unload modversions
...
# modprobe nvidia -vv
modprobe: INFO: ../libkmod/libkmod.c:365 kmod_set_log_fn() custom logging function 0x56379348cc70 registered
insmod /lib/modules/5.4.0-125-generic/updates/dkms/nvidia.ko 
modprobe: INFO: ../libkmod/libkmod-module.c:892 kmod_module_insert_module() Failed to insert module '/lib/modules/5.4.0-125-generic/updates/dkms/nvidia.ko': No such device
modprobe: ERROR: could not insert 'nvidia': No such device
modprobe: INFO: ../libkmod/libkmod.c:332 kmod_unref() context 0x563793ca6450 released

只有一个 NVIDIA 设备节点,名为/dev/nvidiactl。我以前从未与 NVIDIA 打过交道,所以我不知道这是否不寻常。

# ll /dev | grep -i nvidia
crw-rw-rw-   1 root root    195, 255 Aug 26 08:50 nvidiactl

安装后我立即检查了内核环缓冲区,它显示了相同的错误,可能提示错误消息nvidia-smi。重新启动后,内核环缓冲区会收到相同的消息,最有可能的(但未经验证)由于 NVIDIA 持久守护进程服务单元。

# dmesg
[ 1408.306561] nvidia: loading out-of-tree module taints kernel.
[ 1408.306573] nvidia: module license 'NVIDIA' taints kernel.
[ 1408.306574] Disabling lock debugging due to kernel taint
[ 1408.328692] nvidia: module verification failed: signature and/or required key missing - tainting kernel
[ 1408.337548] nvidia-nvlink: Nvlink Core is being initialized, major device number 239
[ 1408.339537] nvidia 0000:02:00.0: enabling device (0100 -> 0102)
[ 1408.340568] nvidia 0000:02:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[ 1408.340694] NVRM: The NVIDIA GPU 0000:02:00.0 (PCI ID: 10de:1eb8)
               NVRM: installed in this system is not supported by the
               NVRM: NVIDIA 515.65.01 driver release.
               NVRM: Please see 'Appendix A - Supported NVIDIA GPU Products'
               NVRM: in this release's README, available on the operating system
               NVRM: specific graphics driver download page at www.nvidia.com.
[ 1408.341210] nvidia: probe of 0000:02:00.0 failed with error -1
[ 1408.341239] NVRM: The NVIDIA probe routine failed for 1 device(s).
[ 1408.341240] NVRM: None of the NVIDIA devices were initialized.
[ 1408.341491] nvidia-nvlink: Unregistered Nvlink Core, major device number 239

我在 Arch Wiki 中找到了这部分内容,这似乎正是我遇到的问题。我已将pcie_port_pm=off内核参数添加到 GRUB 配置中,重新启动,但仍然不起作用。

# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-5.4.0-125-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro maybe-ubiquity pcie_port_pm=off

我还手动将 Nouveau 驱动程序列入了黑名单。不应该这可能是个问题,因为服务器是无头的,Xorg 甚至没有安装,但谨慎一点总比后悔好。但还是没运气。

# cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf 
blacklist nouveau
options nouveau modeset=0

我联系了我工作单位的系统管理员,他们基本上是这样回复的:“我们还没有遇到过这个问题”和“反正我们 99% 的时间都在使用 Windows”。我们的工作组确实是一个例外,因为我们在几乎纯 Windows 的网络中只依赖 Linux。但系统管理员基本上已经授权我采取一切必要措施来修复这个问题并报告任何发现。

但是,我现在的知识已经到了极限。我对命令行很熟悉,但还不足以深入研究。我们的系统管理员似乎并不真正了解发生了什么,而且由于 SSH 是我访问服务器的唯一方式,所以我不确定是否要对服务器进行任何可能损坏服务器的操作。我希望我在这里忽略了一些非常明显的问题,或者有人以前遇到过同样的问题。我已经花了整整一天的时间试图解决这个问题,现在又要开始另一个问题了,所以任何指点和有用的见解都将不胜感激。

日志

答案1

虽然花了很长时间,但我终于搞清楚了。问题归根结底是我们的系统管理员忘记提及两条关键信息。

  1. 我们不能使用原版 NVIDIA 驱动程序。由于我们在虚拟服务器 (VMWare) 上运行,因此我们需要 NVIDIA 的 vGPU 软件。系统管理员已向我们提供了正确的版本,从那时起 GPU 一直运行良好。

  2. 为了继续使用 GPU,我们需要设置许可证密钥。经过漫长的等待,系统管理员也提供了文档和密钥本身。

这可能是一个很小众的问题。最终归结为沟通问题。因此,如果有人看到这个问题并试图让 NVIDIA GPU 在虚拟服务器上工作,也许可以推动我提到的两点。

相关内容