假设我有一个名为“mptsas”的模块。我怎样才能找到哪个内核配置菜单项(在 /usr/src/linux 中的 make menuconfig)对应于该模块?
我所说的“对应”是指哪个菜单项将适当的模块编译到内核中。
//编辑:它工作得非常好:
答案1
没有记录关联。您需要探索内核源代码中的 makefile。你会发现像这样的行
obj-$(CONFIG_FUSION_SAS) += mptbase.o mptscsih.o mptsas.o
这意味着:
- 如果
CONFIG_FUSION_SAS
是y
,则驱动程序mptbase
、mptscsih
和mptsas
被编译到内核中。 - 如果
CONFIG_FUSION_SAS
是m
,则驱动程序mptbase
、mptscsih
和mptsas
被编译为模块。 - 如果
CONFIG_FUSION_SAS
是n
,则驱动程序mptbase
、mptscsih
和mptsas
未编译。
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