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