# Kernel Development: Den Core aktiv mitgestalten
TL;DR / Management Summary Der Linux-Kernel ist das größte Open-Source-Projekt der Welt. Wer daran mitarbeiten will, muss den “Way of the Kernel” verstehen: Keine Pull-Requests auf GitHub, sondern E-Mails an Mailing-Listen. Strikte Coding-Styles und der Einsatz von Tools wie
checkpatch.plsind Pflicht. Dieses Modul zeigt Ihnen, wie Sie Ihren ersten Patch vorbereiten, signieren und an die richtigen Maintainer senden.
# 1. Einführung & Architektur
Der Release-Zyklus.
Linus Torvalds veröffentlicht ca. alle 9-10 Wochen einen neuen Kernel.
- Merge Window (2 Wochen): Neue Features werden gemerged.
- Release Candidates (RC1-RC8): Bugfixing-Phase.
- Final Release: Der neue stabile Kernel erscheint.
# Architektur der Review-Prozesse
Jedes Subsystem (Netzwerk, Filesysteme, ARM-Architektur) hat eigene Maintainer. Ihr Patch muss erst deren Segen erhalten, bevor er im Hauptzweig (mainline) landet.
# 2. Vorbereitung der Umgebung
Die Werkzeuge des Schmieds.
# 1. Quellcode klonen
Arbeiten Sie immer gegen den linux-next Tree, wenn Sie neue Features planen, oder mainline für Bugfixes.
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
# 2. Email-Setup
Der Kernel-Prozess nutzt Plain-Text E-Mails. git send-email ist das Tool der Wahl.
Konfigurieren Sie Ihren SMTP-Server in der .gitconfig.
# 3. Den Patch erstellen
Qualität vor Quantität.
# Schritt 1: Code schreiben & Coding Style prüfen
Linux hat einen sehr spezifischen Style (Tabs statt Leerzeichen, 80 Zeichen Limit).
# Prüfen Sie Ihren Patch vor dem Absenden!
./scripts/checkpatch.pl 0001-my-fix.patch
# Schritt 2: Sign-off
Jeder Patch braucht eine rechtliche Bestätigung (Developer's Certificate of Origin).
git commit -s -m "subsystem: description of my fix"
Das -s fügt die Zeile Signed-off-by: Your Name <email> hinzu.
# 4. Deep Dive: Patches einreichen
Den richtigen Empfänger finden.
# Wer ist zuständig?
Nutzen Sie das get_maintainer.pl Script:
./scripts/get_maintainer.pl my_fix.patch
# Output: Maintainer Name <email>, L-List <email>
# Senden
git send-email --to maintainer@kernel.org --cc linux-kernel@vger.kernel.org 0001-my-fix.patch
# 5. Troubleshooting & “War Stories”
Warum Patches abgelehnt werden.
# Top 3 Fehler
-
Fehler: HTML E-Mails oder Base64-Attachments.
- Folge: Der Patch wird von den automatischen Systemen ignoriert.
- Lösung: Nur Plain-Text verwenden!
-
Fehler: Fehlende Beschreibung des “Warum”.
- Lösung: Erklären Sie im Commit-Log nicht, was der Code macht (das sieht man), sondern warum die Änderung nötig ist.
-
Fehler: Patch basiert auf einer uralten Kernel-Version.
- Lösung: Immer
git rebaseauf den aktuellen Master.
- Lösung: Immer
# “War Story”: Der vergessene Tab
Ein bekannter Entwickler reichte einen 500-Zeilen Patch für ein neues Filesystem-Feature ein. Der Patch wurde abgelehnt, weil er an einer Stelle Leerzeichen statt Tabs verwendet hatte. Lehre: Im Kernel-Umfeld ist Disziplin bei der Formatierung ein Zeichen für Disziplin bei der Logik. Nutzen Sie die mitgelieferten Scripts!
# 6. Day-2 Operations: Feedback-Runden
Kritik ist ein Geschenk.
Maintainer werden Ihren Code kritisieren. Das ist normal.
- V1: Erster Entwurf.
- V2: Überarbeiteter Entwurf nach Feedback. (Betreff:
[PATCH v2] ...) - Merged: Ihr Name steht für immer in der
git logHistorie.
# 7. Fazit & Empfehlung
Kernel-Entwicklung ist die “Königsdisziplin”.
- Empfehlung: Starten Sie klein. Fixen Sie Tippfehler in Kommentaren oder bereinigen Sie Checkpatch-Warnungen in
drivers/staging/. - Wichtige Ressource: Lesen Sie die Datei
Documentation/process/submitting-patches.rstim Kernel-Source.
# Anhang: Cheatsheet
| Tool | Zweck |
|---|---|
scripts/checkpatch.pl |
Style-Check |
scripts/get_maintainer.pl |
Empfänger finden |
git format-patch |
Erstellt Patch-Dateien |
git send-email |
Versendet Patches |
make -j$(nproc) |
Kernel schnell kompilieren |