Como configurar de forma não interativa a compilação do kernel do Linux? [duplicado]

4

Existe algum método para configurar o kernel do Linux de tal forma (apenas um exemplo):

make config CONFIG_OPTION=y && make config CONFIG_OPTION1=no CONFIG_OPTION3=64 CONFIG_OPTION4=/path/

e todas as dependências e alternativas dessas opções de configuração serão definidas automaticamente no modo não interativo.

    

3 respostas

3

Opção I:

A ferramenta qconfig parece servir a esse propósito, embora dependa de qual interface você prefere. É necessário um arquivo de entrada com o CONFIG_ directives que você deseja alterar e os altera. Eu não tentei ainda.

Eu não tentei ainda, mas não parece que tem uma interface via argumentos de linha de comando, ao longo das linhas do que você descreveu.

Opção II:

sed -i 's:CONFIG_X=y:# CONFIG_X is not set:g' .config

É estranho que a configuração não interativa não pareça chamar atenção. Certamente não é aplicável em geral, mas quando você precisa apenas ativar alguns switches (com poucas ou nenhuma dependência), por exemplo, um make, então seria muito útil, mais fácil de usar do que diretamente usando sed , e melhor do que manter .config-with-X , .config-without-X .

    
por 28.09.2012 / 22:08
1

A maneira mais simples seria criar manualmente o arquivo .config com as opções necessárias. Isso exigiria, é claro, all das opções de configuração a serem fornecidas, portanto, seria aplicável no caso de pequenas alterações em um arquivo .config existente criado interativamente.

Se você está perguntando sobre como usar o atual .config , mas apenas alterando alguns sinalizadores via make , então eu não sei. Mas você pode tentar editar o arquivo .config através de um script e, em seguida, executar make .

    
por 01.09.2011 / 13:09
0

Resposta movida para: Como fazer o script menuconfig para automatizar a configuração de compilação do kernel do Linux?

Fragmentos de configuração

scripts/kconfig/merge_config.sh

Uso:

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

A substituição de processos não não funciona, infelizmente:

./scripts/kconfig/merge_config.sh arch/x86/configs/x86_64_defconfig \
    <( printf 'CONFIG_DEBUG_INFO=y\nCONFIG_GDB_SCRIPTS=y\n' ) 

devido a: link

merge_config.sh é um front-end simples para a meta make alldefconfig .

Ao fazer a compilação cruzada, ARCH deve ser exportado quando você executar merge_config.sh , por exemplo:

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make defconfig
./scripts/kconfig/merge_config.sh .config .config-fragment

O Buildroot automatiza-o com BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES : link

Relacionado: link

    
por 11.09.2016 / 23:27