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

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

根据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

对此大家有什么解释吗?

答案1

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

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

如果depmod -a安装模块后尚未运行nvidia,则不modinfo知道。这不会阻止任何人加载模块,insmod并且lsmod如果加载则显示得很好。

答案2

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

相关内容