Die wichtigsten Neuerungen von Linux 2.6.17
Vergrößern von Software-RAID-5-Arrays im Betrieb, veränderte Exportfunktionen für APIs, Unterstützung für die Niagara-Prozessorarchitektur und zahlreiche neue und aktualisierte Treiber zählen zu den wichtigsten Änderungen bei Kernel 2.6.17.
- Thorsten Leemhuis
Knapp drei Monate Zeit haben sich die Kernel-Entwickler für den heute vorgestellten Linux-Kernel 2.6.17 gelassen und dabei wieder etliche neue Funktionen sowie überarbeitete Treiber und Subsysteme integriert. Zu den größten Neuerungen der als "Crazed Snow-Weasel" getauften Version zählen die nun mögliche Erweiterung eines Software-RAID-5-Arrays um zusätzliche Datenträger im laufenden Betrieb, ein Userspace-Interface für Software-Suspend, veränderte Exportfunktionen für APIs, die in Zukunft nur noch nur für GPL-Code freigegen werden sollen, sowie Unterstützung für die Niagara-Prozessorarchitektur des UltraSPARC T1. Auch eine Vielzahl von Treibern wurde mit jeder neuen Version überarbeitet – größere Änderungen erfuhren insbesondere die Module für Netzwerk-, DVB- und Audio-Hardware. Hinzu kamen Treiber für TPM-1.2-Chips, Broadcom-WLAN (bcm43xx) sowie ein generisches Secure Digital Host Controller Interface zum Ansprechen von SD-Kartenlesern.
Die Unterstützung zum Erweitern eines bestehenden RAID-5-Arrays im laufenden Betrieb ist eine von vielen Nutzern lange erwartete Neuerung. Sie erfordert aktuelle mdadm-Utilities und gilt noch als experimentell. Laut Autor Neil Brown soll die neue Lösung jedoch schon jetzt zuverlässiger arbeiten als das bereits seit längerem existierende raidreconf.
Das mit dem Windows Ruhezustand vergleichbare Software-Supend wurde um ein Userland-Interface erweitert. Das soll die Verlagerung einiger für den Suspend nötigen Vorgänge in den Userspace ermöglichen und so nicht nur die Wartung vereinfachen, sondern auch mehr Flexibilität bieten. Ein Userspace-Programm soll in Zukunft auch wieder die Verschlüsselung des Speicherabbildes ermöglichen – die Kernel 2.6.14 und 2.6.15 konnten dies noch selbst, in 2.6.16 wurde der dafür zuständige Code jedoch wieder entfernt. Um das von vielen Usern als zuverlässiger angesehene Suspend2 ist es vergleichsweise still geworden – die Aussichten auf eine Integration in den Kernel stehen schlecht.
Im vielen Bereichen des Kernels wurde die bei 2.6.16 bereits begonnene Umstellung der Locking-Mechanismen von Semaphoren auf Mutexe weiter fortgesetzt. Der Netfilter-Code zum Aufsetzen von Firewalls bringt nun ein im Rahmen des NATH323-Projekts entwickeltes Modul fĂĽr Connection Tracking und Network Address Translation (NAT) beim Voice-over-IP-Protokoll H.323 mit.
Mit der derzeit x86-spezifischen Neuerung "SMP alternatives" kann der Kernel zur Laufzeit zwischen dem Ein- und Mehrprozessorbetrieb umschalten und so bei Systemen mit einer CPU das zeitraubende Locking für SMP-Systeme umgehen. Interessant ist dieses Feature beispielsweise für Xen, wo man im laufenden Betrieb CPUs zu- und wegschalten kann, oder für Distributoren, die so einen Kernel ausliefern können, der sowohl auf Ein- als auch auf Mehrprozessorsystemen optimale Leistung bringt.
Darüber verzeichnet das Changelog Verbesserungen an den Dateisystemen XFS und ext3, ein neues Subsystem zum Ansteuern von LEDs, ein generisches RTC-Subsystem und Unterstützung von Braille-Geräten im Kernel-Quellcode für Eingabegeräte. Der Task-Scheduler wurde überarbeitet und arbeitet effizienter mit Mehrkern-Prozessoren.
Das erst vor einigen Monaten aufgenommene relayfs wurde stark überarbeitet – vom Dateisystem-Ansatz wurde Abstand genommen, stattdessen kommt nun ein normales API zum Einsatz. Einige Teile des ursprünglich zum dynamischen Erstellen von Device-Dateien vorgesehen devfs wurden aus dem Kernel entfernt – es wurde mittlerweile von Udev abgelöst und wird nicht mehr gewartet. Große Teile von devfs sind weiterhin im Kernel enthalten, aber schon länger nicht mehr ohne manuelle Eingriffe nutzbar.
Über die Freigabe von APIs mittels EXPORT_SYMBOL_GPL_FUTURE wollen die Kernel-Entwickler zukünftig Schnittstellen kennzeichnen, die der Kernel in absehbarer Zeit nur noch über EXPORT_SYMBOL_GPL exportiert – Letztere sind nur für unter der GPL oder kompatiblen Lizenzen stehenden Quellcode legal benutzbar, proprietäre Treiber dürfen solche API-Funktionen nicht verwenden. Die Ankündigung mit EXPORT_SYMBOL_GPL_FUTURE lässt den Treiberherstellern jedoch etwas Zeit, sich rechtzeitig alternative Treiberkonzepte zu überlegen, etwa die Verlagerung des Treibers in den Userspace – oder die Offenlegung der Treiberquellen.
Diese Neuerung verwenden unter anderem schon einige zentrale APIs zur Anbindung von USB-Treibern. Sie waren schon während der Entwicklung von 2.6.16 als EXPORT_SYMBOL_GPL gekennzeichnet. Ein AVM-Mitarbeiter merkte jedoch an, dass dies den Einsatz der Closed-Source-Treiber für AVM-Hardware unterbinden würde und man daher erwäge, den Linux-Support für einige Geräte einzustellen. Die Kernel-Entwickler gaben nach einiger Diskussion die Schnittstellen wieder über einen normalen Export frei. Greg Kroah-Hartman, der den USB-Code verwaltet und einer der treibenden Kräfte hinter der Beschränkung von Kernel-APIs auf GPL-Treiber ist, legte AVM damals jedoch schon nahe, den Treiber in den Userspace zu verlagern. Dazu hat AVM jetzt nun bis Februar 2008 Zeit – dann sollen die entsprechenden Funktionen endgültig als EXPORT_SYMBOL_GPL freigegeben werden.
Treiber
Wie mit jeder neuen Kernel-Version wurden zahlreiche der im Kernel enthaltenen Treiber aktualisiert – die im Folgenden beschriebenen Änderungen dürften zu den wichtigsten zählen. Größere Umbauten gab es etwa beim WLAN-Subsystem. Es integriert jetzt die Wireless Extensions 20 und die SoftMAC genannte Erweiterung für das bestehende IEEE80211-Subsystem. Diese Änderungen ermöglichte auch die Aufnahme des darauf aufsetzenden und auf Basis einer per Reverse-Engineering entwickelten Dokumentation geschriebenen Treibers bcm43xx in 2.6.17. Er eignet sich für die unter anderem in Apple- und Dell-Hardware häufig zu findenden Broadcom-WLAN-Chips, die sich lange Zeit nur mit Ndiswrapper betreiben ließen. Der Treiber für Intels in vielen Centrino-Notebooks zu findenden 802.11b/g wurde im neuen Kernel aktualisiert und erfordert nun eine Firmware der Version 3.0.
Abgeschlossen sind die Änderungen am WLAN-Subsystem damit jedoch nicht: Der von Devicescape entwickelte WLAN-Stack dscape soll – wie es derzeit aussieht – die Nachfolge des jetzigen IEEE80211-Subsystems und der gerade aufgenommenen SoftMAC-Erweiterung antreten und beide wohl langfristig auch ersetzen. Weitere Hintergründe zu den jüngsten Einwicklungen rund um WLAN unter Linux liefert der Artikel "WLAN im Linux-Kernel – Auf dem Weg zur Konsolidierung" auf heise open.
Neu dabei ist ein sdhci-Treiber fĂĽr einige ĂĽber PC-Card-Chips von Texas Instruments und Ricoh ansteuerbare SD-Kartenlesern, wie sie sich in zahlreichen modernen Notebooks finden. Das TPM-Subsystem unterstĂĽtzen nun TPM 1.2; der Treiber tpm_tis soll zudem in Zukunft nach der TPM Interface Specification (TIS) gebaute TPM-Chips ansteuern. Bisher kamen hersteller- oder modellspezifische TPM-Treiber zum Einsatz.
Die Soundtreiber in Linux 2.6.17 sind auf dem Stand von Alsa 1.0.11rc4. Sie bringen unter anderem einige Workarounds für verschiedene Mainboards und Notebooks mit. Darüber hinaus können sie mit mehr AC97- und HDA-Codecs sowie neuen Chipsätzen umgehen – etwa mit ATIs in Kürze erwarteter Southbridge SB600 oder VIAs bereits verfügbarem VT8251. Das Mitte April freigegebenen Alsa 1.0.11 hat es nicht mehr in die neue Kernel-Version geschafft.
Neuerungen gibt es auch bei zahlreichen Netzwerktreibern: So unterstützt der e1000-Treiber nun etwa Intels ESB2 und der tg3-Treiber die Broadcom-Chips 5754, 5755 und 5787. Das Video-4-Linux-Subsystem und die DVB- respektive TV-Treiber können gleich eine ganze Reihe von vorher nicht unterstützter Hardware ansprechen.
Der CPUfreq-Treiber für Athlon-64-Prozessoren kann nun mit den Dual-Core-CPUs besser umgehen. Für die über USB angeschlossenen Siemens Gigaset 307x ISDN und deren Nachfolger kam ein im Rahmen des Projekts gigaset307x entwickelter Treiber in 2.6.17 hinzu. Die Unterstützung für ATAPI-Geräte im libata-Subsystem ist ab 2.6.17 standardmäßig aktiviert. Die AHCI- und IDE-Treiber unterstützten nun ATIs SB600, und im NTFS-Treiber wurden einige Fehler korrigiert; er kann nun auch mit unter Windows XP Service Pack 2 erstellen Sparse-Dateien umgehen.
Entfernt wurde hingegen das von qla2xxx-Treiber abgelöste Modul qlogicfc. Zudem planen die Entwickler, den Treiber eepro100 Anfang 2007 fallen zu lassen; als Ersatz bringt der Kernel schon lange das Modul e100 mit. Verschwinden soll auch /proc/pci. Das weitgehend durch CIFS ersetzte SMBFS zum Zugriff auf Windows- und Samba-Dateifreigaben hat jedoch nach einigen Diskussionen noch eine Gnadenfrist erhalten.
Ausblick
Der aktuelle mm-Entwicklerkernel von Andrew Morton enthält eine Vielzahl von Erweiterungen, die früher oder später in den Standardkernel einziehen dürften – dazu zählt unter anderem das Cluster-Dateisystem GFS sowie ein Serial-Attached-SCSI-Subsystem (SAS) mit einem Treiber für einen SAS-Adapter von Adaptec.
Darüber hinaus hat Morton die seit rund vier Jahren in Entwicklung befindliche klibc (Kernel libc) in seine mm-Serie aufgenommen. Von der Initial-Ramdisk (Initrd) aus laufende Programme sollen diese auf die wichtigsten Funktionen konzentrierte C-Library in Zukunft verwenden. Solche Programme können dann etwa das Einbinden der Root-Partition über NFS übernehmen. Bislang erledigt das noch Code im Kernel; viele Entwickler möchten diese Funktion jedoch in den Userspace verlagern, was neben besserer Wartung mehr Flexibilität und einfacherer Konfiguration verspricht.
Nachdem es einige Erweiterungen und Fehlerkorrekturen am ACPI-Subsystem nicht in den Kernel 2.6.17 schafften, hat sich für die nächste Version ein umfangreicher Patch angesammelt, der eine Menge Änderungen enthält. Noch größer sind die anstehenden Erweiterungen für die SATA-Treiber – sie bringen neben optimierter Handhabung von Hardware- oder Übertragungsfehlern und vielen kleinen Detailverbesserungen auch Unterstützung für Native Command Queueing (NCQ). Einige auf den Entwickler-Mailinglisten veröffentlichte Benchmarks zeigen jedoch, dass NCQ unter Linux manche Zugriffsmuster derzeit sogar verlangsamt.
Eine längere Debatte gab es um die Zukunft des bei vielen Distributionen als Standard-Dateisystem verwendeten ext3: Entwickler von Bull, Red Hat und ClusterFS schlugen auf der Kernel-Mailingliste eine umfangreiche Erweiterung vor, die unter anderem zahlreiche möglicherweise bald von gängigen Systemen erreichte Kapazitätsgrenzen beseitigt und das angestaute Dateisystem in einigen Bereichen renoviert. So soll etwa die maximale Kapazität eines ext3-Volumes von derzeit 8 Terabyte bei 4K großen Blöcken in Zukunft auf 1024 Petabyte (1 Exabyte) steigen. Einigen Entwicklern geht diese umfassende Änderung am Quellcode jedoch zu weit – sie schlagen vor, ext3 nur noch zu Pflegen und die neue Erweiterungen unter dem Namen ext4 in den Kernel aufzunehmen und weiter zu entwickeln. Zu einer Einigung führte die über 250 Mails lange Diskussion jedoch nicht; Linus Torvalds schien eher zu den Befürwortern der ext4-Lösung zu zählen, wohingegen der wohl zweitwichtigste Kernel-Entwickler Andrew Morten eher zur Erweiterung des bestehenden ext3 tendieren zu schien.
In Zukunft wird es neben dem stabilen, von Linus Torvalds entwickelten und freigegebenen gepflegten Kerneln (2.6.X, 2.6.X-rcX) den mm-Entwicklerkerneln von Andrew Morton (2.6.x-rcX-mmX) sowie den vom Stable-Team gepflegten Stable-Kerneln (2.6.X.X) wohl noch eine weitere Kernel-Serie geben: Adrian Bunk will mit der so genannten "long-living kernel series" auf Anwender abzielen, die weder mit schneller Entwicklung im Kernel 2.6, noch mit den vorsichtigen Fehlerkorrekturen im Stable-Kernel glücklich sind. Seine neue Kernel-Serie soll dazwischen liegen: Der Plan sieht vor, mit dem dem letzten vom Stable-Team freigegebenen Kernel 2.6.16.X zu starten und ihn dann ähnlich wie zuletzt die Kernel-Serie 2.4 weiter zu pflegen – Treiber-Updates und kleinere bis mittelgroße Änderungen sollen demnach erlaubt sein, größere Modifikationen aber tabu.
Linux 2.6.17 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. (thl) (thl)