Linux内核的配置系统是一个复杂的框架,主要由以下几个核心部分组成:
Kconfig文件(分布在源码树的各目录中)。menuconfig、config、choice 等关键字定义配置菜单。depends on)、可见性(visible if)、默认值(default)等逻辑。make menuconfig 时的选项结构)。conf:解析 Kconfig 并生成配置头文件(.config)。mconf:生成基于 ncurses 的文本界面(make menuconfig)。nconf:另一种文本界面工具。qconf:基于 Qt 的图形界面(make xconfig)。gconf:基于 GTK 的图形界面(make gconfig)。Kconfig 文件,生成 .config(用户选择的配置)。autoconf.h(C 头文件,供代码条件编译使用)。CONFIG_FOO=y 或 CONFIG_BAR=m)。make oldconfig 基于旧配置更新。include 指令加载 .config。y/m/n)决定编译哪些文件或模块。autoconf.h 供代码条件编译(#ifdef CONFIG_FOO)。.config 转换为 C 头文件,供内核代码使用。include/generated/autoconf.h。c
#define CONFIG_SMP 1
#define CONFIG_MODULES 1make menuconfig:文本界面配置。make defconfig:使用默认配置。make savedefconfig:生成最小化的 defconfig。make oldconfig:基于已有配置更新。Kconfig文件 → 配置工具链 → .config → autoconf.h → 影响内核编译
↑
(用户通过menuconfig等交互)
这套系统实现了从配置定义到代码编译的自动化,是Linux内核高度模块化的核心支撑之一。