openwrt系统通过make menuconfig来实现对用户侧应包的管理,使用make kernel_menuconfig命令来对内核进行配置,该命令和内核目录下的make menuconfig ARCH=xxx有什么区别呢?
我们尝试使用make kernel_menuconfig来修改一个内核选项:
通过git status命令查看如下文件被修改:
也就是说make kernel_menuconfig的修改是保存在target/linux/ramips/mt7621目录下,根据内核版本号保存的。
内核的配置文件分为两部分,一部分是通过的内核配置项,一部分是板子相关的配置项,板子相关的配置项是由顶层目录中的.config中的CONFIG_TARGET_BOARD来决定的。
对于通用linux选项是放在target/linux/generic目录下的,最终内核使用的配置文件是这两个文件合并出来的文件。
具体合并代码是在kconfig.pl中完成的,简单表示如下:
$(TOPDIR)/scripts/kconfig.pl + $(TOPDIR)/target/linux/generic/config-3.10 $(TOPDIR)/target/linux/ramips/mt7621/config-3.10 > $(TOPDIR)/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/linux-3.10.14/.config
$(TOPDIR)/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/linux-3.10.14/.config也是最终编译内核使用的配置文件。
上述两个内核配置文件的源码目录为:
target/linux/ramips/mt7621/config-3.10
target/linux/generic/config-3.10
如果在内核目录下执行make menuconfig做内核配置,是不生效的。