Quiero automatizar una acumulación de Linux pero con el tiempo llegar a un punto en el que se necesita para ejecutar lo que parece ser un paso muy Manual: make menuconfig
. ¿Esto parece sincronizar las configuraciones entre el SO y las configuraciones del núcleo?
cp git-tracked-config .config
make defconfig
make menuconfig # <- how to automate/script this?
make V=s
Básicamente, ¿cómo puedo eliminar la llamada a make menuconfig
un script de compilación?
Por otro lado, esto es en reacción a un error de compilación que parece suceder cuando ejecuto sin siquiera llamar a make menuconfig:
make[1]: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop.
Lo que parece ser que falta una regla en un archivo MAKE quizás porque el archivo MAKE NO existe o el archivo MAKE no se ha generado / transformado para contener esa regla, pero esa es una pregunta separada.
Podría haber una forma más inteligente de abordar esto en conjunto. ¿Hay otras configuraciones que no estoy rastreando pero que debería (por ejemplo, oldconfig)?
fuente
make olddefconfig
?Respuestas:
El sistema de compilación del kernel de Linux proporciona muchos objetivos de compilación, la mejor manera de conocerlo es probablemente hacer lo siguiente
make help
:Como dice jimmij en los comentarios, las partes interesantes están en los
oldconfig
objetivos relacionados.Personalmente, le recomendaría que lo haga
silentoldconfig
(si nada cambió en el.config
archivo oolddefconfig
si actualizó su.config
archivo con un nuevo núcleo.fuente
randconfig
Me sorprendió. ¿Presumiblemente usado para probar construcciones generando combinaciones poco probables?make randconfig
? (en el sitio web 'Ask Ubuntu').merge_config.sh
fragmentos de configuraciónLa sustitución de procesos no funciona desafortunadamente:
por: https://unix.stackexchange.com/a/164109/32558
merge_config.sh
es un front-end simple para elmake alldefconfig
objetivo.Cuando se realiza una compilación cruzada, se
ARCH
debe exportar cuando se ejecutamerge_config.sh
, por ejemplo:El archivo de salida combinado se puede especificar explícitamente con la
KCONFIG_CONFIG
variable de entorno; de lo contrario, solo sobrescribe.config
:Buildroot lo automatiza con
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES
: /programming/1414968/how-do-i-configure-the-linux-kernel-within-buildrootRelacionado: /programming/7505164/how-do-you-non-interactively-turn-on-features-in-a-linux-kernel-config-file
fuente
Tuve este mismo problema ya que quería actualizar mi núcleo CentOS y necesitaba hacerlo en varias máquinas. Supongamos aquí que mi nuevo árbol de kernel CentOS está en /linux-5.1 (estoy conectado a la cuenta raíz)
cd /linux-5.1
make menuconfig
y realizar sus cambios y guardarlos en.config
/linux-5.1/.config
archivo a tu servidor de desarrollo.config
el archivo desde el servidor de desarrollo de/linux-5.1/.config
la nueva máquina.Espero que esto ayude a alguien en la misma situación.
fuente