将 lsmod 模块名称与内核配置菜单条目绑定

将 lsmod 模块名称与内核配置菜单条目绑定

假设我有一个名为“mptsas”的模块。我怎样才能找到哪个内核配置菜单项(在 /usr/src/linux 中的 make menuconfig)对应于该模块?

我所说的“对应”是指哪个菜单项将适当的模块编译到内核中。

在此输入图像描述

//编辑:它工作得非常好: 在此输入图像描述

答案1

没有记录关联。您需要探索内核源代码中的 makefile。你会发现像这样的行

obj-$(CONFIG_FUSION_SAS)        += mptbase.o mptscsih.o mptsas.o

这意味着:

  • 如果CONFIG_FUSION_SASy,则驱动程序mptbasemptscsihmptsas被编译到内核中。
  • 如果CONFIG_FUSION_SASm,则驱动程序mptbasemptscsihmptsas被编译为模块。
  • 如果CONFIG_FUSION_SASn,则驱动程序mptbasemptscsihmptsas未编译。

grep -R --include=Makefile '\bNAME\.o\b'大多数情况下,来自内核源代码树顶部的命令将返回相关的 makefile 行。

答案2

请注意,该lsmod命令列出了模块名称,不是模块的文件名。他们可能有所不同。例如,aesni_intel模块位于模块文件中aesni-intel(连字符,而不是下划线);因此,您必须搜索aesni-intel才能找到相应的内核配置标记条目:

$ grep -R --include=Makefile '\baesni-intel\.o\b'
arch/x86/crypto/Makefile:obj-$(CONFIG_CRYPTO_AES_NI_INTEL) += aesni-intel.o

modinfo编辑:在这种情况下,显示模块的命令可能很有用文件名:

# modinfo aesni_intel | grep filename
filename:       /lib/modules/5.10.162/kernel/arch/x86/crypto/aesni-intel.ko

相关内容