make defconfig 在 OpenWrt 中从哪里获取其配置?

make defconfig 在 OpenWrt 中从哪里获取其配置?

我正在使用 wifi 设备编译图像OpenWrt。按照说明,我将一个简单的.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=yCONFIG_TARGET_ar71xx_generic_YYY_Router=y话,结果make defconfig一定会有很大不同。

答案1

OpenWrt 将配置存储在目录中

target/linux/<target system>/<subtarget>/profiles

您可以使用命令设置目标系统和子目标make menuconfig制作菜单配置

就我而言:

目标系统=ar71xx

子目标 =generic

所以目录是:

target/linux/ar71xx/generic/profiles

在这个目录中,你会发现一些预定义的配置文件,存储在<profile>.mk文件中。这些文件定义了选择目标配置文件时将默认使用哪些包。

答案2

配置文件一般存放在该目录下

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包含架构默认配置的文件名。

答案3

所有CONFIG_变量均来自openwrt/config.在那里您可以看到openwrt/.config文件中的所有变量。例如CONFIG_DEBUG位于openwrt/config/Config-build.inas

config DEBUG
    bool
    prompt "Compile packages with debugging info"
    default n
    help
      Adds -g3 to the CFLAGS.

您也可以在该文件中定义变量。

相关内容