为什么modinfo会说“找不到模块”,而lsmod声称模块已加载?


9

根据lsmod命令的手册页显示“当前正在加载哪些内核模块”。

我编写了一个脚本,用于modinfo显示实际使用了哪些内核对象(.ko)文件:

#!/bin/sh
for i in `lsmod | awk '{print $1}' | sed -n '1!p'`; do
echo "###############################$i###############################"
echo ""
modinfo $i
echo ""
echo ""
done

现在我发现modinfo nvidia显示以下输出:

ERROR: modinfo: could not find module nvidia

你们对此有什么解释吗?

Answers:


10

您的nvidia模块已完美加载并可以正常工作。问题出在modinfo

modinfo通过读取/lib/modules/$(uname -r)/modules.*文件来获取已知模块的列表,这些文件通常使用进行更新depmod

如果depmod -a在安装nvidia模块后尚未运行,modinfo则不知道。这不会阻止任何人使用该模块加载模块,insmod并且在加载模块时lsmod将显示一切正常。


我运行了sudo depmod -a,但是modinfo仍然不知道nvidia模块,但是lsmod可以显示它。怎么会这样?
哈卡辛

@Hakaishin我在安装了nvidia-410驱动程序的ubuntu 16.04上,看来我的内核模块的名称是nvidia_410。因此,尝试modinfo nvidia_410或类似。
cheshirekow19年

0

如果您最近卸载了nvidia驱动程序,则可能已从系统中取消安装了该模块,但该模块仍在initrd中。您可以使用来检查initrd中的哪个lsinitrd。或者只是尝试重新安装内核以查看它是否不再出现在中lsmod

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.