Linux内核配置:Kconfig

Linux内核源码中,差不多有300个内核子目录都包含了名为Kconfig的文件。这个文件用于配置其所在目录的源码的特性。Kconfig中的每个配置参数都有附带的帮助文本,配置子系统会解析Kconfig的内容,并提示用户做出配置选择。

配置工具(比如menuconfig)会读取各个子目录中的Kconfig文件,首先读取的是arch子目录中的Kconfig文件。它是在…/scripts/kconfig/Makefile中读取的,这个Makefile包含了与下列内容类似的相关条目:

# ===========================================================================

# Kernel configuration targets

# These targets are used from top-level makefile



PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config



ifdef KBUILD_KCONFIG

Kconfig := $(KBUILD_KCONFIG)

else

Kconfig := arch/$(SRCARCH)/Kconfig

endif



xconfig: $(obj)/qconf

        $< $(Kconfig)



gconfig: $(obj)/gconf

        $< $(Kconfig)



menuconfig: $(obj)/mconf

        $< $(Kconfig)

根据你选择的具体架构,menuconfig会读取该架构对应的Kconfig文件,并将其内容作为顶层配置定义。

Kconfig文件中包含了很多类似这样的指令行:

source “drivers/pci/Kconfig”

这条指令告诉配置编辑器(menuconfig),从内核源码树的其他位置读取另一个Kconfig文件。每种架构都包含很多这样的Kconfig文件,这些Kconfig组合起来成为一个完整的配置集合,当用户配置内核时,配置集合会以菜单的形式展现在用户面前。

每个Kconfig文件都可以随意指定处于源码树其他位置的Kconfig文件。配置工具(menuconfig)会递归读取所有这些链接在一起的Kconfig文件,并相应地构造出配置时所用的菜单结构。

你可能感兴趣的:(config)