Die Neuerungen von Linux 2.6.23

Seite 2: Die Neuerungen von Linux 2.6.23

Inhaltsverzeichnis

Ferner lässt sich PAE nun unabhängig von HIGHMEM64G aktiveren – etwa um den No-Execute-Speicherschutz ("NX-Bit") nutzen zu können, ohne das in 32-Bit-x86-Kerneln Overhead zur Verwaltung von mehr 4 GByte Arbeitsspeicher entsteht. Die Entwickler integrierten ferner Unterstützung für die K10-Architektur der kürzlich vorgestellten Quad-Code-Prozessoren von AMD.

Der in Assembler geschriebene Code zur Initialisierung von x86- und x86_64-Systemen wurde mit 2.6.23 durch C-Code ersetzt. Der soll einfacher wartbar sein als der bisherige Assembler-Code – auf exotischen Konfigurationen oder Hardware-Komponenten dürfte sich mit dem neuen Code aber möglicherweise noch der ein oder andere Bug zeigen. So gibt es ein bekanntes Problem mit Grub vor 0.93 – so alte Grub-Versionen dürfte aber nur noch eher älteren Linux-Distributionen beiliegen, denen auch andere für aktuelle Kernel nötige Dinge fehlen.

Ebenfalls erstmals enthalten ist UIO (Userspace-I/O, ehemals Industrial-I/O) – ein Framework für Treiber, bei dem der Kernel einen Teil der Hardware-Ansteuerung einem im Userspace arbeitenden Programm überträgt. Da der Kernel diese Schnittstelle explizit für normale Software freigibt, müsste der Userspace-Teil laut UIO-Dokumentation genau wie andere unter Linux laufenden Software nicht unter unter einer GPL2-kompatiblen Lizenz stehen. Ganz so einfach soll das ganze laut Alan Cox jedoch nicht sein.

In erster Linie sollen UIO-Treiber wohl proprietäre Treiber aus dem Embedded-Bereich ersetzen, die deren Entwickler häufig weder offenlegen noch über mehrere Kernel-Versionen hinweg pflegen. DMA-Transfer ermöglicht UIO bislang nicht; es eignet sich daher nicht, um große Datenmengen schnell mit dem Kernel auszutauschen, und ist so für Grafik- oder Storage-Treiber untauglich. Die Probleme mit proprietären Treibern für Grafikkarten wird UIO also erst einmal nicht lösen können.

Ferner wurden die "On-demand readahead" Patches aufgenommen. Sie ersetzen den bisher für das spekulative vorausschauende Lesen nötigen Code, sollen aber einfacher im Aufbau und flexibler für Verbesserungen sein. Derzeit bietet der neue Code in ungefähr die gleiche Performance wie der alte; zukünftige Erweiterungen sollen einen Performance-Vorteil bieten. Mehr Geschwindigkeit und bessere Platzierung der Dateien auf dem Datenträger sollen Verbesserungen an XFS und Ext4 bringen – letzteres bleibt aber weiterhin als experimentelles Dateisystem gekennzeichnet und dürfte vor der Fertigstellung noch zahlreiche weitere Änderungen über sich ergehen lassen müssen.

Dank USB-Persist sollen die Treiber jetzt auch nach einem Ruhezustand ein USB-Gerät weiter ansprechen, als sei nichts gewesen – wichtig für ins Dateisystem eingehängte USB-Datenträger, die sich durch die vorübergehende Stromunterbrechung sonst verwirren lassen. Der Ansatz von USB-Persist ist unter den Entwicklern aber umstritten; das Feature ist daher als experimentell gekennzeichnet und der Informationstext in der Kernel-Konfiguration warnt explizit über die möglichen Gefahren der Technik.

Bleibt das Display beim Aufwachen aus dem Suspend-to-RAM (ACPI S3) dunkel, kann der Kernel zukünftig die Fehlersuche erleichtern und durch einen Piepton deutlich machen, dass er aus dem Schlafmodus vom System wieder erweckt wurde. Ferner gab es – wieder einmal – einige interne Umstrukturierungen im Standby- und Hibernate-Handling. Beim Mounten einen CIFS-Dateisystems lassen sich die Unix Extensions nun deaktivieren – etwa wenn die lokalen Gruppen- und Benutzer-IDs nicht mit denen auf dem Server übereinstimmen.

Wenn der Kernel einen Fehler ("OOPS") feststellt, markiert er sich in Zukunft selbst als tainted – jeder Fehler kann Seiteneffekte nach sich ziehen, die im Kontext dieses Fehlers nicht mehr zu debuggen sind. Der mit 2.6.22 eingeführte SLUB-Allocator ist nun der Standard-Memory-Allocator. Dank der im Rahmen der "Memory fragmentation avoidance patches" eingezogenen Veränderungen kann der Kernel nun manche Speicherblöcke im Arbeitsspeicher verschieben und so auch nach längerem Betrieb wieder größere zusammenhängende freie Speicherbereiche schaffen.

Ein Dokument im Kernel-Tree erklärt nun explizit, wie Programme über das Sysfs am besten Informationen abgreifen, ohne aufgrund von Änderungen mit zukünftigen Kernel-Versionen in Probleme zu laufen. Im Chaos um die Bezeichnungen für 32- und 64-Bit-Architekturen mit x86-Befehlssatz bezeichnen die Entwickler die vormals als IA-32 geführte 32-Bit-x86-Architektur nun x86-32 – die mit 64-Bit-x86-Ausfürhungen AMD64 und IA32e/EM64T laufen weiterhin als x86-64. Erstmals direkt im Kernel enthalten sind auch japanische und chinesische Übersetzungen einiger grundlegender Dokumente der Kernel-Dokumentation. Die Kernel-Ausgaben selbst oder sich häufiger ändernde Dokumentation sollen hingegen nicht übersetzt werden, da diese sich laut zahlreichen Entwickler nur schwer würde aktuell halten lassen.

Nicht nur anhand der PCI-IDs, sondern auch mit Hilfe der DMI-Informationen kann der Kernel in Zukunft zusammen mit Udev die für das jeweilige System zuständigen Module anfordern. Dadurch sollen dann etwa Notebook-spezifische Treiber wie asus-laptop oder thinkpad_acpi auf den von ihnen unterstützten Geräten automatisch laden.

Neben all diesen Änderungen an der Infrastruktur gab es zahlreiche weitere bei den Treibern; für 2.6.24 stehen zudem schon wieder zahlreiche neue Patches bereit – darunter eine massive Unordnung im Sourcecode für die x86- und x86-64-Architektur. [Weiter: Treiber, 2.6.24 und danach]