Kernel Configuration: Master the .config (Artikel 363)
Beherrschung der Kernel-Konfiguration unter Linux. Erfahren Sie alles über das .config File, den Einsatz von menuconfig und die strategische Auswahl von Kernel-Features für den Enterprise-Betrieb.
# Kernel Configuration Masterclass: Das .config-File bändigen
TL;DR / Management Summary Die Datei
.configist das Gehirn des Kernel-Build-Prozesses. Sie entscheidet über tausende Parameter: Welche Hardware wird unterstützt? Ist das System echtzeitfähig? Welche Sicherheits-Features sind aktiv? Ein Senior Admin schreibt die.confignicht von Hand, sondern nutzt interaktive Werkzeuge wiemenuconfig. Das Ziel: Eine Konfiguration, die stabil genug für den Server und schlank genug für maximale Performance ist.
# 1. Einführung & Architektur
Die Macht der Optionen.
Jede Zeile in der .config entspricht einem CONFIG_-Parameter.
y: Fest in das Kernel-Binary (vmlinuz) einkompiliert.m: Als externes Modul (.ko) gebaut.n: Deaktiviert.
# Das Konfigurations-Interface (Mermaid)
graph TD
A[Admin] --> B{Interface Choice}
B -->|Text based| C[make menuconfig]
B -->|GUI based| D[make xconfig / gconfig]
B -->|Automatic| E[make localmodconfig]
B -->|Update existing| F[make oldconfig]
C/D/E/F --> G[.config File]
G --> H[Kernel Build Process]
# 2. Arbeiten mit menuconfig
Der Standard im RZ.
Starten Sie die ncurses-Oberfläche:
make menuconfig
Navigation: Pfeiltasten zum Bewegen, Space zum Umschalten (Y/M/N), / zum Suchen nach Parametern.
# Strategische Sektionen
- Processor type and features: Hier optimieren wir für die spezifische CPU (z.B.
Core i7oderGeneric x86_64). - General setup -> Preemption Model: Für Server wählen wir meist
No Forced Preemption (Server)für maximalen Durchsatz. - Security options: Aktivierung von SELinux, AppArmor oder
LockdownModus.
# 3. Die .config pflegen und updaten
Das Erbe bewahren.
Wenn Sie einen neuen Kernel-Source laden, wollen Sie Ihre alten Einstellungen behalten.
# 1. Bestehende Konfig laden
Kopieren Sie die .config Ihres aktuellen Kernels in den neuen Source-Ordner:
cp /boot/config-$(uname -r) .config
# 2. Differenz bereinigen
make oldconfig
Dieser Befehl fragt nur die neuen Optionen ab, die im alten Kernel noch nicht existierten.
# 4. Day-2 Operations: Feature Discovery
Versteckte Kräfte finden.
Nutzen Sie die Suchfunktion in menuconfig (/), um Features wie eBPF, WireGuard oder spezifische Dateisysteme zu finden.
- Achten Sie auf Abhängigkeiten (Depends on). Oft erscheint eine Option erst, wenn eine andere (z.B.
EXPERT) aktiviert wurde.
# 5. Troubleshooting & “War Stories”
Wenn die Config den Boot bricht.
# Story 1: “Der hängende Mount (Part 2)”
Symptom: Der Kernel bootet, aber kann die Root-Partition nicht mounten (siehe Artikel 237).
Ursache: Der Admin hat den Treiber für den SATA/NVMe-Controller als Modul (m) statt fest (y) konfiguriert. Da das Modul auf der Disk liegt, die der Kernel noch nicht lesen kann, entsteht eine Sackgasse.
Lösung: Konfigurieren Sie alle Speicher-Treiber (Block-Layer) und das Root-Dateisystem (Ext4/XFS) als fest integriert (y).
# Story 2: “Das volle /boot durch Module”
Symptom: Die Installation der Module schlägt fehl oder /lib/modules verbraucht 5GB.
Ursache: Der Admin hat in seiner Gier nach Kompatibilität “alles als Modul” markiert.
Lösung: Nutzen Sie make localmodconfig (Artikel 362), um die Liste auf Ihre echte Hardware zu kürzen. Weniger Module bedeuten auch schnellere Ladezeiten und weniger RAM-Verbrauch im Kernel-Space.
# 6. Fazit & Empfehlung
- Sicherheit: Deaktivieren Sie
CONFIG_IKCONFIG_PROCnicht. Es erlaubt Ihnen, die Konfig des laufenden Kernels via/proc/config.gzauszulesen – ein Lebensretter für spätere Analysen. - Minimalismus: Je weniger
yEinträge, desto kleiner das Kernel-Binary. - Wartung: Speichern Sie Ihre finale
.configimmer in einem separaten Backup-Ordner oder in Git.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Ncurses Konfig | make menuconfig |
| GUI (Qt) Konfig | make xconfig |
| Alles auf Default | make defconfig |
| Update von alter Config | make oldconfig |
| Minimal-Config für HW | make localmodconfig |
| Aktuelle Config lesen | zcat /proc/config.gz > .config |
| Hilfe zu Option | ? in menuconfig |
| Suchen | / in menuconfig |
| Syntax-Check | scripts/checkconfig.pl |