Neuaufbau des Linux-Kernels ohne "sauber"


11

Ich erstelle einen benutzerdefinierten Kernel basierend auf 4.11 (für Mintx64, wenn es darauf ankommt). Ich habe es bereits kompiliert und installiert, um zu beweisen, dass es funktioniert. Jetzt habe ich ein paar kleine Änderungen an einigen Dateien vorgenommen (in den Treiber- und Netz-Subsystemen muss ich deshalb zuerst einen benutzerdefinierten Kernel kompilieren!)

Jetzt möchte ich den modifizierten Kernel erstellen. Jedoch wenn ich renne

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

Das Build-System scheint damit zu beginnen, eine ganze Menge Dinge zu "säubern", also habe ich es schnell gestoppt. Leider ist der von mir verwendete Computer nicht mit einer guten CPU gesegnet und es dauert viele Stunden, ihn von Grund auf neu zu erstellen. Deshalb würde ich es lieber vermeiden, wenn möglich!

Ist es möglich, nur einen inkrementellen Build zu erstellen, ohne dass alles "sauber" ist, oder ist dies eine Anforderung des Kernel-Build-Systems?

Die Ausgabe, die ich bekam, war:

CHK      include/config/kernel.release
make clean
CLEAN .
CLEAN arch/x86/lib
...

@jc__ siehe Ausgabe von Build oben, ich kann nicht sofort finden, wo das Makefile für dieses Ziel ist, aber ich suche immer noch :)
T Kilney

Antworten:


12

Das make cleanist nur für das deb-pkgZiel. Schauen Sie sich an 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)

Wenn Sie stattdessen das erstellen bindeb-pkg, wird es nicht sauber. Sie brauchen die Quellpakete wahrscheinlich sowieso nicht.

Ich vermute, dass es eine Bereinigung durchführt, weil es keine Build-Artefakte im Quell-Tarball aufbauen möchte.


2

Sie können versuchen, diese Deb- Pakete mit einem anderen Tool zu erstellen, make-kpkgdas von installiert wird apt-get install kernel-package. Dann zum Beispiel

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

Dieser Befehl sollte nicht make cleanjedes Mal ausgeführt werden.


1

Ich habe dies behoben, indem ich in das Makefile für den Befehl deb-pkg gegangen bin und "make clean" aus dem Skript entfernt habe. Dies schien keine negativen Auswirkungen auf den Build zu haben, und ich habe den benutzerdefinierten Kernel nun seit ein oder zwei Wochen ohne Probleme ausgeführt. YMMV!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.