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

Erstmals wird 2.6.22 den ivtv-Treiber für den Conexant cx23415/6 MPEG-Encoder/Decoder mitbringen, den etwa Hauppauge auf den WinTV-PVR-Modellen 150, 250, 350 und 500 einsetzt. Satte vier Jahre habe das laut Patch-Beschreibung gekostet. Neben dem ebenfalls neuen Video-4-Linux-2-Treiber zr364xx für Webcams mit Zoran 364xx-Chips erfuhren zahlreiche andere V4L-Treiber kleinere und größere Veränderungen.

Weitere wichtiger Änderungen bei Treibern
Art
TreiberZuständig fürWichtige Änderungen
Storage
ahciAHCI-ATA-KontrollerZusätzliche PCI-ID für VIA VT8251
pata_hpt3x2n
Highpoint-Chips
Unterstützung für HPT371N
pata_via
VIA-PATA-ControllerZusätzliche PCI-IDs für verschiedene Geräte
sata_mv
Marvell-SATA-Chips Unterstützung für 7042
sata_via VIA-SATA-Controller
Zusätzliche PCI-IDs für verschiedene Geräte
sun_esp Sun ESP SCSI-Adapter Komplette Überarbeitung (Version 2.0)
Netzwerk
bnx2 Verschiedene Broadcom NetXtreme-II-Modelle Unterstützung von 5709 Serdes PHY, Verbesserungen am Suspend-Handling
zd1211rw
WLAN-Hardware mit ZyDas-Chips
Unterstützung von AL7230B RF, Sitecom WL-117, ZyXEL AG-220 und ZyXEL AG-225H v2
Hardware-
Monitoring
hwmon-vid
 VIA-Chipsätze
Unterstützung für VIA Esther
i2c-nforce2
I2C-Interface von nForce-Chipsätzen
Unterstützung für MCP61 und MCP65
ibm-acpi
IBM-Notebooks
Unbenannt in thinkpad-acpi, verschoben und sysfs-Anpassungen
sony-laptopSony-NotebooksVerschiedene wie Bluetooth-Aktivierung, Lüfterregelung und Motion-Eye-Unterstützung
sony-piSony-NotebooksVerweis auf sony-laptop
Grafik und Video
radeonfb
ATI-Radeon-
Framebuffertreiber
Unterstützung für Radeon Xpress 200m
SN9C1xx
V4L2 driver für SN9C1xx PC Camera Controllers
Umfangreichere Änderungen

Das Libata-Framework kann nun korrekt mit Festplatten umgehen, die einen geschützten Bereich (HPA; Host Protected Area) enthalten. Zahlreiche Korrekturen gab es an den noch recht jungen libata-PATA-Treibern; etwa solche die die Master-/Slave-Erkennung oder die ATA-Kabel-Erkennung verbessern sollen. Ferner wurde die Fehlerbehandlung verbessert. Entfernt wurde ein Mechanismus, der die Treiber-Zuständigkeiten für Intel-ATA-Controller regelte – in Zukunft kümmert sich schlicht der zuerst geladene Treiber um das jeweilige Gerät.

Die Alsa-Treiber aktualisierten die Entwickler auf die Version 1.0.14 und integrierten dabei zahlreiche Mainboard- und Notebook-spezifische Workarounds ebenso wie Unterstützung für einige neue HDA-Codecs wie dem ALC662. Bald rausfliegen sollen hingegen einige ältere OSS-Treiber wie i810_audio oder via82cxxx_audio – daran dürfte auch der auf der LKML geäußerte Wunsch eines Entwicklers nichts ändern, nach der vor einigen Wochen erfolgten Freigabe des Open Sound System (OSS) unter der GPLv2 nun doch Alsa wieder aus dem Kernel zu werfen.

Hinzugestoßen sind ferner ein Hardware-Monitor-Treiber für die Temperatursensoren von Intels Core-Prozessoren sowie der Treiber applesmc für den Apple System Management Controller in Macs mit Intel-CPUs. Neu dabei ist ein WLAN-Treiber für die im OLPC-Laptops eingesetzten Libertas-WLAN-Chips von Marvell. ATA-Treiber für ATIs SB700-Southbridge und Nvidia-Chipsätze MCP73 und MCP77 kamen hinzu sowie DRM- und AGPGart-Treiber für Intels Chipsätze G33, Q33, Q35, 945GME und 965GME/GLE. Erstmals enthalten ist auch ein Treiber für ConnectX-InfiniBand-Adapter. Ferner gab es mit arkfb, vmlfb und vt8623fb drei neue Frambuffertreiber für Hardware von ARK Logic, Intel und VIA.

Nach der Veröffentlichung von 2.6.22 startet nun die zirka zwei Wochen lange Phase, in der die Entwickler die größten Änderungen für die nächste Kernel-Version integrieren. Zahlreiche Programmierer haben dafür bereits Patches ausgearbeitet, die Andrew Morton zu Testzwecken zumeist bereits in den von ihm gepflegten mm-Entwicklerkernel integriert hat.

Zu den in den vergangenen Wochen im mm-Kernel getesteten Techniken gehören zwei neue Prozess-Scheduler. Beide versprechen, die zu Verfügung stehenden Prozessorzeit auf faire Weise an die Programme zu verteilen. Zwei mit der selben Priorität um den Prozessor konkurrierende Prozesse sollten daher jeweils 50 Prozent der zur Verfügung stehenden CPU-Zeit bekommen; mit dem bisherigen CPU-Scheduler konnte es passieren, das einer der Prozesse weniger Zeit bekommt.

So wie es derzeit aussieht, wird der Completely Fair Scheduler (CFS) den bisherigen Scheduler ersetzen; beide hat Ingo Molnar entwickelt. Da die Linux-Entwickler zum Ausdruck brachten, nur einen Prozess-Scheduler im Kernel haben zu wollen, zieht der von Con Kolivas entwickelte Staircase CPU Scheduler dann wohl den Kürzeren; dabei setzte er bereits vor CFS auf den fairen Ansatz zur Verteilung der Rechenzeit und inspirierte Molnar zu CFS. Kolivas scheint über diese Entwicklung enttäuscht zu sein; da er wohl auch unzufrieden ist, dass es auch einige andere seiner Ideen es nicht in den offiziellen Kernel geschafft haben, will er sich von der Mitarbeit am Linux-Kernel wohl zurückziehen.

Für die mit 2.6.21 integrierten High Resolution Timer und den darauf aufsetzenden Dynamic Ticks liegen für 2.6.23 zahlreiche Patch bereit, die neben einigen Korrekturen und Verbesserungen auch Unterstützung für x86_64 nachrüsten. Auch bei der Virtualisierungstechniken liegen einige größere Patches für 2.6.23 bereit; so soll es bei KVM wieder einmal einige einige Änderungen geben. Von Xen wollen die Entwickler wohl eine abgespeckte Variante aufnehmen; und auch die Lguest-Programmierer dürfen auf eine Integration ihrer Entwicklung in den nächsten Kernel hoffen.

Ferner wurden Verbesserungen am noch experimentellen ext4-Dateisystem für 2.6.23 vorbereitet; mit LogFS steht zudem ein neues Dateisystem für Flash-Speichermedien bereit. Ob diese beiden und andere Neuerungen wie etwa Utrace den Sprung in 2.6.23 schaffen, muss sich aber erst zeigen. Die Entwickler der SATA-Treiber arbeiten derweil an besserer Unterstützung des Power-Management speziell im AHCI-Treiber; das soll auf einigen Notebooks den Stromverbrauch um ein Watt reduzieren können. Bis diese Verbesserungen in den Standard-Kernel einziehen dürften aber noch einige Monate vergehen. Diskutiert wird auch die Integration des von Novell forcierten Sicherheitsframeworks AppArmor – Andrew Morton spart dabei aber nicht mit Kritik in Richtung des Linux-Distributors und ist noch unsicher, wie er weiter verfahren will.

Einige Entwickler arbeiten an einem neuen Grafiksubsystem für den Kernel. Es soll den Zugriff auf die Grafikkarte einheitlich regeln, bei dem sich bisher Framebuffer-Treiber, Direct Rendering Manager und X-Server beim Zugriff ins Gehege kommen konnten. Auch die Einstellung der Bildschirmauflösung soll das noch in der Anfangsphase befindliche Subsystem übernehmen. Dadurch wäre der Kernel prinzipiell in der Lage, bei einem fatalen Fehler einen "blue penguin of death" mit Fehlerinformationen anzuzeigen. Bislang gilt: Während der X-Server die Kontrolle über die Grafikhardware hat, kann der Kernel bei einem schwerwiegenden Problem allenfalls die LEDs der Tastatur in Panik blinken lassen.

Um die Kernel-Lizenz wurde in den vergangenen Wochen wieder viel diskutiert; über tausend Mails kamen alleine unter dem Subjekt "Dual-Licensing Linux Kernel with GPL V2 and GPL V3" in den vergangenen Wochen über die Linux Kernel Mailing List. So wie es derzeit aussieht, bleibt aber fürs erste alles, wie es ist: Der Linux-Kernel steht unter der GPL-Version 2 und wird nicht auf die Ende Juni erschienene Version 3 der Lizenz umschwenken. So umstritten wie das Thema war, dürften die Kernel-Entwickler und so mancher IANAL aber noch das ein oder andere Mal über das Thema heiß diskutieren. (thl/c't)


Linux 2.6.22 steht ab sofort über kernel.org zum Download bereit; etwa bzip2 komprimiert als Patch gegen 2.6.21 oder als komplettes Archiv. Bald dürften dann auch die deutschen Spiegelserver nachziehen und den Patch sowie das komplette Archiv bereithalten.

Sämtliche Änderungen der neuen Linux-Version listet das detaillierte Changelog auf. Einen gestrafften, aber ausführlichen Überblick über die wichtigen Anpassungen bietet das Kernelnewbies-Wiki. (thl)