Die wichtigsten Neuerungen von Linux 2.6.18

Test & Kaufberatung | Test

Mit Linux 2.6.18 gaben die Entwickler wieder eine größere Kernel-Überarbeitung frei, die mit Verbesserungen am Prozess-Scheduler und den SATA-Treibern sowie zahlreichen renovierten oder neuen Subsystemen und Treibern wieder zahlreiche Neuerungen bringt.

Nach drei Monaten Entwicklungszeit hat Linus Torvalds mit dem Kernel 2.6.18 die wieder eine größere Überarbeitung von Linux freigegeben. Damit dauerte es bis zur Fertigstellung etwas länger als die normalerweise anvisierten acht Wochen – die dreiwöchige Auszeit des Linux-Vaters ist daran wohl mit Schuld.

Die zahlreichen Neuerungen der jüngsten Kernel-Version dürften die meisten Anwender nicht direkt spüren, da Änderungen wie diejenigen am Scheduler und den Locking-Mechanismen eher unbemerkt unter der Haube ihren Dienst ableisten. Wie mit jeder Kernel-Version gab es aber zahlreiche in der Summe bedeutsame Detailverbesserungen, einen Haufen neuer und überarbeiteter Hardware-Treiber und einige teilweise komplett renovierte und verbesserte Subsysteme.

So unterstützt das Netfilter-Framework zum Aufsetzen von Firewalls nun Connection Tracking beim für IP-Telefonie verwendeten Protokoll SIP (Session Initiation Protocol). Der Netfilter-Code für das Protokoll H.323 beherrscht nun zudem Call Forwarding. Im NFS-Bereich gab es zahlreiche Verbesserungen wie etwa Unterstützung für Direct I/O (O_DIRECT). Erstmal bietet der Kernel 2.6.18 Intels in neuen Server-Chipsätzen vorhandene I/O Acceleration Technology (I/O AT), die etwa die zur Optimierung von Gigabit-Ethernet-Netzwerk-Transfers dient. Das neue Generic Segmentation Offload (GSO) soll den Durchsatz auf Netzwerk-Hardware verbessern, die TCP Segmentation Offload (TSO) nicht beherrschen.

Die normalerweise unter /usr/include/linux/ liegenden Header-Dateien des Kernels für System-Libraries und hardwarenahe Userspace-Programme wurden überarbeitet und von unnötigem Ballast befreit. Sie lassen sich jetzt mit "make headers_install" installieren, wobei das Installationsscript gleich alle ausschließlich für den Kernel relevanten Abschnitte entfernt.

Die Dokumentation beschreibt nun, welche ABIs (Application Binary Interfaces) zum Userspace verlässlich sind, welche sich noch in einer Test- und Entwicklungsphase befinden und welche über kurz oder lang entfernt werden sollen. Als Standard-IO-Scheduler kommt nun CFQ zum Einsatz. Das Dateisystem JFFS2 unterstützt jetzt die etwa für SELinux benötigten Extended Attributes (EAs). CIFS kann zudem mit SMB-Servern kommunizieren, die noch mit unverschlüsselten Passwörtern arbeiten – etwa OS/2 oder Windows 95. Das schon lange nicht mehr gepflegte SMBFS gilt jetzt auch offiziell als ungewartet und dürfte – nun da CIFS weitgehend alles kann, was auch der SMBFS beherrscht – über kurz oder lang aus dem Kernel getilgt werden. So erging es auch dem kaum noch gepflegten Device-Filesystem devfs, das nach diversen Diskussionen in den vergangenen Monaten nach ersten Vorbereitungen bei 2.6.17 mit 2.6.18-RC1 komplett über Board geworfen wurde.

Zahlreiche Verbesserungen beim Prozess-Scheduler kamen hinzu; unter ihnen auch die Erweiterung SMPnice, die bei Prozessen mit unterschiedlicher Priorität für eine gerechtere Verteilung auf Multiprozessorsystemen sorgen soll. Eine andere Neuerung ermöglicht dem Scheduler bei Dual-Core/Mehrprozessorsystemen, die Prozesse bei geringer Systemauslastung so zu verteilen, dass ein Prozessor oder einer der Kerne die Arbeit macht, während der andere weiter im Stromsparmodus verbleibt.

Schon mit der nächsten Kernel-Version wollen die Entwickler zahlreiche vom Kernel selbst nicht verwendete, aber exportierte Schnittstellen entfernen. Dazu kennzeichnen sie diese APIs temporär mittels EXPORT_UNUSED_SYMBOL oder EXPORT_UNUSED_SYMBOL_GPL. Das führt zu einer Warnung beim Laden des Moduls. Diese Vorgehensweise gibt Entwicklern externer Treiber genug Zeit zum Einlegen eines Vetos oder ihren Code anzupassen.

Inotify erhielt ein Kernel-internes-API, sodass auch Kernel-Module Inodes überwachen können; das bestehende Userland-API bleibt und erhält eine eigene Konfigurations-Option. Der Quellcode für die Software-RAID-Unterstützung von RAID 5 und RAID 6 wurde zu weiten Teilen zusammengelegt, um die Wartung zu vereinfachen.

Mittels Page Migration gelingt es dem Kernel 2.6.18, etwa auf NUMA-Systemen Speicherbereiche zwischen den Nodes schnell zu bewegen. So kann der Speicher einem auf eine andere Node verschobenen Prozess folgen und ist dort für den Prozess schneller im Zugriff als bei einer Abfrage über einen anderen Node.

Ein neues generisches IRQ-Subsystem soll zahlreiche Verbesserungen bieten und vereinheitlicht das IRQ-Handling auf allen Architekturen. Die sogenannten "64-bit resources" ermöglichen den Zugriff auf I/O-Speicherbereiche und -Ports mit 64-Bit-Werten. So gelingt der Zugriff auf mit 32-Bit-Variablen nicht mehr erreichbaren I/O-Bereiche. Ein Attribut im sysfs-Zweig für PCI-Geräte ermöglicht das (de)aktivieren eines Gerätes sowie den Zugriff auf Informationen, ob ein Gerät ein- oder ausgeschaltet ist – das ist etwa für den X-Server interessant, der mit dieser Funktion beispielsweise das zweite logische Device einer Grafikkarte nachträglich aktivieren kann. Das im Kernel 2.6.17 hinzugekommene Neuerung "SMP Alternatives" arbeitet nun auch unter x64-Kerneln – ein Teil von ihr wurde jedoch kurz vor der Freigabe der neuen Version sowohl für x86- als auch x64-Systeme wieder entfernt.

Verbesserungen gab es erneut bei den Locking-Mechanismen: Priority inheritance (pi-futex) soll die seltene "priority inversion" vermeiden, bei dem ein Prozess mit niedriger Priorität andere Ausbremsen kann oder ein System sogar zum Stillstand zu bringen vermag – ein solches Problem hatte vor Jahren beim Mars-Rover "Pathfinder" erst durch einen Neustart gelöst werden können.

Der für Debug- und Test-Kernel vorgesehene "Runtime locking correctness validator" (lockdep) kann beim Aufspüren von Locking-Problemen helfen, die im normalen Betrieb zu Störungen führen könnten. Nach recht langer Entwicklungszeit wurde auch die "Clocksource Infrastructure" aufgenommen. Sie implementiert ein generisches Interface zur Abfrage der aktuellen Zeit im Kernel, das im Unterschied zu den vorherigen, meist architekturspezifischen Lösungen vieles vereinheitlicht.

Auch für Hardware-Zufallszahlengeneratoren kam ein generisches Subsystem hinzu. Die alten separat gewarteten Treiber wurden entfernt und durch auf das neue API aufsetzende Module ersetzt. Sie unterstützen diverse Mainboard- und Netzwerkchips von AMD, Broadcom, Intel und VIA.

Der Kernel 2.6.18 bringt zahlreiche neue Module für bisher nicht direkt unterstützte Hardware mit, etwa smsc für LAN83C185-Chips von SMSC oder den DVB-Treiber 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 von Highpoint selbst entwickelter Open-Source-Treiber hptiop für die RocketRAID-Modelle 3220/3320 kam hinzu – bisher war das Unternehmen zumeist durch Closed-Source-Treiber aufgefallen.

Bei den im Kernel bereits seit längerem enthaltenen Treibern gab es wie mit jeder größeren Kernelversion zahlreiche Neuerungen: Die Sound-Treiber sind nun etwa auf dem Stand von Alsa 1.0.12rc1 und unterstützen damit die Audigy4 oder ATIs neue Southbridge RS600. Mit snd-aoa ist ein neuer Treiber für verschiedene Apple-Systeme dabei. Im HD-Audio-Modul snd-hda-codec kamen einige Workarounds für zahlreiche Notebooks und Systeme hinzu, damit etwa die Soundchips in Lenovos Thinkpad X60/T60/Z60 oder im Apple Mac Mini korrekt arbeiten.

Stark überarbeitet wurde der Treiber pwc, der nicht nur mehr Webcams als zuvor unterstützt, sondern erstmals auch direkt die für höhere Auflösungen benötigte Dekompression des Datenstroms beherrscht – um diese früher durch ein externes Programm ermöglichte Funktion hatte es wegen Lizenzunklarheiten vor einigen Monaten Streitigkeiten gegeben. Eine größere Überarbeitung gab es auch bei den SATA-Treibern: Sie beherrschen nun Hotplug, auch die Fehlerbehandlung wurde stark verbessert. Zudem unterstützten sie das bei vielen der neueren Festplatten mögliche Native Command Queueing (NCQ), das bei über unterschiedliche Bereiche verstreuten Zugriffen die Geschwindigkeit durch Umändern der Abarbeitungsreihenfolge verbessern kann. Neu ist die Unterstützung für VIAs VT8251 sowie einige Jmicron und Nvidia-Chipsätze im AHCI-Treiber; auf den VIA-Chips bleibt NCQ aber aufgrund von Problemen deaktiviert.

Zahlreiche LAN- und WLAN-Treiber – etwa e1000, forcedeth, r8169, tg3, bcm43xx, ipw2200, hostap – wurden aktualisiert und unterstützen jetzt einige neue Hardware wie Intels ICH8, Realteks RTL8110SBL, noch in Entwicklung befindliche Nvidia-Chipsätze sowie Broadcoms BCM4319 und BCM5786. Neu dabei ist der Treiber zd1211rw für den ZyDAS ZD1211 WLAN-Chip.

Im ACPI-Bereich gab es viele Neuerungen – etwa den Treiber "dock" für über ACPI kontrollierte Docking Stations oder der Support für das bei einigen älteren Notebooks zur Akku-Füllstandsabfrage verwendete Smart Battery System. Der Treiber asus_acpi beherrscht einige neue Modelle und die teilweise auf ACPI-Unterstützung angewiesenen cpufreq-Treiber beherrschen nun die Koordination der P-States bei Dual-Core-Prozessoren.

Der Intel-Framebuffer-Treiber unterstützt nun auch den Chipsatz 945G/GM. Ein neuer Frambuffer-Treiber namens imacfb arbeitet mit Intel-basierten Macintosh-Systemen zusammen.

Der Treiber sdhci für die häufig in Notebooks zu findenden SD-Kartenleser ist stark überarbeitet worden – der Treiber-Entwickler hat ihn an eine Spezifikation des Interfaces angepasst, die die SD Card Association nach jahrelanger Geheimhaltung zufälligerweise kurz nach der Aufnahme des ursprünglich per Reverse Engineering entstandene Treibers in 2.6.17 veröffentlichte.

Zahlreiche weitere Neuerungen kommen hinzu: Der cpufreq-Treiber für 64-Bit-Prozessoren von AMD arbeitet nun mit einigen neue Prozessor-Modellen zusammen. Ein Treiber für Apple Cinema Display ermöglicht dessen Helligkeitseinstellung über Software. Der I2C-Treiber unterstützt nun ATIs Southbridges IXP200/300/400 und die DVB-Treiber Unterstützten einige neue Hardware – darunter Leadteks Winfast DTV2000H oder den Connexant CX2341X MPEG encoder.

Für die nächsten Kernel-Versionen stehen schon wieder zahlreiche Patches Schlange, die teilweise in den experimentellen mm-Entwicklerkerneln von Andrew Morton bereits getestet werden. Darunter finden sich in der aktuellen Version die von Alan Cox vorangetriebenen Integration der Parallel-ATA-Treiber ins libata-Framework und eine damit verbundene Überarbeitung der IDE-Treiber. Für das libata-Framework stehen mit dem von Tejun Heo verbesserten Power-Management-Funktionen und der Port-Multiplier-Unterstützung weitere Änderungen an.

Gute Chancen auf einige baldige Integration scheint auch das Cluster-Dateisystem GFS2 zu haben. Die Entwickler der WLAN-Treiber arbeiten derweil weiter an der Integration des Devicescape-WLAN-Stacks – in den Kernel 2.6.19 dürfte dieser jedoch noch nicht Einzug halten. Langfristig stehen auch die Chancen auf die Integration des reiser4 etwas besser, nachdem sich Andrew Morton dem Reviews des Dateisystems angenommen hat.

Linux 2.6.18 steht ab sofort über kernel.org oder in Kürze auch über dessen deutschen Mirror zum Download bereit. Sämtliche Änderungen listet das ausführliche Changelog – die wichtigen fasst zudem das Kernelnewbies-Wiki übersichtlich zusammen. Es bietet auch die Links zu den jeweils relevanten Änderungen in Quellcode-Verwaltungssystem des Kernels sowie teilweise zu detaillierten Beschreibungen der betroffenen Techniken.