最近的内核更新破坏了我的 Cuda 安装(如果我启动旧内核,它工作正常) - 非常相似的设置在其他机器上的内核更新中持续存在,主要区别在于这个安装是 Ubuntu Server 而其他的是 Ubuntu Desktop。这听起来像是 DKMS 问题吗?或者是其他东西?如何让我的 cuda 模块针对新内核构建自己?
我有 Ubuntu 16.04、Cuda 10.0(由本地 .deb 安装)、nvidia 驱动程序 410.48(在 cuda 安装期间自动安装)和 2080Ti GPU
$ ls -al /boot
total 111740
drwxr-xr-x 3 root root 4096 Apr 9 12:02 .
drwxr-xr-x 24 root root 4096 Apr 4 16:53 ..
-rw-r--r-- 1 root root 1252376 Jan 16 23:29 abi-4.4.0-142-generic
-rw-r--r-- 1 root root 190580 Jan 16 23:29 config-4.4.0-142-generic
-rw-r--r-- 1 root root 190580 Mar 26 14:02 config-4.4.0-145-generic
drwxr-xr-x 5 root root 4096 Apr 9 12:02 grub
-rw-r--r-- 1 root root 50832836 Apr 4 16:54 initrd.img-4.4.0-142-generic
-rw-r--r-- 1 root root 39170185 Apr 9 11:15 initrd.img-4.4.0-145-generic
-rw-r--r-- 1 root root 182704 Jan 28 2016 memtest86+.bin
-rw-r--r-- 1 root root 184380 Jan 28 2016 memtest86+.elf
-rw-r--r-- 1 root root 184840 Jan 28 2016 memtest86+_multiboot.bin
-rw-r--r-- 1 root root 255 Jan 16 23:29 retpoline-4.4.0-142-generic
-rw------- 1 root root 3904797 Jan 16 23:29 System.map-4.4.0-142-generic
-rw------- 1 root root 3906115 Mar 26 14:02 System.map-4.4.0-145-generic
-rw------- 1 root root 7184032 Jan 16 23:29 vmlinuz-4.4.0-142-generic
-rw------- 1 root root 7188984 Mar 27 10:03 vmlinuz-4.4.0-145-generic
$ dkms status
bbswitch, 0.8, 4.4.0-142-generic, x86_64: installed
bbswitch, 0.8, 4.4.0-145-generic, x86_64: installed
nvidia-410, 410.48, 4.4.0-142-generic, x86_64: installed
$ ls -al /usr/src
total 44
drwxr-xr-x 11 root root 4096 Apr 9 12:02 .
drwxr-xr-x 12 root root 4096 Mar 14 12:56 ..
drwxr-xr-x 2 root root 4096 Mar 14 11:05 bbswitch-0.8
drwxr-xr-x 5 root root 4096 Mar 14 14:55 cudnn_samples_v7
drwxr-xr-x 3 root root 4096 Mar 14 12:56 gmock
drwxr-xr-x 4 root root 4096 Mar 14 12:56 gtest
drwxr-xr-x 27 root root 4096 Feb 27 18:41 linux-headers-4.4.0-142
drwxr-xr-x 7 root root 4096 Feb 27 18:43 linux-headers-4.4.0-142-generic
drwxr-xr-x 27 root root 4096 Apr 4 16:53 linux-headers-4.4.0-145
drwxr-xr-x 7 root root 4096 Apr 4 16:53 linux-headers-4.4.0-145-generic
drwxr-xr-x 8 root root 4096 Mar 14 14:49 nvidia-410-410.48
$ ls -alR /var/lib/dkms
[Very long output] https://pastebin.com/RRMsBT0s
$ dkms 状态
这向我们展示了 nvidia-410 dkms 驱动程序不是基于内核 4.4.0-145-generic 构建的。应该有第 4 行,如下所示:
谁知道为什么它没有建立在 -145 内核上……那里有一个 dkms.conf 文件。
Cuda 10.0 可以从这里下载。安装文档在这里。
下载 Cuda 包并重新安装。然后执行
dkms status
命令并验证它是否显示第 4 行,如上所示。注意:如果您想要更新版本的 Nvidia 驱动程序,最新版本是 418.56。我不能说它是否与 Cuda 10.0 兼容。
注意:如果 Cuda/Nvidia 软件包中存在错误,您可能必须在每次更新内核时都这样做:-(
更新#1:
最近的更新导致 Nvidia 视频驱动程序 410 不在当前内核上构建。
Cuda 10.0 安装 Nvidia 视频驱动程序 410。
Cuda 10.1 与 Nvidia 视频驱动程序 418 一起安装。
Cuda 10.1 存在 tensorflow 问题。
用户需要带有工作的 Nvidia 视频驱动程序的 Cuda 10.0。
用户正在向 Nvidia 请求进一步的帮助。
更新#2:
尝试这个...
删除 Cuda 10.1 和视频驱动程序 418。
重新安装 Cuda 10.0 和视频驱动程序 410。
这将使您回到初始状态。
让我们尝试手动构建 410 驱动程序...
sudo dkms build nvidia-410/410.48
# 构建可能会失败,但请给我们一个理由sudo dkms install nvidia-410/410.48
# 如果构建是干净的,则运行dkms status
# 在当前内核上验证 410 安装更新#3:
事实证明,安装 Cuda 10.0/10.1 并不会自动安装 Nvidia 视频驱动程序,反之亦然。
最终的解决方案是让用户手动安装所需的 Cuda 10.0,并手动安装最新的 Nvidia 视频驱动程序 418.56,一切都恢复正常了。