modprobe:致命:在目录 /lib/modules/ 中找不到模块 nvidia-uvm

Posted

技术标签:

【中文标题】modprobe:致命:在目录 /lib/modules/ 中找不到模块 nvidia-uvm【英文标题】:modprobe: FATAL: Module nvidia-uvm not found in directory /lib/modules/ 【发布时间】:2016-12-25 18:12:52 【问题描述】:

在成功安装和测试使用 GPU 支持编译的 Tensorflow 后,我最近遇到了一个问题。

重启机器后,当我尝试运行 Tensorflow 程序时收到以下错误消息:

...
('Extracting', 'MNIST_data/t10k-labels-idx1-ubyte.gz')  
modprobe: FATAL: Module nvidia-uvm not found in directory /lib/modules/4.4.0-34-generic
E tensorflow/stream_executor/cuda/cuda_driver.cc:491] failed call to cuInit: CUDA_ERROR_UNKNOWN
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:140] kernel driver does not appear to be running on this host (caffe-desktop): /proc/driver/nvidia/version does not exist
I tensorflow/core/common_runtime/gpu/gpu_init.cc:92] No GPU devices available on machine.
(0, 114710.45)
(1, 95368.891)
...
(98, 56776.922)
(99, 57289.672)

Screencapture of error

代码:https://github.com/llSourcell/autoencoder_demo

问题:为什么重启 Ubuntu 16.04 机器会破坏 Tensorflow?

【问题讨论】:

【参考方案1】:

我实际上解决了自己的问题,并想分享对我有用的解决方案。

神奇的 Google 搜索是: “modprobe:致命:在目录 /lib/modules/ 中找不到模块 nvidia-uvm”

这导致我在 askubuntu 上得到以下答案: https://askubuntu.com/a/496146

那个答案的作者,Sneetsher,做了很好的解释,所以如果链接不是 404,我会从那里开始。

悬崖笔记

诊断:我怀疑 Ubuntu 可能在我重新启动时安装了内核更新。

解决方案:重新安装 NVIDIA 驱动程序修复了错误。

问题:在 X server 运行时无法安装 NVIDIA 驱动

修复 NVIDIA 驱动程序的两种不同方法

1) 键盘和显示器:

解释 askubuntu 的答案:

1) 切换到纯文本控制台(Ctrl+Alt+F1 或任何到 F6)。

2) 为当前内核(刚刚安装)构建驱动模块sudo ./<DRIVER>.run -K

信用“Sneetsher”:https://askubuntu.com/a/496146

我没有连接到这台 PC 的键盘或显示器,所以这是我实际使用的“无头”方法:

2) 通过 SSH:

按照本指南重启到控制台:

http://ubuntuhandbook.org/index.php/2014/01/boot-into-text-console-ubuntu-linux-14-04/

$ sudo cp -n /etc/default/grub /etc/default/grub.orig
$ sudo nano /etc/default/grub
$ sudo update-grub

根据上述链接编辑 grub 文件(3 处更改):

    注释 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” 行,在开头添加 #,这将禁用 Ubuntu 紫屏。 将 GRUB_CMDLINE_LINUX="" 更改为 GRUB_CMDLINE_LINUX="text",这会使 Ubuntu 直接启动到文本模式。

    取消注释这行#GRUB_TERMINAL=console,去掉开头的#,这会使Grub Menu 进入真正的黑白文本模式(没有背景图片)

    更新:(如果运行 Ubuntu 16.04 如果 $ sudo systemctl set-default multi-user.target

    重启进入控制台

$ sudo shutdown -r now
$ sudo service lightdm stop
$ sudo ./<DRIVER>.run

按照 NVIDIA 驱动程序安装程序进行操作

$ sudo mv /etc/default/grub /etc/default/grub.textonly 
$ sudo mv /etc/default/grub.orig /etc/default/grub 
$ sudo update-grub
$ sudo shutdown -r now

结果 (现在GPU被成功检测到的样子)

...
('Extracting', 'MNIST_data/t10k-labels-idx1-ubyte.gz')
I tensorflow/core/common_runtime/gpu/gpu_init.cc:118] Found device 0 with properties: 
name: GeForce GTX 970
major: 5 minor: 2 memoryClockRate (GHz) 1.342
pciBusID 0000:01:00.0
Total memory: 3.94GiB
Free memory: 3.88GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:138] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_init.cc:148] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:868] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 970, pci bus id: 0000:01:00.0)
(0, 113040.92)
(1, 94895.867)
...

Screencapture of the same

【讨论】:

嗨,我面临着完全相同的问题。我按照您的说明进行操作,但没有得到 sudo ./.run 行,我应该完全一样地运行它还是应该将 替换为某些东西,或者我应该先下载一些驱动程序文件然后运行它.... ? .run 是您从 NVIDIA 站点下载的 NVIDIA 驱动程序的文件名。在我的例子中:这个文件名是“NVIDIA-Linux-x86_64-367.27.run”,可以从这里下载:nvidia.com/download/driverResults.aspx/104284/en-us 这假设您有一个 64 位 x86 CPU,并且您不需要更新的驱动程序版本.如果 367.27 不再适合您的用途,您可能需要替换更新的驱动程序版本。【参考方案2】:

“问题的一个简单解决方案:无法在 X 服务器运行时安装 NVIDIA 驱动程序:

    使用 SSH 从另一台计算机访问 ubuntu 移除 Ubuntu 电脑的屏幕(显示设备) 使用 sudo reboot 重启计算机,然后再次访问

【讨论】:

以上是关于modprobe:致命:在目录 /lib/modules/ 中找不到模块 nvidia-uvm的主要内容,如果未能解决你的问题,请参考以下文章

Linux设备驱动程序加载/卸载方法 insmod和modprobe命令

linux内核模块相关命令:lsmod,depmod,modprobe,modinfo,insmod,rmmod 使用说明

modprobe和lsmod命令配合使用

modprobe: FATAL: Module br_netfilter not found

VSCode:git致命错误:文件在目录之外

modprobe和insmod的区别