Cambiar de forma segura la configuración del kernel de Linux mediante programación

8

Estoy escribiendo un script que tiene que cambiar automáticamente una serie de opciones de configuración del kernel de Linux en función de un archivo de entrada.
La forma más fácil de hacerlo sería, por supuesto, editar el archivo .config directamente, pero esto se desaconseja y puede causar problemas.
Sin embargo, parece que no puedo encontrar una manera de hacer esto "de la manera correcta".

"hacer ayuda" no muestra una manera de cambiar las opciones individuales, ni tampoco ./scripts/kconfig/conf --help. Este archivo en kernel.org tampoco parece tener forma.
Incluso Genkernel de Gentoo cambia manualmente el archivo .config.

Entonces, básicamente:
¿Hay una manera segura de cambiar las opciones de configuración del núcleo mediante programación, completa con el seguimiento de dependencias, etc.?
¿Se puede ejecutar Kconfig manualmente para lograr esto?

SharkWipf
fuente

Respuestas:

3

Lo que hago es primero:

make defconfig

Luego, agregue los cambios de configuración .configseguidos de:

make olddefconfig

Esto debería "arreglar" cualquier inconsistencia introducida en la configuración. YMMV ya que puede que no los arregle de la manera que espera.

Daniel deprimido
fuente
¡Gracias por su respuesta! He considerado hacer eso, pero como dijiste, YMMV. Si hay 2 opciones en conflicto, no se sabe cuál solucionará.
SharkWipf
@SharkWipf Bueno, en cualquier caso, esperaría que el resultado sea determinista. Entonces, si el resultado no es lo que desea, simplemente agregue otra declaración que apague lo que está en conflicto y repita este proceso hasta que funcione.
Deprimido Daniel
Es cierto, pero podría interferir con otras opciones de formas que no puedo verificar, y como eventualmente quiero poner este script en github, me gustaría que sea lo más estable y confiable posible. En general, este script se utilizará para modificar las configuraciones de kernel existentes y creadas por el usuario, en lugar de generar otras nuevas, por lo que es difícil que funcione de manera confiable de esta manera.
SharkWipf el
@SharkWipf Bueno, parece que lo que estás tratando de lograr requiere una especie de IA;) La solución convencional es proporcionar un valor predeterminado que funcione y que las personas puedan personalizar si se atreven.
DepressedDaniel
si quiero hacerlo de forma completamente manual, sí. Pero esperaba que hubiera alguna forma de usar Kconfig para simular "marcar una casilla" en menuconfig, porque parece que eso debería ser algo. Básicamente, lo que quiero hacer es permitir a los usuarios copiar los requisitos del núcleo de la wiki de Gentoo, resolverlos con los valores de configuración correctos siempre que sea posible (lo suficientemente fácil) y luego actualizar la configuración en consecuencia (después de una revisión del usuario, por supuesto). Por lo tanto, no hay "valores predeterminados" en este caso.
SharkWipf
0

Iría por un parche del archivo .config. Los pasos que debes seguir para prepararlo son

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

Luego, en su script agregue esta línea

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