Kernel
在 OpenWrt 中 make defconfig 從哪裡獲得它的配置?
我正在使用OpenWrt為 wifi 設備編譯圖像。按照說明,我將一個簡單的
.config
文件複製到 TOP-DIR。CONFIG_TARGET_ar71xx=y CONFIG_TARGET_ar71xx_generic=y CONFIG_TARGET_ar71xx_generic_XXX_OpenWrt_Router=y
然後執行命令
make menuconfig
。該命令的結果是.config file now having default configuration.
但是,我不知道所有新配置的來源。如果我只是改變
CONFIG_TARGET_ar71xx_generic_XXX_Router=y
,CONFIG_TARGET_ar71xx_generic_YYY_Router=y
那麼結果make defconfig
肯定會大不相同。
OpenWrt 將配置儲存在目錄中
target/linux/<target system>/<subtarget>/profiles
您可以使用命令設置目標系統和子目標
make menuconfig
:就我而言:
目標系統 =
ar71xx
子目標 =
generic
所以目錄將是:
target/linux/ar71xx/generic/profiles
在這個目錄中,你會發現一些預定義的配置文件,儲存在
<profile>.mk
文件中。這些文件定義了在選擇目標配置文件時將使用哪些包作為預設包。
配置通常儲存在目錄中
arch/$(ARCH)/configs
所以預設
x86
配置是arch/x86/configs/i386_defconfig
預設
x86_64
配置是arch/x86/configs/x86_64_defconfig
其中所有路徑都相對於 linux src 根目錄。
要查找任何拱門的任何預設配置,您可以舉例頂層
Makefile
並找到include $(srctree)/arch/$(SRCARCH)/Makefile export KBUILD_DEFCONFIG KBUILD_KCONFIG config: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux include/config $(Q)$(MAKE) $(build)=scripts/kconfig $@
並通過檢查 Makefile
$(srctree)/arch/$(SRCARCH)/Makefile
,例如,arch/x86/Makefile
您會發現:ifeq ($(ARCH),x86) ifeq ($(shell uname -m),x86_64) KBUILD_DEFCONFIG := x86_64_defconfig else KBUILD_DEFCONFIG := i386_defconfig endif else KBUILD_DEFCONFIG := $(ARCH)_defconfig endif
其中變數的最終結果
KBUILD_DEFCONFIG
包含架構的預設配置的文件名。