linux内核配置netfilter,linux-将内核配置变量映射到模块

How do I find the full set of kconfig options required to yield a kernel module?

通常,确定用于构建内核模块的选项集是复杂的过程.下面描述的步骤可以指导该过程.

1.查找一个Makefile

找到一个构建内核模块的Makefile.该文件位于生成.ko文件的同一目录中;该目录通常与模块源文件的目录重合.此Makefile包含用于构建模块的一行:

obj-${CONFIG_...} := .o

例:

该行构建了一个模块xt_conntrack.ko

obj-$(CONFIG_NETFILTER_XT_MATCH_CONNTRACK) += xt_conntrack.o

在文件net / netfilter / Makefile中.

2.确定最终选择

配置选项可能会以多种方式影响构建模块.

>该选项直接用于行中,产生了模块:

obj-${CONFIG_X} := .o

意味着应该为要构建的模块设置选项CONFIG_X.

>给定的Makefile有条件地包含在上一个文件中:

obj-${CONFIG_Y} :=

>模块产生的行由“ if”子句保护:

ifeq ($(CONFIG_F),y)

obj-m := .o

endif

另外,警卫队可以保护上层Makefile的包含:

ifeq ($(CONFIG_F),y)

obj-m :=

endif

例:

模块xt_conntrack取决于CONFIG_NETFILTER_XT_MATCH_CONNTRACK选项中的规则1.

它还取决于CONFIG_NETFILTER选项的规则2,因为外部net / Makefile通过以下方式包含net / netfilter / Makefile:

obj-$(CONFIG_NETFILTER) += netfilter/

3.查找选项的定义并确定其可用性

注意:这是最复杂的步骤,主要是因为该选项的可用性以其他选项表示.建议为此使用现成的工具.例如,make menuconfig工具可能会搜索选项并显示其定义.

每个配置选项都在一个Kconfig文件中定义.

定义确定:

>选件的可用性(可以使用选件时),

>选项的可能值(y / n-布尔值,y / m / n-三态等),

>该选项是否可以由用户设置.

例:

选项NETFILTER_XT_MATCH_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_CONNTRACK选项时,该选项才可用(可以设置).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值