Responda automaticamente aos padrões ao fazer 'make oldconfig' em uma árvore do kernel

36

Ao criar um novo kernel baseado em uma configuração anterior, existe uma maneira de automatizar o make oldconfigprocesso para que ele defina novas opções com seus valores padrão?

Edit: O que quero dizer é que, ao usar um .config (de /boot/config-*ou /proc/config.gz) em um kernel mais recente, o make oldconfigprocesso perguntará se você deseja ou não ativar opções que não estavam disponíveis no kernel antigo. Você pode responder Y / n / m ou pressionar Enter para aceitar o padrão. Gostaria de aceitar padrões automaticamente sem interação do usuário.

Jean-Francois Chevrette
fonte
@jscott Isso apenas "pressionaria enter" para a primeira pergunta, nem todas elas. Você pode usar o comando 'yes' para imprimir uma string de forma indiferente.
Laurent Parenteau

Respostas:

37

Use o comando:

yes "" | make oldconfig

O comando 'yes' gera repetidamente uma linha com toda a sequência especificada ou 'y' por padrão.

Portanto, você pode usá-lo para simplesmente "pressionar enter", o que resultará no uso do valor padrão do comando 'make oldconfig'.

Laurent Parenteau
fonte
Ahh, eu não sabia que o comando 'yes' poderia gerar qualquer string. Obrigado!
Jean-Francois Chevrette
3
Isso é fenomenal.
Ivan X
1
Resposta é uma idéia muito melhor serverfault.com/a/538150/18822
Evan Carroll
56
make olddefconfig

é o que você quer. Na ajuda ( make helpno diretório de origem do kernel)

olddefconfig - O mesmo que silentoldconfig, mas define novos símbolos para seu valor padrão

Fluxo
fonte
Eu tenho procurado algo assim por um tempo ... muito obrigado!
Jafar Kofahi
Qual versão do Linux chegou? Apenas curioso. Atualmente, estou lidando com uma versão antiga (3.0) e ela ainda não a possui.
Clacke
1
Essa deve ser a resposta correta.
Suprjami
0

Sim. Ele é armazenado em ".config" no nível superior do diretório de origem.

Além disso, se estiver usando o kernel de distribuição, algumas distribuições como o RedHat o armazenam em / boot / config - $ (uname -r). (versão do kernel) [1]

Por fim, se compilado no kernel em execução, ele estará disponível em /proc/config.gz. Eu esqueço que versão introduziu esta opção.

[1] Estas opções:

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y 

Editar

Confira /usr/src/linux/kernel/Documentation/kbuild/kconfig.txt (ou caminho apropriado). Você pode usar algumas de suas recomendações para criar um script para uma solução. Eu usaria uma combinação de scripts e textutils para realizar o que você descreve.

Editar 2

Como uma observação adicional, essa é uma má ideia. E se o suporte a hardware opcional exclusivo do seu ambiente for alterado, mas não for o padrão? E se ocorrer uma mudança negativa? Isso realmente é algo que deve ser interativo. Você pode fazer a configuração e automatizar o resto.

"make silentoldconfig" é um pouco menos detalhado, o que pode ser útil. Ainda é interativo.

Warner
fonte
Isso não foi o que eu quis dizer. Eu adicionei mais detalhes à minha pergunta para explicar o que eu quero alcançar.
Jean-Francois Chevrette
0

make silentoldconfig


fonte
2
faça silentoldconfig ainda é interativo, é menos detalhado
Laurent Parenteau