Kernel-Log
Gut zwei Wochen nach Freigabe von Linux 2.6.17 hat Linus Torvalds Anfang Juli mit 2.6.18-rc1 die erste Vorabversion der nächsten Kernel-Version veröffentlicht. Mittlerweile liegt schon der rc2 mit einigen Fehlerkorrekturen auf den Servern.
- Thorsten Leemhuis
Ab der Freigabe von 2.6.18-rc1 wollen sich die Kernel-Entwickler auf die Beseitigung von Fehlern konzentrieren. Die wichtigsten Neuerungen in 2.6.18 dürften daher schon im rc1 enthalten sein. Revolutionäre Änderungen gibt es kaum, wohl aber zahlreiche verbesserte oder neue Treiber und grundlegend überarbeitete Subsysteme.
So unterstützt das Netfilter-Framework zum Aufsetzen von Firewalls nun Connection Tracking beim unter anderem für VoIP verwendeten SIP (Session Initiation Protocol). Das verbesserte NFS unterstützt jetzt unter anderem Direct I/O (O_DIRECT); CIFS kann nun mit alten SMB-Servern kommunizieren, die noch mit unverschlüsselten Passwörtern arbeiten (OS/2, Windows 95).
Der neue Kernel unterstützt die beispielsweise zur Optimierung von Gigabit-Ethernet-Netzwerk-Transfers eingesetzte I/O Acceleration Technology (I/O AT) in Intels neuen Server-Chipsätzen. Das neue Generic Segmentation Offload (GSO) soll den Durchsatz auf Netzwerk-Hardware verbessern, die TCP Segmentation Offload (TSO) - das Aufteilen großer Datenpakete durch den Netzwerk-Chip - nicht beherrscht.
Innenleben
Zahlreiche Verbesserungen sind beim Prozess-Scheduler zu vermelden, darunter die Erweiterung SMPnice, die Prozesse mit unterschiedlicher Priorität gerechter auf mehrere Prozessoren verteilt. Bei Dual-Core-/Mehrprozessorsystemen lassen sich die Aufgaben bei geringer Systemauslastung so verteilen, dass ein Prozessor oder Core arbeitet und der andere im Stromsparmodus bleibt. Mittels Page Migration kann der Kernel auf NUMA-Systemen Speicherbereiche gemeinsam mit Prozessen zwischen den Nodes verschieben, sodass Prozess und Speicher auf einem Node bleiben. Als Standard-IO-Scheduler kommt nun CFQ zum Einsatz.
Eine Verbesserung beim Locking namens Priority Inheritance (pi-futex) soll die seltene „Priority Inversion“ verhindern, bei der ein Prozess mit niedriger Priorität andere ausbremsen und ein System sogar zum Stillstand bringen kann - ein solches Problem in VxWorks beim Mars-Rover „Pathfinder“ ließ sich nur durch einen Neustart lösen. Der für Debug-Zwecke vorgesehene „Runtime locking correctness validator“ (lockdep) kann beim Aufspüren von Locking-Problemen helfen.
Die neue „Clocksource Infrastructure“ implementiert ein generisches Interface zur Abfrage der aktuellen Zeit im Kernel, das die älteren architekturspezifischen Lösungen ersetzt. Ein neues generisches IRQ-Subsystem vereinheitlicht das IRQ-Handling auf allen Architekturen. Auf I/O-Speicherbereiche und -Ports kann jetzt mit 64-Bit-Werten zugegriffen werden. Auch für Hardware-Zufallszahlengeneratoren wurde ein generisches Subsystem entwickelt, das diverse Mainboard- und Netzwerkchips von AMD, Broadcom, Intel und VIA unterstützt.
Treiber
2.6.18 enthält zahlreiche neue Treiber: smsc für LAN83C185-Chips von SMSC, zd1211rw für den ZyDAS ZD1211 WLAN-Chip, pvrusb2 für Hauppauges WinTV PVR USB2. Ebenfalls neu sind die Module lm70 und abituguru für die Monitoring-Chips LM70 von National Semiconductor und Abits µGuru. Der Treiber hptiop für die RocketRAID-Modelle 3220/3320 stammt vom Hersteller HighPoint selbst. Zahlreiche LAN- und WLAN-Treiber wurden aktualisiert und können jetzt mit neuer Hardware wie Intels ICH8 umgehen. Auch im ACPI-Bereich gab es zahlreiche Neuerungen, etwa den neuen Treiber dock für über ACPI kontrollierte Docking Stations.
Die Sound-Treiber (Stand: Alsa 1.0.12rc1) unterstĂĽtzen die Audigy4 oder ATIs neue Southbridge RS600. Mit snd-aoa ist ein neuer Treiber fĂĽr verschiedene Apple-Systeme hinzugekommen. Das ĂĽberarbeitete HD-Audio-Modul snd-hda-codec kann dank einiger Workarounds mehr Hardware korrekt ansteuern, etwa die Soundchips in Lenovos Thinkpad X60/T60/Z60 und im Apple Mac Mini.
Stark überarbeitet wurde der Treiber pwc, der nicht nur mehr Webcams als zuvor kennt, sondern erstmals auch direkt die für höhere Auflösungen benötigte Dekompression des Datenstroms beherrscht. Größere Änderungen auch bei den SATA-Treibern: Sie beherrschen nun Hotplug und das bei vielen neueren Festplatten und SATA-Controllern mögliche Native Command Queueing (NCQ). Neu ist die Unterstützung für VIAs VT8251 sowie einige Jmicron- und Nvidia-Chipsätze im AHCI-Treiber, wobei NCQ bei den VIA-Chips aufgrund von Problemen deaktiviert bleibt.
Die Framebuffer-Treiber können nun mit den Chipsätzen Intel 945G/GM und Nvidia GeForce 6100/6150 umgehen. Der neue Framebuffer-Treiber imacfb arbeitet mit Intel-basierten Macintosh-Systemen zusammen. Der Treiber sdhci für die häufig in Notebooks zu findenden SD-Kartenleser erfuhr zahlreiche Änderungen: Der Entwickler hat ihn an die Spezifikation angepasst, die die SD Card Association nach jahrelanger Geheimhaltung kurz nach Aufnahme des ursprünglich per Reverse Engineering entstandenen Treibers in 2.6.17 veröffentlicht hatte.
AuĂźenwelt
Die normalerweise unter /usr/include/linux/ liegenden Header-Dateien des Kernels fĂĽr System-Bibliotheken und Hardware-nahe Programme wurden ĂĽberarbeitet und dabei von ĂĽberflĂĽssigem Ballast befreit. Sie las-sen sich jetzt mit make headers_install installieren, wobei das Installations-Skript gleich alle nur fĂĽr den Kernel relevanten Abschnitte entfernt.
Die Dokumentation beschreibt nun, welche ABIs (Application Binary Interfaces) zum Userspace dauerhaft erhalten bleiben, welche sich noch in der Entwicklung befinden und welche ĂĽber kurz oder lang entfernt werden sollen. Das mit Kernel 2.4 eingefĂĽhrte, zuletzt aber kaum noch gewartete Device-Filesystem devfs wurde komplett ĂĽber Bord geworfen.
Für 2.6.19 planen die Entwickler, zahlreiche vom Kernel selbst nicht verwendete, aber exportierte APIs zu entfernen. Dazu werden diese Schnittstellen jetzt temporär mit EXPORT_UNUSED_SYMBOL oder EXPORT_UNUSED_SYMBOL_GPL gekennzeichnet. Das Laden eines Moduls, das diese APIs nutzt, führt dann zu einer Warnung, was Entwicklern externer Treiber Zeit zum Anpassen ihres Codes oder für ein Veto lässt. (odi)