Linux – Kernel

tux_new.pngDer Kernel ist das Herz des Systems und steuert die Speicherverwaltung, den Zugriff auf die Hardware, weist den Anwendungen Speicher zu und verwaltet die Prozesse.

Der Linux-Kernel wird in verschiedenen Versionsnummern entwickelt und veröffentlicht. Als Grundsatz gilt immer: Gerade Nummern gleich hinter der Hauptnummer (2.2.x, 2.4.x, 2.6.x) sind stabile Anwender-Kernel. linux-2.6.10 ist z.B. ein stabiler Kernel, also für Anwender gedacht. Ungerade Nummern nach der Hauptnummer (2.3.x, 2.5.x, 2.7.x) stellen instabile Entwickler-Kernel dar. Diese beinhalten neueren Code und vielleicht auch neue Treiber und Funktionen, die aber noch nicht ausgiebig oder überhaupt noch nicht, getestet worden sind.

Bevor ein neuer stabiler Linux Kernel von Linus Torvalds veröffentlicht wird, werden so genannte release candidates von Linus vorgeschoben. Erkennbar an der Endung -rc1, -rc2 -rc3… Zum Beispiel: linux-2.6.11-rc1 ist der geplante Kernel 2.6.11, aber noch in der Testphase befindliche, der dann nach weiteren release candidates und Tests zum stabilen linux-2.6.11 wird.

Andrew Morten setzt noch experimentellere Kernel mit der Endung -mm1, -mm2,.. drauf. Z.B.: linux-2.6.10-mm1. Diese sind mit neuesten Treibern und Änderungen versehen und sind oft instabil und voll in Entwicklung auf den zukünftigen Kernel und neuen Funktionen zugeschnitten. Das, was früher einmal Alan Cox zu älteren 2.2/2.4 Linux Kernel Zeiten getan hat.

Wer nach speziellen patches sucht, um bsp. einen neueren Treiber für seine WLAN-Hardware oder fürs ACPI zu finden, sollte sich mal die Linux Kernel Patches auf lwn.net anschauen. Oder direkt auf dem kernel.org FTP Verzeichnis der Entwickler nach inoffiziellen patches schauen. Hier hat jeder Entwickler sein eigenes Verzeichnis mit neuen oder alten Patches. Z.B.: Andrew Morten’s Patches oder den guten libata SATA Entwickler Jeff Garzik oder auch Alan Cox gute Patches -ac.

Um nicht jedesmal den kompletten Kernel-Source (über 40 MB gepackt) herunter zuladen, gibt es so genannte Patches. Patches beinhalten nur die Änderungen am Quellcode oder auch neue Dateien, die mit den Tools diff und patch in den vorhandenen Quellcode eingespielt werden. Z.B. der patch-2.6.9.bz2 ist ca. 10x kleiner als der komplette Kernel-Source und beinhaltet nur die Veränderungen am Kernel 2.6.8, um diesen auf den neuen Stand 2.6.9 zu bringen.

Um diesen anzuwenden, benötigt man bspw. den kompletten Kernel-Source von 2.6.8 (linux-2.6.8.tar.bz2) und den neuen patch-2.6.9.tar.bz2. Patches sollten nur auf einen Quellcode angewendet werden, der nicht von anderen Patches oder der Distribution geändert wurde. Sonst gibts Ärger, weil vorige patches eventuell Treiber oder Funktionen schon anders abgeändert haben. Distributionen passen ihren Kernel immer eigenen Vorlieben an! Mit diesen Kernel-Quellcodes sollte man vorsichtig sein und die von den Distributionen gemachten Änderungen beachten oder gleich einen Vanilla (normal ohne Änderungen) Kernel-Source nehmen.

Offizielle Kernel-Patches können sorglos in der richtigen Reihenfolge aufwärts also: patch-2.6.9, patch-2.6.10, patch-2.6.11,… usw. nacheinander eingespielt werden. Erklärt wird dieses genau in der /usr/src/linux/README im Kernel-Source, Änderungen und Anforderungen zum Betrieb des Linux Kernels in der Datei /usr/src/linux/Documentation/Changes.