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.


@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'.


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


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.


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


2
faça silentoldconfig ainda é interativo, é menos detalhado
— Laurent Parenteau
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.