이런 방식으로 Linux 커널을 구성할 수 있는 방법이 있습니까(단지 예):
make config CONFIG_OPTION=y && make config CONFIG_OPTION1=no CONFIG_OPTION3=64 CONFIG_OPTION4=/path/
그리고 이러한 구성 옵션에 대한 모든 종속성 및 재정의는 비대화형 모드에서 자동으로 설정됩니다.
답변1
옵션 1:
이것qconfig선호하는 인터페이스에 따라 다르지만 도구가 트릭을 수행하는 것 같습니다. CONFIG_ directives
원하는 변경 사항이 포함된 입력 파일을 가져온 다음 이를 변경합니다. 나는 아직 그것을 시도하지 않았습니다.
아직 시도하지는 않았지만 설명하신 대로 명령줄 인수를 통한 인터페이스가 없는 것 같습니다.
옵션 2:
sed -i 's:CONFIG_X=y:# CONFIG_X is not set:g' .config
이상하게도 비대화형 구성은 전혀 관심을 끌지 못하는 것 같습니다. 확실히 일반적인 경우에는 적합하지 않지만 make 대상과 같이 몇 개의 스위치만 전환하면 되는 경우(종속성이 거의 없거나 전혀 없는 경우) 직접 사용하는 것보다 매우 유용하고 사용자 친화적일 것입니다 sed
. .config-with-X
, 보다 유지하는 것이 좋습니다 .config-without-X
.
답변2
가장 쉬운 방법은 .config
필수 옵션을 사용하여 파일을 수동으로 빌드하는 것입니다. 물론 이것은 필요합니다모두구성 옵션이 제공되므로 기존 대화형으로 생성된 파일을 .config
약간 변경하는 데 적합합니다.
현재 플래그를 사용하는 것에 대해 질문하고 있지만 .config
일부 플래그를 변경해야만 하는 make
경우에는 모르겠습니다. 하지만 .config
스크립트를 통해 파일을 편집한 다음 make
.
답변3
답변이 다음으로 이동되었습니다.Linux 커널 빌드 구성을 자동화하기 위해 make menuconfig 스크립트를 작성하는 방법은 무엇입니까?
구성 조각
scripts/kconfig/merge_config.sh
용법:
git checkout v4.9
make x86_64_defconfig
grep -E 'CONFIG_(DEBUG_INFO|GDB_SCRIPTS)[= ]' .config
# # CONFIG_DEBUG_INFO is not set
# GDB_SCRIPTS depends on CONFIG_DEBUG_INFO in lib/Kconfig.debug
cat <<EOF >.config-fragment
CONFIG_DEBUG_INFO=y
CONFIG_GDB_SCRIPTS=y
EOF
# Order is important here. Must be first base config, then fragment.
./scripts/kconfig/merge_config.sh .config .config-fragment
grep -E 'CONFIG_(DEBUG_INFO|GDB_SCRIPTS)[= ]' .config
# CONFIG_DEBUG_INFO=y
# CONFIG_GDB_SCRIPTS=y
프로세스 교체는 실제로아니요불행하게도 작동 중:
./scripts/kconfig/merge_config.sh arch/x86/configs/x86_64_defconfig \
<( printf 'CONFIG_DEBUG_INFO=y\nCONFIG_GDB_SCRIPTS=y\n' )
왜냐하면:https://unix.stackexchange.com/a/164109/32558
merge_config.sh
Target의 간단한 프런트 엔드입니다 make alldefconfig
.
크로스 컴파일 시 ARCH
런타임을 내보내야 합니다 merge_config.sh
. 예를 들면 다음과 같습니다.
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make defconfig
./scripts/kconfig/merge_config.sh .config .config-fragment
Buildroot는 자동화를 위해 다음 명령을 사용합니다 BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES
.https://stackoverflow.com/questions/1414968/how-do-i-configure-the-linux-kernel-within-buildroot