Linux 将内核配置变量映射到模块
通常,我如何知道构建一些.ko文件需要哪些内核配置选项 例如,我需要“xt_conntrack.ko”。有哪些资源让我知道在我的内核配置中启用Linux 将内核配置变量映射到模块,linux,linux-kernel,Linux,Linux Kernel,通常,我如何知道构建一些.ko文件需要哪些内核配置选项 例如,我需要“xt_conntrack.ko”。有哪些资源让我知道在我的内核配置中启用CONFIG\u NETFILTER\u XT\u MATCH\u CONNTRACK=m是否必要,甚至足以生成我的builded.ko文件?如何找到生成内核模块所需的全套kconfig选项 指示它将生成“xt_conntrack”,但当我=m它及其所有依赖项时,我看不到它。 另一方面,这里没有可见的kconfig标志集() 如何找到生成内核模块所需的全套
CONFIG\u NETFILTER\u XT\u MATCH\u CONNTRACK=m
是否必要,甚至足以生成我的builded.ko文件?如何找到生成内核模块所需的全套kconfig选项
指示它将生成“xt_conntrack”,但当我=m
它及其所有依赖项时,我看不到它。
另一方面,这里没有可见的kconfig标志集()
如何找到生成内核模块所需的全套kconfig选项
通常,确定构建内核模块的选项集是一个复杂的过程。下面描述的步骤可以指导该过程
1.查找生成文件
查找构建内核模块的Makefile
。该文件位于同一目录中,其中生成了.ko
文件;该目录通常与模块源文件的目录一致。此Makefile
包含一行代码,用于构建模块:
obj-${CONFIG_...} := <module_name>.o
在文件net/netfilter/Makefile
中
2.确定最终选项
在构建模块时,配置选项可能会以多种方式产生影响
obj-${CONFIG_X} := <module_name>.o
xt\u conntrack
取决于CONFIG\u NETFILTER\u xt\u MATCH\u conntrack
选项中的规则1
它还取决于CONFIG\u NETFILTER
选项中的规则2,因为外部net/Makefile
包括net/NETFILTER/Makefile
通过
obj-$(CONFIG_NETFILTER) += netfilter/
3.查找选项的定义并确定其可用性
注意:这是最复杂的步骤,主要是因为该选项的可用性用其他选项表示。为此,建议使用现成的工具。例如,makemenuconfig
工具可以搜索选项并显示它们的定义
每个配置选项都在一个Kconfig
文件中定义
定义决定:
- 选项的可用性(可使用选项时)
- 选项的可能值(
/y
-布尔,n
/y
/m
-三态等)n
- 该选项是否可以由用户设置
NETFILTER\u XT\u MATCH\u CONNTRACK
在net/NETFILTER/Kconfig
中定义为
config NETFILTER_XT_MATCH_CONNTRACK
tristate '"conntrack" connection tracking match support'
depends on NF_CONNTRACK
default m if NETFILTER_ADVANCED=n
help
This is a general conntrack match module, a superset of the state match.
It allows matching on additional conntrack information, which is
useful in complex configurations, such as NAT gateways with multiple
internet links or tunnels.
To compile it as a module, choose M here. If unsure, say N.
也就是说,只有当设置了NF\u CONNTRACK
选项时,该选项才可用(可以设置)
有关Kconfig
文件格式的文档位于。浏览make nconfig中的符号可以更容易地获取,但需要手动操作。
ifeq ($(CONFIG_F),y)
obj-m := <module_name>.o
endif
ifeq ($(CONFIG_F),y)
obj-m := <dir>/
endif
obj-$(CONFIG_NETFILTER) += netfilter/
config NETFILTER_XT_MATCH_CONNTRACK
tristate '"conntrack" connection tracking match support'
depends on NF_CONNTRACK
default m if NETFILTER_ADVANCED=n
help
This is a general conntrack match module, a superset of the state match.
It allows matching on additional conntrack information, which is
useful in complex configurations, such as NAT gateways with multiple
internet links or tunnels.
To compile it as a module, choose M here. If unsure, say N.