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

Joh*_*mBF 11 linux kernel kernel-modules

根据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
Run Code Online (Sandbox Code Playgroud)

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

ERROR: modinfo: could not find module nvidia

大家对此有什么解释吗?

Bat*_*hyX 11

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

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

如果depmod -a安装nvidia模块后还没有运行,modinfo则不知道它。这不会阻止任何人加载模块,insmod并且lsmod在加载时会显示它。