Die Neuerungen von Linux 2.6.22

Zu den wichtigsten der zahlreichen Neuerungen zählen neue WLAN- und FireWire-Stacks, Unterstützung für die Blackfin-CPU-Architektur, ein Treiber für verschiedene Hauppauge WinTV-PVR-Modelle sowie eine Vielzahl neuer und überarbeiteter Treiber.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 18 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis
Linux in Zahlen
Linux-
Version
Entwicklungs-
zeitraum
Diffstat
2.6.1894 Tage8972 files changed, 381890
insertions(+), 217058 deletions(-)
2.6.1971 Tage8040 files changed, 515161
insertions(+), 291784 deletions(-)
2.6.2066 Tage5825 files changed, 262475
insertions(+), 136162 deletions(-)
2.6.2180 Tage6568 files changed, 319232
insertions(+), 175247 deletions(-)
2.6.2274 Tage7620 files changed, 519591
insertions(+), 266699 deletions(-)

Nach rund zehneinhalb Wochen Entwicklungszeit hat Linus Torvalds heute die Linux-Version 2.6.22 freigegeben. Die Änderungen sind wie in der 2.6-Entwicklung üblich sehr umfangreich und ziehen sich durch die verschiedensten Bereiche des Linux-Kernels. So kamen einige neue Treiber hinzu, viele andere wurden überarbeitet und dabei um Unterstützung für neue Hardware erweitert. Aber auch an der Infrastruktur machten sich die Entwickler fleißig zu schaffen. Ein neuer WLAN-Stack soll zukünftig Basis-Funktionen für verschiedene WLAN-Treiber bereitstellen; dem bisherigen FireWire-Stack wurde ferner ein komplett neuer zur Seite gestellt, der den alten langfristig ersetzen soll. Doch auch das sind nur die herausragendsten aus zahlreichen Änderungen in Linux 2.6.22 – über die wichtigsten bietet der folgende Artikel einen groben Überblick und gibt am Ende einen Ausblick der für 2.6.23 anstehenden Änderungen.

Oft werden die Hersteller von WLAN-Hardware für den eher schlechten WLAN-Support unter Linux verantwortlich gemacht, da viele die Spezifikationen ihrer Hardware teilweise oder komplett unter Verschluss halten. Diese Kritik ist nicht unberechtigt, doch auch die Linux-Entwickler sind nicht ganz unschuldig an der Situation: Ein von der Mehrzahl der Entwickler akzeptiertes generisches Framework für WLAN-Treiber fehlte; das war eine der Ursachen, warum dem Linux-Kernel nur wenige WLAN-Treiber beiliegen.

Langfristige Besserung soll nun der in 2.6.22 integrierte neue WLAN-Stack Mac80211 bringen. Er stellt zahlreiche Basis-Funktionen für WLAN-Treiber bereit, auf die Entwickler bei der Programmierung zurückgreifen können – sie können sich daher beim Schreiben des Treibers weitgehend auf die Ansteuerung der jeweiligen Hardware konzentrieren und müssen nicht für Standardaufgaben das Rad jedes mal wieder neu erfinden.

Dem Anwender bietet Mac80211 in der in Version 2.6.22 enthaltenen Form jedoch kaum Vorteile, da die Linux-Hacker noch keine auf den neuen Stack aufsetzenden Treiber integriert haben. Daher profitieren von der Mac80211-Integration zunächst vor allem Entwickler, die solche Treiber entwickeln, und Anwender, die die Treiber manuell einfügen oder separat kompilieren. Distributionen wie Fedora 7 und Ubuntu 7.04 enthalten Mac80211 inklusive einiger darauf aufsetzende Treiber allerdings bereits; ferner arbeiten verschiedene Entwicklergruppen darauf hin, ihre Mac80211-basierten Treiber zur Aufnahme in den offiziellen Kernel fit zu machen. Dazu zählen etwa eine auf den neuen Stack portierte Variante des bcm43xx-Treibers für Broadcom-WLAN-Hardware, der rt2x00-Treiber für verschiedene Ralink-Chips oder p54 für Prism-Hardware; gute Chancen auf eine baldige Integration hat ferner der rtl8187-Treiber für Realtek-USB-Chips.

Auch die ohne proprietären Userspace-Daemon arbeitender Treiber des iwlwifi-Projekts für die in aktuellen Centrino-Notebooks zu findenden WLAN-Module PRO/Wireless 3945ABG und Wireless WiFi Link 4965AGN fußen auf dem neuen WLAN-Stack. Damit setzt auch Intel auf den neuen Stack, obwohl die Entwickler des Prozessor- und Chipsatzherstellers vorher maßgeblich an dem bisherigen, auch als IEEE802-Subsystem bezeichneten WLAN-Stack mitgearbeitet hatten. Ihn hatten die Linux-Entwickler im Oktober 2005 in Linux 2.6.14 aufgenommen; bei den Treiber-Entwicklern fand der auf dem HostAP-Code basierende Stack allerdings eher mäßigen Anklang, sodass sie statt einer Weiterentwicklung des IEEE802-Subsystems die Programmierung von Mac80211 auf Basis eines zuvor von Devicescape unter der GPL freigegeben WLAN-Stacks beschlossen.

Angesichts der zahlreichen Treiber, die bereits jetzt auf dem neuen WLAN-Stack aufsetzen, scheinen die WLAN-Treiber-Entwickler diesen Weg mitzutragen; wenn den genannten und vielleicht noch einigen weiteren Treibern die Integration in den Kernel gelingt, dann dürfte sich die seit langem problematische Situation rund um WLAN-Treiber für Linux langsam verbessern.

Neben dem neuen WLAN-Stack nahmen die Kernel-Hacker auch eine abgespeckte Version des parallel entwickelten und von Mac80211 vorausgesetzten neue WLAN-Konfigurations-Interface Cfg80211 auf. Es soll zusammen mit passenden Userland-Tools in Zukunft statt der bisher zur Konfiguration von WLAN-Hardware genutzten Wireless Extensions zum Einsatz kommen.

In Version 2.6.22 ist auch der von Grund auf neu entwickelte FireWire-Stack Juju enthalten. Er soll einige der Limitierungen des weiterhin enthaltenen alten FireWire-Stacks sowie der darauf aufsetzenden Treiber ausräumen und beide langfristig ersetzen. Der neue Stack unterstützt alle gängigen FireWire-Funktionen und wird in Fedora 7 bereits eingesetzt. Einige seltener genutzte Funktionen wie etwa Ethernet via IEEE1394 beherrscht Juju aber derzeit nicht; auch mit einigen Anwendungen gibt es wohl noch Schwierigkeiten.

Der neue SLUB allocator soll langfristig die Allokation und Verwaltung von Kernel-Speicher übernehmen und dabei weniger Overhead aufweisen als der bisher für die Aufgaben zuständige SLAB allocator. Dadurch soll SLUB nicht nur generell mehr Performance bieten, sondern insbesondere auf großen Systemen besser skalieren. Langfristig soll der SLUB den SLAB allocator ersetzen. Fürs erste bleibt der Neuling jedoch optional; man muss ihn beim Compilieren explizit aktivieren. Mehr Performance mit vielen Threads gerade auf großen Systeme versprechen auch die neuen Private Futexes, die das Thread-Locking optimieren – nutzen lässt sich die Technik allerdings erst mit Änderungen an der Glibc.

Für einen Großteil der neuen Zeilen in 2.6.22 ist die erstmals enthaltene Unterstützung für die im Embedded-Bereich eingesetzten Blackfin-CPUs von Analog Devices verantwortlich. Durch diese Neuerung unterstützt Linux nun eine weitere Prozessor-Architektur; ferner enthält die neue Kernel-Version auch erstmals speziellen Code für die ARM-CPU-Familie Micrel/Kendin KS8695. Auch die Unterstützung der Playstation 3 wurde weiter verbessert; einige für den Betrieb nötige Treiber fehlen zwar weiterhin, haben aber Chancen, in 2.6.23 aufgenommen zu werden. In verschiedenen Bereichen wie bei Oprofile und dem Powernow-Treiber integrierten die Entwickler indes bereits Code, damit der Kernel mit der nächsten Generation von AMD-Prozessoren (Revision H) zusammenarbeitet.

Auch Windows Vista hatte Auswirkungen auf den Linux: Die Kernel-Entwickler überarbeiteten den LDM-Treiber, damit er mit den dynamischen Datenträgern von Microsofts aktuellem Betriebssystem zurechtkommt. Erstmals enthalten ist UBI (Unsorted Block Images) – eine Art LVM für Flash-Speicher, die besser auf die Besonderheiten dieser Speicherart abgestimmt ist.

Dank aufschiebbarer Timer kann der Kernel mit dem Abarbeiten anstehender, aber nicht zeitkritischer Arbeiten einfach bis zum nächsten Aufwachen der CPU aus dem Schlafmodus warten; das soll zusammen mit den bei 2.6.21 aufgenommen Dynmic Ticks die Leistungsaufnahme senken. Verhältnismäßig wenige Neuerungen gab es diesmal im ACPI-Subsystem. Eine von ihnen verändert das Verhalten bei der Identifikation des Kernels gegenüber dem ACPI-Interpreter; dadurch verleugnet sich Linux nun selbst und behauptet, kein Linux zu sein. Das lässt sich über den Kernel-Parameter acpi_osi aber wieder umkehren; über ihn kann man bei Angabe einer Option wie acpi_osi="!Windows 2006" nun zudem den Kernel vorgeben lassen, nicht zu Windows Vista kompatibel zu sein. 2.6.22 deaktiviert zudem nun genau wie Vista MSI (Message Signaled Interrupt), wenn die ACPI FADT es fordert. Ferner schaltet der neue Kernel MSI auch bei einigen ATI-Southbridges aufgrund von Chipsatzbugs aus.

Auch auf der x86_64-Architektur lässt sich Linux ab Version 2.6.22 nun als relocatable übersetzen – Distributoren müssen daher in Zukunft keine speziellen Kernel-Varianten für kexec und kdump mehr ausliefern. Im CIFS-Dateisystem gab es zahlreiche Verbesserungen – neben Unterstützung für IPv6 ist die Möglichkeit neu, Client-seitig User- und Gruppen-IDs zu manipulieren, falls die IDs des Servers nicht mit den lokalen übereinstimmten.

Überarbeitet wurde der CFQ-I/O-Scheduler, der einige Ideen aus dem CFS (Completely Fair Scheduler) übernimmt. Im zuletzt viel diskutierten Suspend-Framework wurde der Hibernate-Code vom Suspend-Code getrennt, was einen der größten Kritikpunkte ausräumt. Die Virtualisierungslösung KVM (Kernel based Virtual Machine) erfuhr zahlreiche kleinere Veränderungen; dadurch soll KVM nun schneller arbeiten und 32-Bit-Vista unterstützen. Zur Kernel-internen Verwaltung von grafischen Ausgabegeräten wurde eine Display Class kreiert. Rausgeschmissen wurde hingegen veralteter Code, der sich um das Connection Tracking bei IPv4 kümmerte; diesen Job übernimmt alternativ eine bereits seit längerem im Kernel enthaltene, Layer-3-unabhängige Implementierung. Auch der Code zum parallelen Suchen nach PCI-Hardware wurde wieder entfernt; im USB-Subsystem verbesserten die Entwickler das Power-Management von USB-Geräten zur Laufzeit.

Die bislang erwähnten Neuerungen sind jedoch nur die größten Änderungen unter den rund 6000 verschiedenen Patches, die in 2.6.22 Einzug fanden. So gab es noch reichlich neue und aktualisierte Treiber, die die Hardware-Unterstützung verbessern; und auch für die nächste Kernel-Version liegen schon wieder zahlreiche Patches mit kleineren und größeren Änderungen bereit.

Weiter: Neue und aktualisierte Treiber und Ausblick auf 2.6.23