configuración guionizada de un kernel de Linux

8

Dada una lista de características del kernel, quiero crear una configuración mínima de Linux que soporte todas las características dadas (y las dependencias correspondientes) pero nada más.

¿Hay alguna manera de crear un allnoconfig y una herramienta para habilitar funciones una por una?

(Podría editar el .configarchivo, pero esto no obtendría las dependencias correctas. Podría usarlo make *config, pero que yo sepa, funcionan solo de forma interactiva o crean alguna configuración predeterminada).

michas
fuente
Aquí hay un script que automatiza la configuración del kernel de Linux con resolución de dependencia: Kernel Expect (kernelexpect)
T. Perkins

Respuestas:

1

Si necesita hacerlo de forma no interactiva, puede usar make oldconfig o make olddefconfig. make * config arreglará las dependencias y esas no son tan detalladas como, digamos menuconfig. (De lo contrario, menuconfig está perfectamente bien para habilitar funciones una por una, ¡incluso incluye los textos de ayuda!)

make oldconfig le pedirá las opciones de configuración 'nuevas', por lo que deberá insertar comentarios como este para las opciones deshabilitadas si desea trabajar de forma no interactiva:

# CONFIG_KERNEL_GZIP is not set

make olddefconfig por otro lado no parece preguntar, pero usa un valor predeterminado. También hay silentoldconfig, pero también pregunta en algunos casos, por lo que no es tan silencioso.

de hacer ayuda:

oldconfig       - Update current config utilising a provided .config as base
silentoldconfig - Same as oldconfig, but quietly, additionally update deps
olddefconfig    - Same as silentoldconfig but sets new symbols to their default value

Descargo de responsabilidad: solo probé la prueba trivial de eliminar las opciones para algunas bibliotecas que sé que eran necesarias. Fueron agregados nuevamente por olddefconfig y oldconfig. No sé cómo se aplica esto a hacer una configuración más grande.

En cualquier caso, supongo que ya consideró usar make localmodconfig o algo así antes de comenzar esto. No he intentado hacer una configuración mínima en años, pero parece recordar que hubo algunas formas bastante obvias de crear núcleos totalmente inutilizables. :)

ilkkachu
fuente
"olddefconfig" probablemente también funcionaría bien. ¿Hay alguna manera de obtener las opciones de configuración predeterminadas de un archivo defconfig? (En ese caso, el archivo defconfig proporcionaría una base adecuada y se podría establecer una opción personalizada mínima en .config.)
michas
-1

Desde el kernel 2.6.29 hay un script que puedes encontrar en
/kernel_extracted_dir/scripts/config

Por ejemplo

/kernel_extracted_dir/scripts/config --set-val CONFIG_LOG_BUF_SHIFT 14
/kernel_extracted_dir/scripts/config --enable CONFIG_PRINTK_TIME

(Para dar crédito donde es debido, tomé el ejemplo de este blog )

Tiene las siguientes opciones (copiadas de la ayuda)

--enable|-e option   Enable option
--disable|-d option  Disable option
--module|-m option   Turn option into a module
--set-str option string
                     Set option to "string"
--set-val option value
                     Set option to value
--undefine|-u option Undefine option
--state|-s option    Print state of option (n,y,m,undef)

--enable-after|-E beforeopt option
                         Enable option directly after other option
--disable-after|-D beforeopt option
                         Disable option directly after other option
--module-after|-M beforeopt option
                         Turn option into module directly after other option commands can be repeated multiple times

options:
    --file config-file   .config file to change (default .config)
    --keep-case|-k       Keep next symbols' case (dont' upper-case it)
Hristo Mohamed
fuente
1
Esto parece genial a primera vista. Desafortunadamente, parece que no le importan las dependencias. :(
michas