Wie werden nicht verwendete Architekturen, Treiber usw. aus Headern entfernt, wenn ein benutzerdefinierter Linux-Kernel erstellt wird?


7

Ich erstelle benutzerdefinierte Linux-Kernel-Pakete in einer Ubuntu 13.10 amd64-Umgebung auf
apt-get source linux-image-$(uname -r)
Debian-Weise make-kpkg clean;fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers.

Linux-Header sind größer als Image

Das Ergebnis sind zwei .deb - Dateien , wo die Datei linux-headers-ist 8.2M in Größe und die daraus resultierenden linux-image-ist nur 6.1M . Nachdem ich mir angesehen habe, welche Dateien linux-image-enthalten sind, sehe ich, dass es viele Header für Elemente gibt, die in der .configDatei deaktiviert sind .

Linux-Header -... Inhalt

  • nicht genutzte Dateisysteme, wie /fs/reiserfs/,
  • nicht genutzte Sicherheitsmodule, wie /security/selinux/,
  • unbenutzte enthält, wie /include/pcmcia/oder /include/sound/,
  • nicht verwendete Architekturen, wie /arch/powerpc/, /arch/s390/, /arch/parisc/, /arch/blackfin/, /arch/cris/, /arch/xtensa/, /arch/alpha/, /arch/ia64/, /arch/h8300/, /arch/arm/, und so weiter,
  • nicht verwendete Treiber, wie /drivers/leds/, /drivers/eisa/, /drivers/isdn/, /drivers/net/ppp/, /drivers/net/wireless/, und so weiter,
  • nicht genutzte Vernetzung wie /net/bluetooth/, /net/wimax/, /net/decnet/, etcetera

Was (und wie) sind die Optionen für die Strippen der nicht verwendeten Elemente aus dem linux-headers-Paket und / oder auf andere Weise reduzieren die Dateigröße ?


Warum möchten Sie die Paketgröße reduzieren linux-headers?
SparKot

1
Vielleicht brauche ich das Linux-Header-Paket nicht, um einen funktionierenden benutzerdefinierten Linux-Kernel zu erstellen und zu verwenden, und entferne einfach das kernel_headersvon fakeroot make-kpkg.
Pro Backup

Details zur Debian-Methode zur Debian-Kompilierung finden Sie hier - unix.stackexchange.com/a/115921/4671 . Diese Antwort muss bereinigt werden, aber ich bin nicht dazu gekommen. Fühlen Sie sich frei, Fragen / Kommentare hinzuzufügen.
Faheem Mitha

1
Das Linux-Header-Paket wird nur benötigt, wenn Sie Quellen, Kernel kompilieren oder andere Pakete erstellen möchten. Sie sind auch nicht Teil einer Systemlaufzeit. So genau gesprochen gibt es keinen Anwendungsfall für das Entfernen nicht verwendeter Header-Dateien.

@bersch Ohne eine bessere Antwort bin ich bereit, Ihrem Kommentar das Kopfgeld zu verleihen.
Pro Backup

Antworten:


5

Das linux-headersPaket wird nur benötigt, wenn Sie Quellen, Kernel kompilieren oder andere Pakete erstellen möchten.

Paketbeschreibung von debian :

Dieses Paket enthält die architekturspezifischen Kernel-Header-Dateien für den Linux-Kernel 2.6.32-5-686, die im Allgemeinen zum Erstellen von Kernelmodulen außerhalb des Baums verwendet werden. Diese Dateien werden in /usr/src/linux-headers-2.6.32-5-686 installiert und können zum Erstellen von Modulen verwendet werden, die in den Kernel geladen werden, der vom Linux-Image-2.6.32-5- bereitgestellt wird. 686 Paket.

kernel-headerssind auch nicht Teil einer Systemlaufzeit. Genau genommen gibt es also keinen Anwendungsfall, um nicht verwendete Header-Dateien aus dem Paket zu entfernen. Die ursprüngliche Beschreibung schränkt dies jedoch ein generallyund beschränkt die Verwendung zum Erstellen von Kernelmodulen. Wenn Sie einen benutzerdefinierten Kernel kpkgausführen , mit dem erstellt wurde , können Sie auch Ihre /usr/include/{linux,asm,asm-generic}Header neu verknüpfen , um andere Quellen ordnungsgemäß kompilieren zu können.

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.