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做内核配置,是不生效的。
应用侧包配置是在哪个文件中修改的?
直接在.config文件中修改。
OpenWRT使用makemenuconfig管理用户侧软件包,而makekernel_menuconfig用于内核配置。内核配置文件由target/linux/generic和特定板子目录如ramips/mt7621的配置合并,通过kconfig.pl脚本完成。修改后的配置保存在对应板子目录下,并影响最终的编译内核配置文件(.config)。在内核目录直接运行makemenuconfig不会生效。


被折叠的 条评论
为什么被折叠?



