Die wichtigsten Neuerungen von Linux 2.6.19
Neben den ĂĽblichen Detailverbesserungen und zahlreichen aktualisierten oder neuen Treibern stechen die neuen Dateisysteme ext4, GFS2 und eCryptfs aus dem riesigen Spektrum an Neuerungen der neuesten Kernel-Ăśberarbeitung heraus.
- Thorsten Leemhuis
Nach zehn Wochen Entwicklung und sechs Vorabversionen hat Linus Torvalds den Linux-Kernel 2.6.19 freigegeben. Der Patch ist extrahiert 35 MByte groß – die Unterschiede bei den beiden vorangegangenen Kernel-Versionen waren rund fünf und drei MByte kleiner. Netto kamen mit 2.6.19 rund 515.161 Zeilen Quellcode hinzu oder wurden modifiziert; 291.784 Zeilen entfernten die Entwickler. Zu den wohl größten Neuerungen zählen neben den üblichen Detailverbesserungen und zahlreichen aktualisierten oder neuen Treibern die Integration der drei neuen Dateisysteme ext4, GFS2 und eCryptfs.
Bei ext4 handelt es sich um eine Weiterentwicklung des bei vielen Distributionen als Standard-Dateisystem eingesetzten ext3. Auf dessen Quellcode baut es zu weiten Teilen auf – ähnlich wie ext3 auf ext2 basierte. Und analog zum damaligen Übergang kann auch der ext4-Treiber ein ext3-Dateisystem einbinden und dort auf Wunsch ext4-Funktionen nutzen. Auf diese Weise verwandelt sich das ext3-Dateisystem in ext4 – beim Wechsel auf ext4 entfällt daher das Auslagern von Daten und das Formatieren einer Partition.
Ext4 kann Volumes bis zu einer Größe von 1024 Petabyte (1 Exabyte) verwalten. Über so genannte extents fasst das Dateisystem mehrere Speichereinheiten zu einem größeren, zusammenhängenden Block zusammen; das soll den Verwaltungsaufwand minimieren und die Performance steigern. Weitere Verbesserungen befinden sich noch in der Vorbereitung ; nach Abschluss der ext4-Entwicklung in einigen Monaten wollen die Entwickler den ext3-Code möglicherweise aus dem Kernel entfernen und ext3-Volumes durch den ext4-Treiber verwalten lassen.
Beim GFS2 (Global File System 2) handelt es sich um eine von Red Hat vorangetriebene Weiterentwicklung von GFS. Das hatte der Linux-Distributor im Sommer 2004 unter der GPL freigegeben, nachdem das Unternehmen den ursprĂĽnglichen Entwickler des Dateisystems Sistina ĂĽbernommen hatte. Das seit 2.6.16 im Kernel integrierte Cluster-Dateisystem OCFS2 (Oracle Cluster File System 2) legt mit 2.6.19 die Einstufung "Experimentell" ab.
Ebenfalls erstmals enthalten ist das im wesentlichen von IBM entwickelte "Dateisystem" eCryptfs. Mit ihm lassen sich Dateien transparent verschlüsseln, die auf normalen Dateisystemen wie ext3 oder reiserfs liegen. Die kryptographischen Informationen befinden sich im Header der Dateien, sodass sie auch beim Kopieren auf einen anderen Rechner erhalten bleiben und sich die Daten dort entschlüsseln lassen – auf der eCryptfs-Homepage schreiben die Entwickler, man solle sich das Dateisystem als eine Art gnupgfs vorstellen.
Verbesserte Infrastruktur
Zukünftig können auch normale Anwender mit ethtool zahlreiche Netzwerkchip-Eigenschaften auslesen – einige bleiben jedoch weiterhin dem root-Anwender vorbehalten. Aufgenommen wurde mit 2.6.19 die bisher unter dem Namen Netlabel separat entwickelte und auf LSM aufsetzende Erweiterung, die IP-Pakete kennzeichnen kann und CIPSO (Commercial IP Security Option) implementiert.
Einige teilweise von Linus Torvalds selbst entwickelte Veränderungen an den von Treibern für Standard-Aufgaben benutzten Kernel-APIs sollen die Zuverlässigkeit der Suspend-Modi beim Zusammenspiel mit Treibern verbessern. Verschiedene Optimierungen an swsusp hingegen beschleunigen laut den Entwicklern das Schreiben und Lesen des Speicherimages beim Software-Suspend. Um den Boot-Vorgang zu beschleunigen, sollte 2.6.19 mit mehreren Threads parallel nach PCI-Hardware suchen. Die Funktion galt bei Aufnahme noch als sehr experimentell und wurde kurz vor Fertigstellung des Kernels aufgrund von Problemen vorerst komplett deaktiviert.
Über eine neue Infrastruktur können Treiber den Stromsparmechanismen des Kernels mitteilen, welche maximale Latenz sie für störungsfreie Funktion benötigen. So können etwa Sound-Treiber eine Zeitspanne vorgeben, die der Kernel einhalten soll, damit eine Audio-Aufzeichnung oder -Wiedergabe ohne Aussetzer gelingt – das Power-Management kann mit dieser Vorgabe dann entscheiden, den Prozessor nicht in den tiefsten Schlafmodus zu schicken, wenn der Wechsel hinein und heraus zu lange dauern würde.
In Zukunft unterbricht der Kernel den Übersetzungsvorgang, wenn nicht alle von den kompilierten Modulen benötigte Treiber-Schnittstellen verfügbar sind. Eine generische ACL-Struktur kam hinzu und soll zusammen mit im freedesktop-Projekt entwickelten Programmen die Zugriffsrechte auf Hardware regeln – etwa um zu verhindern, dass ein per ssh angemeldeter Benutzer Zugriff auf den DVD-Brenner eines Systems erhält.
Twofish-Verschlüsselung im Kernel erfolgt nun auf x86- und x64-Systemen mit für die Architekturen optimierten Algorithmen; gleiches gilt für die Berechnung von SHA1/SHA256 auf dem VIA C7. Einige Aufräumarbeiten und Optimierungen gab es bei den I/O-Schedulern, die die Verteilung der Datenströme von und zu den Datenträgern regeln. Auch der Code für das proc-Dateisystem wurde an einigen Stellen überarbeitet.
Einige vorwiegend kleinere Änderungen für Virtualisierungsumgebungen integrierten die Entwickler – die verschiedenen Virtualisierungsansätze – Xen, OpenVZ, vServer, VMI/Vmware und das noch recht junge KVM (Kernel-based Virtual Machine for Linux), bei dem ein spezielles KVM-Modul auf einem unmodifizierten Kernel mit dem KVM-Modul als Bruecke zwischen Hardware-Virtualisierung im Prozessor auf der einen und der freien Emulation/Virtualisierung QEMU auf der andern Seite agiert – selbst bleiben jedoch weiter außen vor.
In Zukunft übermittelt der IRQ-Handler beim Sprung in die Funktionen zum Abarbeiten des Interrupts nicht mehr den Pointer zum Register-Status der CPU; das stellte häufig nur unnötigen und zeitraubenden Ballast dar, da die meisten Treiber diese Informationen gar nicht benötigen. Die Änderung betraf zahlreiche Treiber und erforderte Anpassungen in über 1000 Dateien des Kernel-Baums und zog zahlreiche architektur-spezifische Änderungen nach sich.
Die Wireless Extensions wurden auf die Version 21 aktualisiert – ein größeres Kompatibilitätsproblem im Zusammenhang mit älteren Versionen der WLAN-Userspace-Tools wurde während der Testphase gefunden und behoben. Erstmals unterstützt der Kernel Atmels AVR32-Architektur. Darüber hinaus gab es noch zahlreiche weitere Verbesserungen an anderen Bereichen der Kernel-Infrastruktur; etwas bei SELinux, beim RCU (Read Copy Update), der Speicherverwaltung generell sowie Optimierungen für Numa-Systeme.