一般来说,我如何知道构建一些.ko文件需要哪些内核配置选项?
例如,我需要'xt_conntrack.ko' . 哪些资源让我知道在我的内核配置中启用 CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
是否必要或甚至足以导致我的内置.ko文件?如何找到生成内核模块所需的全套kconfig选项?
http://cateee.net/lkddb/web-lkddb/NETFILTER_XT_MATCH_CONNTRACK.html表示它将构建"xt_conntrack",但是当它 =m
及其所有依赖项时,我没有看到它 . 另一方面,这里没有可见的kconfig标志集(http://modules.libres.ch/browse/linux/v3.0/x86_64/xt_conntrack/)
1 回答
通常,确定用于构建内核模块的选项集是复杂的过程 . 下面描述的步骤可以指导该过程 .
1.查找Makefile
找到构建内核模块的
Makefile
. 该文件位于同一目录中,其中生成.ko
文件;此目录通常与模块源文件的目录一致 . 这个Makefile
包含一个构建模块的行:Example :
模块
xt_conntrack.ko
由该线构建在文件
net/netfilter/Makefile
.2.确定最终选项
配置选项如何影响构建模块有多种方法 .
表示应为要构建的模块设置选项
CONFIG_X
.Makefile
有条件地包括在上面一个:或者,警卫可以保护
Makefile
免受上层人员的侵害:Example :
模块
xt_conntrack
取决于CONFIG_NETFILTER_XT_MATCH_CONNTRACK
选项中的规则1 .它也取决于
CONFIG_NETFILTER
选项的规则2,因为外部net/Makefile
包括net/netfilter/Makefile
via3.查找选项的定义并确定其可用性
Note: 这是最复杂的一步,主要是因为该选项的可用性以其他选项表示 . 建议使用现成的工具 . 例如,
make menuconfig
工具可以搜索选项并显示其定义 .每个配置选项都在
Kconfig
文件中定义 .定义确定:
选项的可用性(当可以使用该选项时),
选项的可能值(
y
/n
- 布尔值,y
/m
/n
- 三态等),该选项是否可由用户设置 .
Example :
选项
NETFILTER_XT_MATCH_CONNTRACK
在net/netfilter/Kconfig
中定义为也就是说,只有在设置了
NF_CONNTRACK
选项时,该选项才可用(可以设置) .Kconfig
文件格式的文档位于Documentation/kbuild/kconfig-language.txt .