
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-pkg
werden 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.deb
und 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-pkg
dass 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_DEBUG
welches Greps das angegebene gilt .KCONFIG
CONFIG_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.