Alterando com segurança a configuração do kernel Linux programaticamente

8

Estou escrevendo um script que precisa alterar automaticamente várias opções de configuração do kernel do Linux com base em um arquivo de entrada.
A maneira mais fácil de fazer isso seria, naturalmente, editar o arquivo .config diretamente, mas isso é desencorajado e pode causar problemas.
Parece que não consigo encontrar uma maneira de fazer isso "do jeito certo".

"make help" não mostra uma maneira de alterar opções únicas, nem ./scripts/kconfig/conf --help. Este arquivo no kernel.org também não parece ter um jeito.
Até o Genkernel do Gentoo altera manualmente o arquivo .config.

Então, basicamente:
Existe uma maneira segura de alterar as opções de configuração do kernel programaticamente, completas com o rastreamento de dependências etc.?
O Kconfig pode ser executado manualmente para conseguir isso?

SharkWipf
fonte

Respostas:

3

O que eu faço é primeiro:

make defconfig

Em seguida, acrescente as alterações nas configurações a .configseguidas de:

make olddefconfig

Isso deve "consertar" quaisquer inconsistências introduzidas na configuração. YMMV, pois pode não corrigi-los da maneira que você espera.

DepressedDaniel
fonte
Obrigado pela sua resposta! Eu considerei fazer isso, mas como você disse, YMMV. Se houver duas opções conflitantes, não há como dizer qual delas será corrigida.
SharkWipf
@SharkWipf Bem, em qualquer caso, eu esperaria que o resultado fosse determinístico. Portanto, se o resultado não for o que você deseja, basta adicionar outra declaração desativando o que está em conflito e repetir esse processo até que funcione.
DepressedDaniel
É verdade, mas pode mexer com outras opções de maneiras que não posso verificar, e como eu finalmente quero colocar esse script no github, gostaria que fosse o mais estável e confiável possível. Geralmente, esse script será usado para modificar as configurações existentes do kernel feitas pelo usuário, em vez de gerar novas, por isso é difícil fazê-lo funcionar dessa maneira de maneira confiável.
SharkWipf
@SharkWipf Bem, parece que o que você está tentando alcançar exige uma espécie de IA;) A solução convencional é fornecer um padrão que funcione e permitir que as pessoas personalizem se ousarem.
DepressedDaniel
se eu quiser fazer isso manualmente manualmente, sim. Mas eu esperava que houvesse alguma maneira de usar o Kconfig para simular "marcar uma caixa" no menuconfig, porque parece que isso deve ser uma coisa. Basicamente, o que eu quero fazer é permitir que os usuários copiem os requisitos do kernel do wiki do Gentoo, resolvam isso para os valores corretos de configuração sempre que possível (fácil o suficiente) e atualizem a configuração de acordo (após uma revisão do usuário, é claro). Portanto, não há "padrões" neste caso.
SharkWipf
0

Eu iria para um patch do arquivo .config. Os passos que você precisa tomar para prepará-lo são

cp .config .config.bck
make menuconfig # Here change all that you need to fit your needs
diff -u .config.bck .config > myconfig.$(kern_vers).patch

Em seguida, no seu script, adicione esta linha

patch .config myconfig.$(kern_vers).patch
debuti
fonte