make defconfig는 OpenWrt에서 어디에서 구성을 가져오나요?

make defconfig는 OpenWrt에서 어디에서 구성을 가져오나요?

Wi-Fi 장치를 사용하여 이미지를 컴파일하고 있습니다.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=y매우 달라졌을 것이다.CONFIG_TARGET_ar71xx_generic_YYY_Router=ymake 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 $@

$(srctree)/arch/$(SRCARCH)/Makefile예를 들어 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.in

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

이 파일에서 변수를 정의할 수도 있습니다.

관련 정보