Linux 커널 빌드를 비대화형으로 구성하는 방법은 무엇입니까? [복사]

Linux 커널 빌드를 비대화형으로 구성하는 방법은 무엇입니까? [복사]

이런 방식으로 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.shTarget의 간단한 프런트 엔드입니다 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

관련된:https://stackoverflow.com/questions/7505164/how-do-you-non-interactively-turn-on-features-in-a-linux-kernel-config-file

관련 정보