linux-kernel-advanced kernel compilation configuration menuconfig internals

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 .config ist 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 .config nicht von Hand, sondern nutzt interaktive Werkzeuge wie menuconfig. 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

  1. Processor type and features: Hier optimieren wir für die spezifische CPU (z.B. Core i7 oder Generic x86_64).
  2. General setup -> Preemption Model: Für Server wählen wir meist No Forced Preemption (Server) für maximalen Durchsatz.
  3. Security options: Aktivierung von SELinux, AppArmor oder Lockdown Modus.

# 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_PROC nicht. Es erlaubt Ihnen, die Konfig des laufenden Kernels via /proc/config.gz auszulesen – ein Lebensretter für spätere Analysen.
  • Minimalismus: Je weniger y Einträge, desto kleiner das Kernel-Binary.
  • Wartung: Speichern Sie Ihre finale .config immer 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