如何知道哪个CONFIG_XXX对应一个模块?

问题描述 投票:0回答:2

是否有命令或某些工具可以帮助您获得相应的CONFIG_XXX选项以启用模块。例如,如果我想启用模块nvme,哪个CONFIG_XXX应该是y或m?我知道有些文件可能会说明nvme的配置。但是我想知道是否有命令或工具可以帮助您仅在键入命令后才能获得CONFIG——XXX。

谢谢。

linux-kernel config kernel-module
2个回答
0
投票

您可以在交互式内核配置菜单中搜索选项,但是您必须首先通过make menuconfig构建菜单,然后键入/,然后输入您要查找的术语。搜索结果中的每个Symbol:后面都带有不带CONFIG_前缀的选项名称。它还显示选项在菜单树中的位置。

某些选项处于三态:y-该功能将内置到内核映像中,m-该功能应驻留在可加载模块中,n-该功能已禁用。

您需要添加CONFIG_BLK_DEV_NVME=m(编辑.config或使用make menuconfig)以启用对nvmeNnM块设备作为可装载模块的支持。


0
投票

如果我想启用模块nvme,哪个CONFIG_XXX应该是y或m?

据我所知,没有文档或单一用途的命令可以报告构建模块的特定配置符号。但是,实际上指定所讨论模块构建的Makefile是此信息的唯一权威来源。通常,相关的Makefile将作为源模块位于子目录(或父目录)中。

如果不确定源模块在哪里,则可以在内核源中的所有Makefile文件中搜索。o对象文件的条件构建:

$ find . -name Makefile | xargs grep nvme.o
./drivers/nvme/host/Makefile:obj-$(CONFIG_BLK_DEV_NVME)     += nvme.o
... <irrelevant search results>
$ 

所以答案将是CONFIG_BLK_DEV_NVME。请注意,具有相关Makefile的子目录也将具有Kconfig文件,该文件描述您刚刚标识的配置符号。


而不是手动编辑。config文件,请使用make menuconfig命令。使用menuconfig可确保您的配置将满足所有依赖性并正确触发所有自动选择。

您可以使用搜索功能(只需输入斜杠字符,/和配置名称)即可检索帮助文本,以指导您找到配置提示的位置。

CONFIG_BLK_DEV_NVME的帮助文本和状态看起来像:

 Symbol: BLK_DEV_NVME [=n]     
 Type  : tristate          
 Prompt: NVM Express block device    
   Location:                   
     -> Device Drivers            
 (1)   -> NVME Support         
   Defined at drivers/nvme/host/Kconfig:4         
   Depends on: PCI [=n] && BLOCK [=y]        
   Selects: NVME_CORE [=n]       
   Selected by [n]:              
   - NVM [=n] && BLOCK [=y] && PCI [=n]    

提到的每个配置条目的当前配置状态/状态显示在方括号和等号中。

Depends on:行表示必须同时启用CONFIG_PCI和CONFIG_BLOCK才能使CONFIG_BLK_DEV_NVME提示甚至可见。您可能必须使用搜索功能才能将这些其他CONFIG_xxx名称转换为它们的菜单提示符和位置。

Selects:行表示如果选择此配置项目,将自动启用的其他配置条目。

Selected by [x]:行表示可以自动启用此配置项的其他配置条目。在这种情况下,逻辑表达式表示当启用其他三个配置条目时,也会自动启用此配置。

© www.soinside.com 2019 - 2024. All rights reserved.