最近的内核更新破坏了我的 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
答案1
$ dkms 状态
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
这表明 nvidia-410 dkms 驱动程序未在内核 4.4.0-145-generic 上构建。应该有第四行,如下所示:
nvidia-410, 410.48, 4.4.0-145-generic, x86_64: installed
谁知道为什么它没有在 -145 内核上构建...那里有一个 dkms.conf 文件。
可以从以下网址下载 Cuda 10.0这里. 安装文件是这里。
下载 Cuda 包并重新安装。然后执行dkms status
命令并验证它是否显示第 4 行,如上所示。
笔记:如果您想要较新版本的 Nvidia 驱动程序,最新版本是 418.56。我不能说它是否与 Cuda 10.0 兼容。
笔记:如果 Cuda/Nvidia 软件包中有 bug,你可能每次更新内核时都必须这样做:-(
更新#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,然后一切即可恢复正常。