Reconstruyendo el kernel de Linux sin "clean"

11

Estoy construyendo un kernel personalizado basado en 4.11 (para Mintx64, si es importante). Ya lo he compilado e instalado para demostrar que funciona. Ahora he realizado algunos pequeños cambios en un par de archivos (en el controlador y en los subsistemas de red, ¡es por eso que necesito compilar un núcleo personalizado en primer lugar!)

Ahora quiero construir el kernel modificado. Sin embargo cuando corro

fakeroot make -j5 deb-pkg LOCALVERSION=myname KDEB_PKGVERSION=1 

El sistema de compilación parece comenzar "limpiando" una gran cantidad de cosas, así que lo detuve rápidamente. Desafortunadamente, la computadora que estoy usando no está bendecida con una buena CPU y lleva muchas horas construir desde cero. Por lo tanto, prefiero evitar hacerlo de nuevo si es posible.

¿Es posible hacer una compilación incremental sin que todo esté "limpio" o es un requisito del sistema de compilación del núcleo?

El resultado que obtuve fue:

CHK      include/config/kernel.release
make clean
CLEAN .
CLEAN arch/x86/lib
...
T Kilney
fuente
@jc__ vea el resultado de la compilación anterior, no puedo encontrar de inmediato dónde está el archivo MAKE para ese objetivo, pero todavía estoy buscando :)
T Kilney

Respuestas:

12

El make cleanes solo para el deb-pkgobjetivo. Echa un vistazo a scripts/package/Makefile:

deb-pkg: FORCE
        $(MAKE) clean
        $(call cmd,src_tar,$(KDEB_SOURCENAME))
        $(MAKE) KBUILD_SRC=
        +$(call cmd,builddeb)

bindeb-pkg: FORCE
        $(MAKE) KBUILD_SRC=
        +$(call cmd,builddeb)

Si construyes el bindeb-pkgen su lugar, no hará una limpieza. Probablemente no necesite los paquetes fuente de todos modos.

Sospecho que hace una limpieza porque no quiere acumular artefactos de construcción en el tarball de origen.

RawwrBag
fuente
2

Podría intentar producir esos paquetes deb con una herramienta diferente, make-kpkgque es instalada por apt-get install kernel-package. Entonces por ejemplo

make-kpkg --rootcmd=fakeroot --initrd --uc --us -j2 kernel_image kernel_headers

Este comando no debe hacer un make cleancada vez.

JJ Hakala
fuente
1

Lo arreglé yendo al archivo MAKE para el comando deb-pkg y eliminando "make clean" del script. Esto no pareció causar efectos negativos con la compilación y he estado ejecutando el kernel personalizado durante una semana o dos sin problemas. YMMV!

T Kilney
fuente