Ubuntu Server 16.04 上的 DKMS

Ubuntu Server 16.04 上的 DKMS

最近的内核更新破坏了我的 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,然后一切即可恢复正常。

相关内容