linux-arch-alpine-minimal performance optimization kernel compilation minimalism advanced

Custom Kernels & Minimal Tuning (Artikel 237)

Tiefgehende Anleitung zur Kernel-Optimierung für minimalistische Systeme. Erfahren Sie, wie Sie maßgeschneiderte Kernels kompilieren, unnötige Module entfernen und die Systemleistung maximieren.

# Kernel Optimization: Den Motor für Minimal-Systeme tunen

TL;DR / Management Summary Der Linux-Kernel ist ein Alleskönner – und genau das ist sein Problem in minimalistischen Umgebungen. Ein Standard-Kernel enthält Treiber für tausende Geräte, die Sie nie besitzen werden. In diesem Modul lernen wir, wie wir einen Custom Kernel bauen, der nur das enthält, was Ihr System wirklich braucht. Das Ergebnis: Ein Kernel-Image < 5MB, Bootzeiten in Millisekunden und ein massiv reduzierter RAM-Footprint.


# 1. Einführung & Architektur

Warum kompilieren statt installieren?

Ein generischer Kernel (wie linux in Arch) muss auf jeder Hardware booten. Er ist daher hochmodular und groß. Ein Custom-Kernel ist hardware-spezifisch.

# Der Optimierungs-Stack (Mermaid)

graph TD
    A[Standard Kernel: 50MB+] --> B{Stripping Process}
    B --> C[Remove unused Drivers: WiFi, Sound, SCSI]
    B --> D[Disable Debugging: KDB, Tracing]
    B --> E[Optimize for CPU: march=native]
    C/D/E --> F[Custom Kernel: < 5MB]
    F --> G[Hyper-fast Boot]
    F --> H[Reduced Memory Usage]

# 2. Der Weg zum Custom Kernel

Vom Source zum Binary.

# Schritt 1: Hardware-Profil erstellen

Bevor Sie kompilieren, müssen Sie wissen, welche Module Ihr System aktuell nutzt.

# Auf dem Zielsystem ausführen
lsmod > my_modules.txt

# Schritt 2: Die Konfiguration (make localmodconfig)

Dieser Befehl ist das Geheimnis der Profis. Er deaktiviert automatisch alle Module im Source-Tree, die nicht in Ihrer Liste (lsmod) stehen.

cd /usr/src/linux
make localmodconfig

# Schritt 3: Manuelle Auswahl (make menuconfig)

Hier deaktivieren wir den Rest:

  • General Setup: Deaktivieren Sie Expert Users Features, wenn nicht benötigt.
  • Device Drivers: Entfernen Sie alles, was Sie nicht haben (USB-Serial, Amateur Radio, etc.).
  • File Systems: Nur das nutzen, was Sie wirklich mounten (z.B. nur Ext4 und Btrfs).

# 3. Kernel-Tuning via Sysctl

Performance zur Laufzeit.

Man muss nicht immer neu kompilieren. Viele Hebel liegen in /etc/sysctl.d/.

# Beispiel: Tuning für High-Performance Webserver

# Vergrößere den Netzwerk-Stack-Puffer
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# Schnelleres Recycling von Sockets
net.ipv4.tcp_tw_reuse = 1

# 4. Day-2 Operations: Kernel-Updates managen

Wann muss man neu bauen?

Ein Custom-Kernel ist “tot”. Er erhält keine automatischen Updates.

  • Strategie: Bauen Sie Ihren Kernel neu, wenn kritische Sicherheitslücken (CVEs) im Upstream-Kernel gemeldet werden.
  • Automation: Nutzen Sie das Tool modprobed-db unter Arch, um Ihre lsmod-Liste über Wochen hinweg zu verfeinern, bevor Sie den endgültigen Kernel bauen.

# 5. Troubleshooting & “War Stories”

Wenn der Kernel panisch wird.

# Story 1: “Der fehlende Disk-Treiber”

Symptom: Der neue Kernel bootet, bricht aber mit VFS: Unable to mount root fs on unknown-block(0,0) ab. Ursache: Der Treiber für das Dateisystem (z.B. Ext4) oder den Storage-Controller (z.B. NVMe) wurde als Modul (M) statt fest (Y) in den Kernel einkompiliert. Lösung: Stellen Sie sicher, dass alles, was zum Booten der Root-Partition nötig ist, fest im Kernel integriert ist (* statt M in menuconfig).

# Story 2: “Das verschwundene Netzwerk”

Symptom: Nach dem Reboot ist das Netzwerk-Interface weg. ip link zeigt nichts. Ursache: localmodconfig hat den Treiber deaktiviert, weil das Interface während der Erstellung der lsmod-Liste down war oder das Modul dynamisch entladen wurde. Lösung: Laden Sie alle Hardware-Module manuell, bevor Sie localmodconfig ausführen.


# 6. Fazit & Empfehlung

  • Einsatz: Custom-Kernels sind ideal für statische Hardware (Edge-Server, Thin Clients).
  • Wahl: Nutzen Sie für 90% der Fälle den offiziellen linux-lts oder linux-hardened Kernel. Der Gewinn durch manuelles Kompilieren steht oft in keinem Verhältnis zum Wartungsaufwand.
  • Best Practice: Führen Sie immer einen funktionierenden Standard-Kernel als Backup im Bootmenü mit.

# Anhang: Cheatsheet

Aufgabe Befehl
Config-GUI (Text) make menuconfig
Config-GUI (Qt) make xconfig
Schnell-Konfig make localmodconfig
Kompilieren make -j$(nproc)
Installieren sudo make modules_install && sudo make install
Aktuelle Config sehen zcat /proc/config.gz
Sysctl anwenden sudo sysctl -p
Boot-Parameter cat /proc/cmdline