Linux-Kernel-Deb-Pkg-Ziel kompilieren, ohne DBG-Paket zu generieren?

Linux-Kernel-Deb-Pkg-Ziel kompilieren, ohne DBG-Paket zu generieren?

Ich baue Linux-Kernel nach Debian-Art, wie es (größtenteils) von derDebian Linux Kernel Handbuch. Für den Kompilierungsschritt verwende ich also target deb-pkg, und nach erfolgreichem Abschluss make deb-pkgwerden im übergeordneten Verzeichnis einige Debian-Pakete generiert:

linux-firmware-image-VERSIONS.deb
linux-headers-VERSIONS.deb
linux-image-VERSIONS.deb
linux-image-VERSION-dbg_VERSION.deb
linux-libc-dev_VERSIONS.deb

Oftmals installiere ich nur linux-image-x.y.z.debund die anderen vier Pakete bleiben ungenutzt. Das wäre kein großes Problem, aber ich stelle immer wieder fest, dass das Generieren des Pakets mit den Kernel-Debugsymbolen ( linux-image-x.y.z-dbg_x.y.z_arch.deb) sehr viel Zeit in Anspruch nimmt. Ich frage mich, ob es eine Möglichkeit gibt, dem Build-Ziel mitzuteilen, deb-pkgdass keine Pakete mit Debugsymbolen generiert werden sollen?

Antwort1

Die Antwort von MariusMatutiae war nicht ganz die, die ich erwartet hatte, aber ich habe mir einige der Kernel-Build-Skripte angesehen und eine praktikable Lösung gefunden. Das Skript, das die resultierenden Debian-Pakete generiert, istscripts/package/builddeb. Bei der Betrachtung dieses Skripts sind die Teile, die das Paket mit Debugsymbolen erstellen, von Bedingungen umgeben, die davon abhängen, für BUILD_DEBUGwelches Greps das angegebene gilt .KCONFIGCONFIG_DEBUG_INFO=y

Um die Generierung von Debian-Paketen mit Debugsymbolen zu beenden, müssen Sie derzeit die Kerneloption deaktivieren CONFIG_DEBUG_INFO:

CONFIG_DEBUG_INFO=n

Antwort2

Kernel-Handbuchschlägt Folgendes vor:

Der Build benötigt weniger Speicherplatz, wenn die Option CONFIG_DEBUG_INFO deaktiviert ist. Debuginfo wird nur benötigt, wenn Sie binäre Objekttools wie Crash, kgdb und SystemTap auf dem Kernel verwenden möchten.

Dies kann mit diesem Befehl erreicht werden:

cd linux-source-4.12
scripts/config --disable DEBUG_INFO

Antwort3

Für diejenigen, die eine moderne Kernelversion (5.19+) kompilieren, sind dies die zu ändernden Konfigurationssymbole:

scripts/config --undefine GDB_SCRIPTS
scripts/config --undefine DEBUG_INFO
scripts/config --undefine DEBUG_INFO_SPLIT
scripts/config --undefine DEBUG_INFO_REDUCED
scripts/config --undefine DEBUG_INFO_COMPRESSED
scripts/config --set-val  DEBUG_INFO_NONE       y
scripts/config --set-val  DEBUG_INFO_DWARF5     n

Abhängig von der Quelle der Konfigurationsdatei (z. B. ob es sich um die Ubuntu-Version handelt) müssen Sie möglicherweise Folgendes ausführen:

scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT

Antwort4

Sie müssen Folgendes wie folgt einstellen.configSymbole:

 CONFIG_FRAME_POINTER=n

 CONFIG_KGDB=n

 CONFIG_KGDB_SERIAL_CONSOLE=n

Stellen Sie außerdem sicher, dass CONFIG_DEBUG_RODATA nicht gesetzt ist, indem Sie es auskommentieren.

 # CONFIG_DEBUG_RODATA

Alle Informationen zum Kompilieren des Linux-Kernels finden Sie ganz verbindlich unterauf der Linux Kernel Homepage.

verwandte Informationen