Kernel Compilation & Installation (Artikel 364)
Der operative Prozess der Kernel-Kompilierung. Erfahren Sie alles über das effiziente Bauen des Kernel-Images, die Installation von Modulen und die Integration in den Bootloader.
# Kernel Build: Vom Quellcode zum laufenden System
TL;DR / Management Summary Die Kompilierung des Linux-Kernels ist der “Heavy Lifting” Teil der Systemadministration. Wir nutzen das Tool make, um aus Millionen Zeilen Code das binäre Kernel-Image (vmlinuz) und hunderte externe Module (
.ko) zu erzeugen. Ein Senior Admin nutzt die volle Kraft seiner CPU-Kerne durch Parallelisierung (-j) und beherrscht den Installations-Workflow, ohne sein bestehendes System zu gefährden.
# 1. Einführung & Architektur
Die Build-Pipeline.
Der Prozess verläuft in drei großen Schritten:
- Kompilierung: Erzeugung des Kernels und der Module.
- Installation der Module: Kopieren der
.koDateien nach/lib/modules/. - Installation des Kernels: Kopieren von
vmlinuznach/bootund Erzeugen des Initramfs.
# Der Build-Prozess (Mermaid)
graph TD
A[Source Tree + .config] --> B[Command: make -j]
B --> C[Binary: vmlinux]
B --> D[Modules: *.ko]
C --> E[Compression: bzImage]
E --> F[Installation: /boot/vmlinuz]
D --> G[Installation: /lib/modules/VERSION/]
F/G --> H[Update Initramfs]
H --> I[Update Bootloader GRUB]
# 2. Die Kompilierung
Die CPU glühen lassen.
Nutzen Sie alle verfügbaren Kerne, um die Zeit von Stunden auf Minuten zu verkürzen.
# nproc liefert die Anzahl der Kerne
make -j$(nproc)
Dieser Befehl erzeugt das komprimierte Kernel-Image (meist unter arch/x86/boot/bzImage).
# 3. Installation
Die Dateien an den richtigen Ort bringen.
# Schritt 1: Module installieren
sudo make modules_install
# Dies erstellt den Ordner /lib/modules/$(uname -r)-custom/
# Schritt 2: Kernel installieren
sudo make install
# Dies kopiert den Kernel nach /boot und aktualisiert meist automatisch das Initramfs.
# 4. Day-2 Operations: Bootloader-Integration
Dem System vom neuen Kernel erzählen.
Falls make install den Bootloader nicht automatisch aktualisiert hat:
# Für GRUB
sudo grub-mkconfig -o /boot/grub/grub.cfg # Arch
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL/SLES
# Initramfs manuell bauen (falls nötig)
sudo dracut --kver <neue_version> # RHEL/SLES
sudo mkinitcpio -k <neue_version> -g /boot/initramfs-<version>.img # Arch
# 5. Troubleshooting & “War Stories”
Wenn der Build bricht.
# Story 1: “Der Compiler-Abbruch (Missing Headers)”
Symptom: Der Build bricht nach 10 Minuten mit fatal error: openssl/opensslv.h: No such file or directory ab.
Ursache: Fehlende Entwickler-Pakete (Header-Dateien) auf dem Host-System.
Lösung: Installieren Sie die benötigten -devel oder -dev Pakete (siehe Artikel 362) und starten Sie make erneut. Dank des inkrementellen Builds macht make an der Stelle weiter, an der es abgebrochen ist.
# Story 2: “Das volle /boot Verzeichnis”
Symptom: make install bricht ab mit No space left on device.
Ursache: Sie haben bereits 10 verschiedene Kernel-Versionen in /boot, und der neue Kernel (inkl. Initramfs) passt nicht mehr hinein.
Lösung: Löschen Sie alte Kernel-Versionen und deren Module:
sudo rm /boot/vmlinuz-<alt> und sudo rm -rf /lib/modules/<alt>.
# 6. Fazit & Empfehlung
- Performance: Nutzen Sie
-j. Es ist der wichtigste Hebel für die Build-Zeit. - Sicherheit: Benennen Sie Ihren Kernel mit einem Suffix (in
menuconfigunterGeneral Setup -> Local version), um ihn klar von den Standard-Kernels der Distribution zu trennen. - Integrität: Vergleichen Sie nach der Installation die Version:
strings /boot/vmlinuz-<version> | grep "Linux version".
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Bauen (Parallel) | make -j$(nproc) |
| Module installieren | sudo make modules_install |
| Kernel installieren | sudo make install |
| Alles in einem Rutsch | make -j8 && sudo make modules_install install |
| Nur Module bauen | make modules |
| Architektur setzen | make ARCH=arm64 ... |
| Build aufräumen | make clean |
| Alles (inkl. Config) weg | make mrproper |