Stetes Wachstum – Die Neuerungen von Linux 2.6.29

Trends & News | Kernel-Log

Der neue Linux-Kernel bringt mehrere Dateisystem-Neuerungen und mit Kernel-Based Mode-Setting ein modernes Framework zur Ansteuerung und Kontrolle von Grafikhardware. Neu ist ferner die Unterstützung für Wimax und den Betrieb als Access Point (AP).

Nach acht Vorabversionen und einem durch die Feiertage und die LCA (linux.conf.au) 2009 etwas längeren Entwicklungszyklus hat Linus Torvalds die auf den Namen "Temporary Tasmanian Devil" getaufte Linux-Version 2.6.29 freigeben. Bei ihr dient der maskierte Tasmanische Teufel Tuz vorübergehend als Linux-Maskottchen, um Aufmerksamkeit auf die vom Aussterben bedrohte Tierart zu lenken.

Wie seine Vorgänger der Hauptentwicklungslinie von Linux bringt auch der Kernel 2.6.29 eine Vielzahl von Neuerungen. So nahmen die Kernel-Hacker mit Btrfs und SquashFS zwei neue Dateisysteme auf; ferner erweiterten die Entwickler den Ext4-Code um neue Funktionen und beseitigten einige Fehler im noch jungen Dateisystem. Einen flackerfreien Startvorgang, Text-Konsolen in hohen Bildschirmauflösung sowie die Beseitigung einiger technischer Probleme rund um Grafikhardware verspricht das neue Kernel-Based Mode-Setting (KMS). Dank Verbesserungen im WLAN-Stack Mac80211 kann der Kernel in Zukunft zusammen mit HostAP als Access Point (AP) fungieren. Neben dem Wimax-Subsystem samt passender Wimax-Treiber gab einen Haufen weiterer neuer und erweiterter Treiber für die verschiedensten Hardware-Komponenten auf – darunter zahlreiche Treiber für Audio-, FireWire, USB- und Video-Hardware.

Tuz, ein maskierter Tasmanischer Teufel, übernimmt vorübergehend die Rolle von Tux (Bild: Linux-Kernel; Erstellt von Andrew McGown und Josh Bush)

Das folgende Kernel-Log bietet einen Überblick über diese und andere wichtigste Neuerungen von Linux 2.6.29. Die vielen Änderungen an Treibern und den sie umgebenden Subsystemen sind über kurz oder lang auch für Linux-Nutzer von Bedeutung, die sich sonst nicht weiter mit dem Kernel ihrer Linux-Distribution auseinander setzten.

Mit Linux 2.6.29 kommt das von vielen wichtigen Linux-Dateisystem-Entwicklern zum "Next Generation Filesystem for Linux" gekürte "Copy On Write"-Dateisystem Btrfs in den Hauptentwicklungszweig des Kernels. Fertig ist Btrfs aber bei weitem noch nicht – vielmehr wollen die Kernel-Hacker es im Rahmen der Kernel-Entwicklung weiter verbessern und reifen lassen, ähnlich wie es bei Ext4 der Fall war. Das hatten die Kernel-Entwickler im Herbst 2006 mit Linux 2.6.19 aufgenommen und anschließend weiter verbessert; die Hauptentwicklungsphase beendeten die Kernel-Hacker kürzlich mit der Linux-Version 2.6.28.

Ebenfalls neu dabei ist SquashFS in der brandneuen Version 4.0 – ein komprimiertes Read-Only-Dateisystem, das etliche Linux-Distributionen schon lange auf ihren von USB, CD oder DVD gestarteten Installation- oder Live-Medien einsetzen. Auch im Embedded-Bereich kommt die Cramfs-Alternative häufig zum Einsatz; die Kernel-Dokumentation zu Squashfs erläutert die Unterschiede zwischen Cramfs und Squashfs sowie die Funktionsweise des neuen Dateisystems detailliert.

Zahlreiche meist kleine Verbesserungen, Aufräumarbeiten und Korrekturen gab es auch am Ext4-Dateisystem. Durch einige von Google-Entwicklern eingebrachte Patches arbeitet Ext4 nun auf Wunsch ohne Journal – bisher setzten mache Anwender noch auf Ext2, um den vom Journaling verursachten Overhead zu vermeiden.

Auch bei anderen schon länger im Kernel enthaltenen Dateisystemen gab es zahlreiche Änderungen, die der vierte Teil der Kernel-Log-Mini-Serie "Was 2.6.29 bringt" näher erläutert.

Im Detail

Dieser (schon recht lange) Artikel kann lediglich einen Überblick über die wichtigsten Änderungen der Linux-Version 2.6.29 liefern. Detailliertere Erklärungen finden sich in der in den vergangenen Wochen auf heise open veröffentlichten Kernel-Log-Mini-Serie "Was 2.6.29 bringt", die als Basis für diesen Artikel dient.

So beschreibt der vierte Teil der Serie zu den Änderungen rund um Dateisysteme die Features von Btrfs genauer und verweist auf Quellen mit weiteren Informationen zu dem neuen, speziell für Linux entwickelten Dateisystem. Ferner werden dort einige Patches erwähnt, die die Performance des Dateisystems weiter steigern sollen. Über die Links im Text gelangt man zudem zu den jeweils relevanten Commits im Git-Webfrontent von kernel.org, den Git-Requests der Subsystem-Verwalter oder anderen Quellen mit weiteren Informationen zu den beschriebenen Änderungen.

Jeder Artikel der Serie hat zudem einen Anhang mit Verweisen auf eine Auswahl weiterer wichtiger Änderungen – im Artikel zu Neuerungen rund um Audio- und Video-Treiber etwa mit Hinweisen auf Audio- und TV-Hardware, mit denen Linux bei Version 2.6.29 umzugehen gelernt hat.

  1. Netzwerk – "Mistige" WLAN-Treiber, Wimax- und AP-Unterstützung
  2. Grafik – Kernel verwaltet Bildschirmauflösung
  3. ACPI, PCI, PM – Verbesserungen für Notebooks und Stromsparmechanismen
  4. Dateisysteme, Storage – Btrfs, SquashFS, Ext4 ohne Journal und neue Storage-Treiber
  5. Audio, FireWire, USB, Video – Audio via HDMI, FireWire-TV und neue Staging-Treiber
  6. Infrastruktur – Schneller starten und andere Änderungen unter der Haube

Knapp eindreiviertel Jahre nach der ersten größeren Ankündigung haben die Kernel-Entwickler die Unterstützung für Kernel-Based Mode-Setting (KMS) für neuere Intel-Grafikhardware in den Hauptentwicklungszweig von Linux integriert (unter anderem 1, 2, 3). Mit dieser Technik nimmt der Kernel dem X-Server viel Arbeit bei der Kontrolle über die Grafikhardware ab und kümmert sich nun etwa um die Einstellung der Bildschirmauflösung. Der Wechsel zwischen Text-Konsole und X-Server – etwa beim Booten, wenn der X-Servers das erste Mal startet – erfolgt so durch KMS deutlich schneller und nicht mehr wie bisher mit Bildflackern oder kurzen Aussetzern, die bislang beim Wechsel zwischen X-Server und Text-Konsole entstehen.

Ferner sollen durch Kernel-Based Mode-Setting einige Probleme der Vergangenheit angehören, die gelegentlich entstanden, weil sich VGA-Konsole und Framebuffer-Treiber, Direct Rendering Manager (DRM) und verschiedene Userspace-Programme inklusive des X-Servers beim Zugriff auf die Grafikhardware in die Quere kamen. Mit KMS kann der X-Server nun ohne Root-Rechte arbeiten; Kernel mit KMS kümmern sich mit KMS beim Aufwachen aus dem Suspend-Modus um die komplette Re-Initialisierung der Grafikhardware, was die Zuverlässigkeit bei der Nutzung der Suspend-Modi steigern soll.

Damit sich X-Server und Kernel allerdings nicht um den Zugriff auf die Hardware streiten, müssen der X-Server und dessen Grafiktreiber KMS auch unterstützen. Wie der für den DRM-Code des Kernel zuständige X- und Kernel-Hacker Dave Airlie ausdrücklich betonte, waren diese Teile noch in der Entwicklung und KMS vorerst nur für Entwickler gedacht; ohne passende Userspace-Unterstützung sollte man KMS bei der Kernel-Konfiguration daher nicht aktivieren. Mittlerweile ist der Code erhältlich, hat aber noch Kinderkrankheiten; die Einrichtung ist zudem recht aufwendig.

Linux-Kernel herunterladen Neue Linux-Versionen sind über die in Amerika und Europa stationierten Server von Kernel.org erhältlich; deren Inhalte spiegeln auch zahlreiche deutsche Mirror. Linux-Anwender, die sich nicht intensiv mit dem Kernel und dessen Umfeld beschäftigen, sollten neue Linux-Treiber und -Kernel aber normalerweise nicht auf eigene Faust einspielen, sondern auf die Vorarbeit der Linux-Distributoren zurückgreifen. (...mehr...)

Einige Änderungen am WLAN-Stack schalten die schon länger im Kernel enthaltene, aber bislang deaktivierte Unterstützung zum Betrieb als AccessPoint (AP) frei (1, 2, Dokumentation). Die eigentlichen AP-Verwaltungsfunktionen erledigt der Kernel allerdings nicht selbst, sondern überlässt dies aktuellen Versionen von hostapd. Die WLAN-Treiber müssen den AP-Mode aber auch unterstützen, was beispielsweise bei den Treibern im Kernel für die vor allem in Centrino-Notebooks verbauten Intel-WLAN-Module nicht der Fall ist. Die WLAN-Treiber ath5k und p54 erweiterten die Entwickler während der 2.6.29-Entwicklung um Unterstützung für den AP-Mode (1, 2). Den schon länger AP-tauglichen WLAN-Treiber Ath9k haben die Kernel-Hacker um Unterstützung für die Atheros-WLAN-Chip AR9285 erweitert (1, 2).

Für LAN-Treiber ist die Generic Receive Offload (GRO) Infrastructure neu dabei (LWN.net-Artikel). Ebenfalls neu sind die LAN-Treiber smsc911x für die LAN-Chips LAN911x und LAN921x von SMSC, der Treiber smsc9420 für den vom selben Hersteller gefertigten 100-MBit-Chip LAN9420 sowie der neue Treiber atl1c für die Atheros-Gigabit-Ethernet-Chips der L1C-Serie. Entfernt haben die Entwickler den für 100-Mit-LAN-Chips von Intel zuständigen LAN-Treiber eepro100, den der Treiber e100 eigentlich schon lange ersetzt; ebenfalls weichen musste der Bluetooth-Treiber hci_usb, dessen Arbeit btusb seit längerem übernimmt.

Zahlreiche schon seit langem vorbereitete und mit 2.6.29 aufgenommene Änderungen sollen die Zuverlässigkeit der Suspend-Modi verbessern. Torvalds hob diese Änderungen bei der Veröffentlichung der dritten Vorabversion von 2.6.29 explizit hervor; bisher hätte Suspend und Resume zwar auf vielen Systemen funktioniert, aufgrund von Interrupt-Timing-Problemen speziell bei Shared-Interrupts jedoch nicht immer verlässlich gearbeitet. Im Rahmen der Entwicklung fanden sich aber noch Probleme mit dem neuen Suspend-Code, die zahlreiche weitere Änderungen nötig machten. Weitere dürften mit 2.6.30 folgen.

Vorübergehend aufgenommen, dann aber wieder zurückgenommen wurden Änderungen am Treiber p4-clockmod, die das Sysfs-Interface des Cpufreq-Treibers entfernten. Wie bei vorangegangenen Kernel-Version wird man so auch bei 2.6.29 die CPU manuell durch Throttling abbremsen können – sinnvoll ist das, wie berichtet, aber in der Regel nicht. Die Rücknahme ist zudem nur eine Übergangslösung, damit die Entwickler einige Fehler in der Throttle-Unterstützung des ACPI-Subsystem beseitigen können, um den Schutz vor Überhitzung der CPU zuverlässig sicherzustellen. Anschließend wollen sie den Patch wieder aufnahmen – geplant ist das grob für September dieses Jahres.

Den Treiber i8k für Dell-Notebooks erweiterten die Kernel-Hacker um Unterstützung für die Serien Vostro und Precision; neu dabei ist der Treiber dell-laptop, der die Helligkeitsregelung und Abfrage des WLAN-Schalter über Dcdbas (Dell Systems Management Base Driver) unterstützt.

Informationsquelle Quellcodeverwaltung

Viele der Links im Artikel verweisen auf den oder die für die Neuerung jeweils relevanten Commit im Web-Frontend des von Linus Torvalds mit Git verwalteten Linux-Quellcodes, da sich dort viele weitere Informationen zur jeweiligen Änderungen finden. Speziell der Kommentar im mittleren Bereich der vom Git-Web-Frontend angezeigten Webseite zum Commit ist häufig eine überaus hilfreiche Quelle für weitere Informationen, denn dort erklärt der Autor des Patches normalerweise die Hintergründe der Änderungen und was sie bewirken sollen.

Im unteren Bereich des Git-Web-Frontends findet sich eine Auflistung der durch den Patch veränderten Dateien. Über den hinter dem Dateinamen zu findenden Link "diff" kann man sich anzeigen lassen, wie der Patch die jeweilige Datei verändert; wer den kompletten Patch in seiner Rohform sehen will, klickt auf den Link Commitdiff. Die Patches selbst sind auch ohne Programmierkenntnisse häufig eine gute Informationsquelle, denn sie enthalten auch Änderungen an der Dokumentation und den Kommentaren am Code.

Nachdem Arjan van de Ven bereits bei 2.6.28 einige unter dem Stichwort "Fastboot" segelnde Verbesserungen eingebracht hat, die die Initialisierungsphase des Kernels und so den Start des Systems beschleunigen, hat er für 2.6.29 weitere Änderungen erarbeitet. Durch sie kann der Kernel einige voneinander unabhängige Subsysteme asynchron initialisieren – also die Initialisierung eines Subsystems starten, während der Code eines andere Subsystems noch auf Rückmeldung der von ihm versorgten Hardware-Komponenten wartet. Solche Wartezeiten sind insbesondere bei der Initialisierung der Libata- und SCSI-Subsysteme häufig, da diese bei der Abfrage und dem Einrichten der Datenträger an einigen Stellen Zehntelsekunden oder länger auf Rückmeldungen der angeschlossenen Laufwerke warten.

Die Boot-Phase zwischen dem Start des Kernels und Übergabe an den Userspace (/sbin/init) lässt durch diesen Trick spürbar beschleunigen – wie klein oder groß der Vorteil ist, hängt aber stark vom eigenen System ab. Bei 2.6.29 wird die parallele Initialisierung jedoch aufgrund von Problemen weitgehend deaktiviert sein, so man den Fastboot-Code nicht über den Kernel-Parameter "fastboot" explizit aktiviert. Van de Ven plant für 2.6.30 einen zweiten Anlauf, sodass dann auch mehr Anwender von den Neuerungen profitieren. Weitere Details zur genauen Funktionsweise von Fastboot liefert ein Artikel bei LWN.net.

Am Alsa-Framework und dessen Treibern gab es auch in diesem Entwicklungszyklus wieder hunderte von kleinen und größeren Änderungen (u. a. 1, 2, 3, 4, 5). Laut dem Angaben im Kernel ist die Audio-Unterstützung von Linux 2.6.29 damit auf dem Niveau von Alsa 1.0.18a, tatsächlich aber wird Linux 2.6.29 schon viele Änderungen der aktuellen Alsa-Treiber-Version 1.0.19 enthalten. Darunter etwa die Aufteilung des Treiber für HD-Audio-Codecs in mehrere Dateien sowie die Unterstützung zur Audio-Ausgabe via HDMI bei Intel- und Nvidia-Chipsätzen (u. a. 1). Die Stromsparfunktionen für AC97- und HD-Audio-Chips gelten nun nicht mehr als experimentell – wer die Akku-Laufzeit seines Notebook verlängern will, sollte diese bei der Kernel-Konfiguration daher einschalten oder sie nachträglich aktivieren, sofern der Kernel der eingesetzten Linux-Distribution das nicht schon macht.

Auch das Video-4-Linux/DVB-Subsystem erweiterten oder veränderten hunderte von Patches (1, 2, 3, 4, 5, 6). Neu sind etwa zwei weitere Gspca-Treiber: ov534 spricht die Sony Playstation EYE an, während sich stv06xx für einige ältere Quickcam-Kameras von Logitech eignet. Für letztere benötigte man bisher meist einen der zwei unter dem Namen qc-usb bekannten Treiber, die beide nie den Sprung in den Linux-Hauptentwicklungszweig geschafft haben.

Über Greg Kroah-Hartman, den Betreuer des USB-Subsystems, fand der maßgeblich von Intel-Entwicklern vorangetriebene und im Rahmen des Linux-Wimax-Projekts entwickelte Wimax-Stack den Weg in den Kernel. Damit erhält Linux mit 2.6.29 eine Basisinfrastruktur für die drahtlose Breitband-Vernetzungstechnik Wimax, auf den der ebenfalls im Wimax-Projekt entwickelte und parallel in den Kernel aufgenommene USB-Treiber i2400m aufsetzt. Er spricht Intels Wimax-Chip Wimax Connection 2400 an, der sich auf den vornehmlich in neueren Centrino-Notebooks verbauten WLAN-/Wimax-Modulen Intel Wireless Wimax/Wifi Link 5150 und 5350 (Codename: Echo Peak) findet. In einer Mail und auf der Linux-Wimax-Webseite finden sich zahlreiche Details und Hintergründe zur neuen Wimax-Infrastruktur des Linux-Kernels. Die Webseite hält auch die i2400m-Firmware und die zugehörige Userspace-Software zum Download bereit.

Stefan Richter brachte zahlreiche Erweiterungen in das von ihm betreute FireWire-Subsystem ein (u. a. 1, 2), die Verbesserungen für asynchrone Datenübertragungen bringen und die Limitierung von Übertragungen auf 800 MByte/s entfernen. Recht weit in der zweiten Hälfte des Entwicklungszyklus fand über den FireWire-Entwicklungszweig zudem noch der V4L-/DVB-Treiber firedtv (vormals firesat) den Weg in den Hauptentwicklungszweig. Er unterstützt die von Digital Everywhere entwickelte und von El Gato vertriebene FireWire-TV-Hardware FireDTV und FloppyDTV.

Nachdem der von Greg Kroah-Hartman betreute Staging-Kernel-Zweig mit 2.6.28 in den Hauptentwicklungszweig von Linux aufgenommen wurde, fanden über den selbsternannten "Maintainer of crap" ("Verwalter des Mists") zahlreiche weitere Treiber, die den Qualitätsansprüchen der Kernel-Entwickler (noch) nicht genügen, den Weg in den Staging-Bereich des Kernels, um dort zu reifen. Darunter befinden sich unter anderem die WLAN-Treiber rt2860 und rt2870 für die gleichnamigen WLAN-Chips von Ralink, die sich in so manchem aktuellen Netbook und einigen billigen Notebooks finden.

Neu im Staging-Bereich sind auch der im Oktober freigegebene Treiber otus für die 802.11n-USB-WLAN-Chips UB81, UB82 und UB83 von Atheros sowie die Treiber agnx und rtl8187se für die WLAN-Chips AGNX00 von Airgo und RTL8187SE von Realtek. Zudem gab es zahlreiche Aufräumarbeiten und Umstrukturierungen am Code des bereit 2.6.28 beiliegenden Frameworks wlan-ng.

Auf für Kernel-Verhältnisse gigantische 2 MByte summierte sich der Commit des openPOWERLINK Network Stack von Systec Electronic. Zirka 1,2 MByte Umfang hat der Commit, der die ME-IDS-Treiber von Meilhaus nachrüstet. Zudem haben die Kernel-Entwickler das Comedi-Framework sowie zahlreiche Kernel-Erweiterungen von Googles Android im Staging-Bereich aufgenommen.

Ob die greifbare Vorteile durch die Aufnahme all dieser Staging-Treiber haben, ist von der jeweiligen Distribution abhängig, denn die Verwalter der Distributions-Kernel aktivieren die Staging-Treiber nur teilweise oder gar nicht, weil sie den normalen Qualitätsansprüchen der Kernel-Entwickler eben nicht genügen. Das ist auch der Grund, warum der Kernel beim Laden von Staging-Treibern als "TAINT_CRAP" markiert wird, damit bei Fehlerberichten durch Anwender klar ersichtlich ist, dass ein "mistiger" Treiber den Kernel "verschmutzt" hat und möglicherweise für Probleme (mit)verantwortlich ist. Anwendern, die ihre Hardware einfach nur benutzen wollen, dürfte das aber mangels Treiber-Alternativen zumeist herzlich egal sein, sofern der Treiber keine größeren Probleme macht.

Linux 2.6.29 bringt eine Unmenge an Neuerungen, von denen über kurz oder lang auch Linux-Anwender profitieren, die einfach nur den Kernel ihrer Distribution benutzen. Kernel-Based Mode-Setting (KMS) dürfte etwa so manchen Anwender durch den flackerfreien Startvorgang entzücken; zudem räumt es ganz nebenbei auch noch einige technische Probleme aus, die heutzutage ab und an für Ärger sorgen.

Bis alle größeren Mainstream-Distributionen KMS einsetzen, dürfte aber noch einige Zeit vergehen. Auch die Dateisystem-Neuerungen dürften abgesehen von SquashFS nur langsam bei den Anwendern ankommen, langfristig aber von großer Bedeutung sein. Ähnlich wird es sich vielleicht mit der Wimax-Unterstützung verhalten – das hängt aber weniger von Linux als vielmehr vom allgemeinen Erfolg der Technik ab.

Linux-
Version
Anzahl
Dateien¹
Zeilen
Quelltext²
Entwicklungs-
zeitraum
Anzahl
Commits³
Diffstat⁴
2.6.24 23062 8859629
(8082358)
107 Tage 9836 10209 files changed,
776107 insertions(+),
483031 deletions(-)
2.6.25 23810 9232484
(8396250)
83 Tage 12243 9738 files changed,
777371 insertions(+),
404514 deletions(-)
2.6.26 24270 9411724
(8535933)
88 Tage 9941 8676 files changed,
595393 insertions(+),
416143 deletions(-)
2.6.27 24354 9709868
(8690888)
88 Tage 10628 15127 files changed,
1131171 insertions(+),
912939 deletions(-)
2.6.28 25255 10195507
(9128690)
76 Tage 9048 11090 files changed,
975689 insertions(+),
490047 deletions(-)
2.6.29 26668 11010647
(9871260)
89 Tage 11718 10933 files changed,
1347290 insertions(+),
532055 deletions(-)

Direkt nach der Freigabe von 2.6.29 beginnt das üblicherweise zwei Wochen lange Merge Window im Entwicklungszyklus des Linux-Kernels, in dem die Kernel-Entwickler die umfangreicheren Änderungen für die darauf folgende Kernel-Version in den Hauptentwicklungszweig aufnehmen.

Hier stehen schon wieder zahlreiche Änderungen bereit, darunter einige Patches für Ext4, die die kürzlich bekannt gewordene Gefahr eines möglichen Datenverlusts bei einem Systemcrash durch die Delayed Block Allocation von Ext4 mindern sollen; weitere sind in Arbeit, möglicherweise aber noch nicht reif für 2.6.30. Andere Änderungen sollen den für die Speicher-Allozierung zuständigen Page Allocator signifikant beschleunigen, während SLQB als vierter Memory Manager mit dem Ziel antritt, den älteren SLAB und den noch recht jungen SLUB zu ersetzen (siehe LWN.net-Artikel).

Ferner wollen die Kernel-Entwickler das Security-Framework Tomoyo aufnehmen. Neil Brown hat zahlreiche Patches vorbereitet, mit deren Hilfe sich ein mit dem Software-RAID-Code von Linux verwaltetes RAID 1 in ein RAID 5 umwandeln lässt; zudem soll der Kernel damit auch ein RAID 5 in ein RAID 6 überführen können.

Wie üblich wird das Kernel-Log in der c't und auf heise open in den kommenden Wochen über die wichtigsten Neuerungen während der Entwicklung von Linux 2.6.30 und andere Entwicklungen im Umfeld des Linux-Kernels berichten. Dazu zählen auch neue Versionen der Stable-Kernel-Series (2.6.x.y), die in den nächsten Wochen den einen oder anderen in 2.6.29 übersehenen Fehler korrigieren dürften. Vermutlich im Juni dürfte Torvalds dann die Linux-Version 2.6.30 freigeben, wenn sich die Kernel-Hacker an den üblichen Rhytmus halten. Die wichtigsten Änderungen von 2.6.30 wird dann wieder ein Kernel-Log wie dieses auf heise open detailliert zusammenfassen. (thl/c't)

Anzeige