linux - puddletag - kid3
¿Cómo acelerar la compilación del kernel de Linux? (8)
Tengo Core i5 con 8gb de RAM. Tengo VMware workstation 10.0.1 instalado en mi máquina. He instalado Fedora 20 Desktop Edition en VMware como SO huésped.
Estoy trabajando en el código fuente del kernel de Linux v 3.14.1. Estoy desarrollando un programador de E / S para el kernel de Linux. Después de cualquier modificación en el código cada vez que toma alrededor de 1 hora y 30 minutos compilar e instalar todo el código del núcleo para ver los cambios.
Comandos de compilación e instalación: make menuconfig
, make
, make modules
, make modules_install
, make install
Entonces, mi pregunta ¿es posible reducir el tiempo de 1 hora y 30 minutos en solo 10 a 15 minutos?
- Usa la construcción paralela con la opción
-j
- Compile solo para la arquitectura de destino, ya que de lo contrario, make construirá el núcleo para cada arquitectura listada.
es decir, por ejemplo, en lugar de ejecutar:
make
correr:
make ARCH=<your architecture> -jN
donde N
es el no de núcleos en su máquina ( cat /proc/cpuinfo
muestra el no de núcleos). Por ejemplo, para i386
target y host machine con 4 cores
(salida de cat /proc/cpuinfo
):
make ARCH=i386 -j4
De forma similar, puede ejecutar los otros objetivos de modules_install
( modules
, modules_install
, install
) con el indicador -jN
.
Nota: make
una comprobación de los archivos modificados y compila solo los archivos que han sido modificados, por lo que solo la compilación inicial debería tomar tiempo, las compilaciones posteriores serán más rápidas.
No hagas make menuconfig
por cada cambio que hagas a las fuentes, porque activará una compilación completa de todo, sin importar cuán trivial sea tu cambio. Esto solo es necesario cuando la opción de configuración del kernel cambia, y eso debería ocurrir durante su desarrollo.
Solo haz:
make
O si prefieres la compilación paralela:
make -j4
o cualquier número de tareas concurrentes que te apetezca.
Entonces, por supuesto, puede ser necesario make install
, etc. para implementar los binarios recientemente creados.
Otro truco es configurar el kernel al mínimo necesario para sus pruebas. Descubrí que para muchas tareas una compilación UML (Modo de usuario Linux) es la más rápida. También puede resultarle útil make localmodconfig
lugar de make menuconfig
para empezar.
No necesita ejecutar make menuconfig
nuevamente cada vez que realice un cambio, solo se necesita una vez para crear el archivo .config
del kernel. (O posiblemente otra vez si edita archivos Kconfig
para agregar o modificar las opciones de configuración, pero esto no debería suceder a menudo).
Siempre que su .config
se quede solo, la ejecución de make
solo debería recompilar los archivos que haya cambiado. Hay algunos archivos que deben compilarse cada vez, pero la gran mayoría no lo son.
Quizás, además de las sugerencias anteriores, el uso del software ccache ( ccache ) y un directorio de compilación en la unidad SSD deberían disminuir drásticamente el tiempo de compilación.
Si tiene suficiente RAM y no va a utilizar su máquina mientras se está construyendo el núcleo, puede generar una gran cantidad de trabajos simultáneos. Pero asegúrese de que su RAM sea suficiente, de lo contrario su sistema se bloqueará y se bloqueará.
Tal vez además de las sugerencias anteriores, mientras usa ccache, es posible que desee deshabilitar CONFIG_GCC_PLUGINS
(si se configuró), de lo contrario, podría obtener una gran cantidad de errores de caché, como se ve en this ejemplo.
ccache debería ser capaz de acelerar dramáticamente sus tiempos de compilación. Acelera la recompilación al almacenar en caché las compilaciones anteriores y detectar cuándo se vuelve a realizar la misma compilación. Su primera compilación con ccache será más lenta, ya que necesita rellenar el caché, pero las compilaciones posteriores deberían ser mucho más rápidas.
Si no quieres molestarte con las configuraciones de ccache, puedes ejecutarlo así para compilar el kernel:
ccache make
make -j
utilizará todas las CPU disponibles.