Höher und weiter – Die Neuerungen von Linux 2.6.28 | heise online

Höher und weiter – Die Neuerungen von Linux 2.6.28

Größere Umbauarbeiten am Code für Speicher-, Datenträger- und GPU-Verwaltung versprechen bessere Performance. Hunderte neue und überarbeitete Treiber verbessern die Hardware-Kompatibilität, während Ext4 bald reif für den produktiven Einsatz sein soll.

vorlesen Druckansicht
Lesezeit: 57 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Mit der Veröffentlichung der neunten Vorabversion von Linux 2.6.28 kündigte Linus Torvalds zu Beginn des letzten Dezemberdrittels an, die nächste aus der Hauptentwicklungslinie von Linux hervorgehende Linux-Version rund um die Weihnachtsfeiertage freigeben zu wollen. Da größere Änderungen in den letzten Tagen der Entwicklungsphase sehr selten sind, nutzt diese Artikel die Chance und liefert bereits jetzt einen Überblick über die wichtigen Neuerungen von 2.6.28.

Die gibt es wieder zu Hauf – so schließen die Kernel-Hacker mit Linux 2.6.28 die Hauptentwicklungsphase des Ext4-Dateisystems ab und entfernen die Sicherheitsmaßnahmen und Warnungen, die klar stellen sollten, dass der Ext3-Nachfolger bislang nur für Entwickler und experimentierfreudige Tester gedacht war. Zahlreiche Umbauarbeiten am Code für die Speicher-, Datenträger- und GPU-Verwaltung sollen ferner kleinere oder größere Geschwindigkeitszuwächse bringen, während Verbesserungen in verschiedenen Kernel-Bereichen die Akku-Laufzeit von Notebooks ein wenig verlängern sollen. Hinzu gesellen sich wie mit jeder neuen Linux-Version der Hauptentwicklungslinie hunderte neue oder signifikant überarbeitete Treiber – neu sind etwa die Treiber für das in vielen Eee PCs von Asus verbaute Touchpad von Elantech und den L2-Netzwerkchip von Atheros. Die Sound-Treiber haben die Kernel-Hacker auf den Stand von Alsa 1.0.18 aktualisiert. Zudem nahmen die Entwickler mehrere Treiber mit bekannten Schwächen in der Hoffnung auf, dass die Kernel-Community sich aufrafft und die Treiber gemeinsam verbessert, um sie später als reguläre Treiber mitzuliefern.

Diese und viele andere Änderungen haben den Gesamtumfang der Linux-Quellen in den vergangenen zehn Wochen auf über 10 Millionen Zeilen anwachsen lassen. Das detaillierte und mehrere Megabyte große Changelog listet alle Anpassungen seit der Version 2.6.27 im Detail auf. Das folgende Kernel-Log bietet einen kürzeren Überblick über die Neuerungen der jüngsten Kernel-Version – spätestens wenn das nächste Distributions-Update diese oder spätere Linux-Versionen mitliefert, profitieren davon auch Linux-Anwender, die keine eigenen Kernel kompilieren.

Die im Artikel erwähnten Neuerungen bei Infrastruktur und Treibern sind jene, die für einen Großteil der Linux-Anwender relevant sind. Eine Liste mit zahlreichen weiteren mehr oder weniger wichtigen Änderungen finden sich im Anhang:

Änderungen an der Infrastruktur

Änderungen an Treibern und der sie umgebenden Infrastruktur

Im Artikel finden sich zudem diverse Verweise auf das Glossar von heise online, das einige allgemeine und zeitlose Hintergrundinformationen zum Linux-Kernel und dessen Entwicklung bereithält:

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 nie auf eigene Faust einspielen, sondern auf die Vorarbeit der Linux-Distributoren zurückgreifen. (...mehr...)

Gleich zu Beginn der 2.6.28-Entwicklung hatte Torvalds eine größere, von Dateisystem-Entwickler Theodore Ts'o (tytso) vorbereitete Patch-Sammlung integriert. Sie enthält neben Fehlerkorrekturen und Verbesserungen für den Ext3-Nachfolger einen Patch, durch den der Kernel das Ext4-Dateisystem fortan als ext4 und nicht mehr als ext4dev ("Ext4 for Developers") bezeichnet; ferner ist das Dateisystem nicht mehr als "Experimentell" gekennzeichnet. Diese Anpassungen sollen verdeutlichen, dass sich die auf den Datenträgern verwendeten Dateisystemstrukturen von nun an nicht mehr in inkompatibler Weise ändern sollen – Nutzer brauchen daher in Zukunft auch nicht mehr wie bisher darauf achten, dass Kernel-Version, Ext4-Utilities (e2fsprogs) und Datenträgerformat exakt zusammenpassen. Der Ext3-Nachfolger verlässt mit den bei 2.6.28 aufgenommen Änderung somit seine "heiße" Entwicklungsphase, nachdem die Kernel-Entwickler eine frühe Ext4-Variante mit Linux 2.6.19 aufgenommen hatten, um es im Hauptentwicklungszweig gemeinsam weiterzuentwickeln und reifen zu lassen.

Abgeschlossen ist die Ext4-Entwicklung aber noch keineswegs; vielmehr dürften die Entwickler das Dateisystem genau wie zuvor bei Ext3 über die Zeit stetig weiterentwickeln und dabei nicht nur Fehlerkorrekturen vornehmen, sondern auch die eine oder andere neue Funktion nachrüsten. Von "Ext4 ist nun stabil" zu sprechen dürfte ebenfalls noch ein wenig verfrüht sein, denn den Ext4-Entwicklern sind durchaus noch einige Fehler bei Ext4 bekannt – ähnlich wie bei den Fehlern in modernen CPUs dürften sich diese bei normaler Benutzung allerdings nicht zeigen. Als wirklich "Stabil" wird man das Dateisystem vermutlich erst bezeichnen können, wenn eine der größeren Mainstream-Distributionen Ext4 als Standarddateisystem nutzt und es sich bei einer größeren Zahl von Anwendern in den unterschiedlichsten Konfigurationen und Hardware-Umgebungen bewährt – erst dann dürften auch die üblicherweise konservativ agierenden Enterprise-Distributionen damit beginnen, Ext4 offiziell zu unterstützen.

Nach den Vorstellungen einiger wichtiger Linux-Dateisystementwickler ist Ext4 aber ohnehin nur eine Übergangslösung auf dem Weg zum als "Next Generation Linux Filesystem" auserkorenen Btrfs. Das soll nach den Vorstellungen einiger Entwickler schon in den nächsten Monaten über Linux-Next in den offiziellen Linux-Kernel einziehen. Dort soll es dann weiterentwickelt werden und reifen, ähnlich, wie es in den vergangenen zwei Jahren bei Ext4 der Fall war.

Einige für 2.6.28 vorgenommene Änderungen an den überaus wichtigen, aber meist eher im verborgenen arbeitenden Kernel-Speicherverwaltung sollen einen Geschwindigkeitszuwachs liefern. So nahmen die Kernel-Entwickler nach jahrelanger Entwicklung zahlreiche maßgeblich von Rik van Riel unter der Bezeichnung "VM pageout scalability improvements" vorangetriebene Änderungen auf, die Teile des Speichersubsystems erheblich renovieren und dabei optimieren (u. a. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12). Das soll den Verwaltungs-Overhead insbesondere bei speicherlastigen Anwendungen reduzieren; Details und Hintergründe zu den Patches finden sich in einem LWN.net-Artikel. Diese Änderungen dürften auf Desktop-Systemen und kleineren Servern allenfalls für messbare, normalerweise aber nicht spürbare Geschwindigkeitszuwächse sorgen; gerade bei sehr großen Servern oder HPC-Systemen können diese Änderungen aber deutliche Vorteile zeigen. Das dürfte auch für die von Nick Piggin eingebrachte Patches gelten, die versprechen, die CPU-Belastung bei der Speicherverwaltung zu mindern und die Arbeit geschickter auf die verschiedenen CPU-Kerne von Multiprozessorsystemen zu verteilen (u.A. 1, 2, 3, 4, 5, 6) – auch hierzu liefert LWN.net Hintergrundinformationen.

Der bei 2.6.28 neue Graphics Execution Manager (GEM) für Intel-Grafikchips soll ferner den Grafiktreibern einige Arbeiten bei der Speicherverwaltung abnehmen und darüber hinaus den Zugriff auf die Recheneinheiten des Grafikchips koordinieren. Auch das soll die Performance verbessern, zudem aber auch das Design von Grafiktreibern erleichtern und dadurch Funktionen ermöglichen, die sich ohne GEM nur schwer hätten realisieren lassen. Intel-Entwickler hatten GEM erst vor einigen Monaten kurzfristig als Alternative zum ursprünglich für diese Aufgaben vorgesehenen Translation Table Maps Memory-Manager (TTM) von Tungsten Graphics gestartet (siehe auch GEM vs. TTM auf LWN.net).

Viele mit Linux 2.6.28 neu aufgenommene Treiber verbessern die Unterstützung von modernen PC-Komponenten spürbar. Erstmals dabei ist etwa spezieller Treiber für die in vielen Eee PCs von Asus verbauten Touchpads von Elantech, der zusammen mit aktuellen Versionen des Synaptics-Treibers erweiterte Touchpad-Gesten erlaubt (Dokumentation). Sehnlichst erwartet haben dürften einige Anwender auch schon den Treiber atl2 für den Netzwerkchip Atheros L2, den insbesondere Asus seit einigen Monaten auf mehreren, zumeist eher preiswerteren Mainboards mit 100-MBit-LAN verbaut.

Bisher noch nicht weit verbreitet, langfristig aber von Wichtigkeit dürfte die bei 2.6.28 neue und maßgeblich von Intel-Entwicklern programmierte Unterstützung für Ultra-Breitband-Technologie (UWB/Ultra Wide Band) und das diese nutzende Wireless USB sein. Anders als bei den fünf vorangegangenen Kernel-Versionen stießen diesmal keine neuen Treiber für verbreitete WLAN-Chips zum Kernel hinzu. Der ath5k-Treiber für Atheros-WLAN-Chips bietet nun allerdings Unterstützung für Mesh-Netzwerke und den Atheros-Chip AR2417 v2; der rt2x00-Treiber nutzt nun die Verschlüsselungstechniken, die verschiedenere RaLink-WLAN-Chips bieten (1, 2, 3, 4).

Die mit 2.6.28 neue generische Wireless Regulatory Infrastructure soll in Zukunft flexibler und besser sicherstellen, dass man mit der WLAN-Hardware nicht gegen die am jeweiligen Aufenthaltsort geltenden Vorschriften zum Betrieb von Funkverbindungen verstößt. Dazu greift die neue Infrastruktur auf die Hilfe eines im Userspace laufenden Programms zurück, das die Informationen zu den verschiedenen Vorschriften und Gesetzen enthält. Das soll den Linux-Distributoren die Arbeit erleichtern, denn ein Userspace-Programm lässt sich viel einfacher und schneller aktualisieren als der bisher für diese Zwecke genutzte Kernel-Code. Die genaue Funktionsweise und zahlreiche weitere Hintergründe zur Wireless Regulatory Infrastructure liefern der Commit-Kommentar, die Kernel-Dokumentation, ein Artikel auf LWN.net und die Beschreibung das Userspace-Programms Central Regulatory Domain Agent.

Entwicklungslinien des Linux-Kernels Die Kernel-Hacker entwickeln den Linux-Kernel im Rahmen der 2.6-Serie stetig weiter. Dabei scheuen sie auch nicht vor umfangreichen Änderungen zurück. Es wird daher auf absehbare Zeit keinen 2.7-Entwicklerzweig geben, aus dem irgendwann eine Linux-Version 2.8.0 oder 3.0.0 hervorgeht, wie Linux 2.6.0 aus dem 2.5-Entwicklerzweig entstand; stattdessen pflegen die Entwickler mehrere Kernel-Serien für verschiedene Anwenderkreise parallel. Die Hauptentwicklungslinie stellen die Versionen mit drei durch Punkte getrennten Nummern (2.6.x, also etwa 2.6.26) dar. [...] Parallel zur Hauptentwicklung pflegen die Verwalter der Stable-Kernel-Serie die beiden jeweils neusten Versionen der Hauptentwicklungslinie weiter und kennzeichnen die Überarbeitungen durch eine zusätzliche Zahl (2.6.x.y, beispielsweise 2.6.24.10 oder 2.6.25.8). (...mehr...)

Durch die neuen Range-Hrtimers kann der Kernel beim Anlegen einer später auszuführenden Aufgabe nun statt eines festen Ausführungszeitpunks ein Zeitfenster als Erledigungstermin festlegen. Dadurch kann der Kernel Aufgaben, die problemlos einige Sekundenbruchteile früher oder später ausgeführt werden können, bündeln und in einem Rutsch ausführen (siehe auch LWN.net-Artikel). Das verlängert sich im Idealfall nicht nur die Zeit deutlich, die die CPU in stromsparenden Schlafzuständen verbleibt, sondern erlaubt auch den Wechsel in tiefere und sparsamere CPU-Schlafmodi.

Einige von den Range-Hrtimers unabhängige Änderungen am CPUFreq-Framework (etwa 1, 2) sollen die Leistungsaufnahme bei unbelasteter CPU weiter reduzieren. Neu sind ferner einige umfangreiche Verbesserungen für den Vblank-Mechanismus der Direct Rendering Infrastructure (DRI). Durch sie sollen im 3D-Modus arbeitenden AMD- und Intel-Grafikchips nur noch Interrupts auslösen, wenn ein Programm auch tatsächlich auf ein Vblank-Event wartet, um störendes Flackern bei der 3D-Darstellung zu vermeiden. All das soll die Akku-Laufzeiten von Linux-Notebooks verlängern.

Falls die in manchen Notebooks verbauten Beschleunigungssensoren eine drohenden Erschütterungen erwarten lassen, kann eine (möglichst mit hoher Priorität laufende) Userspace-Anwendung über die neue "Disk Shock Protection" nun Festplatten anweisen, ihre Schreib/Leseköpfe schnellstmöglich zu parken, um die Gefahr von Festplattenschäden zu verringern (Dokumentation, Libata- und IDE-Unterstützung). IBM hat eine solche "Active Protection System (APS)" genannte Technik bereits vor Jahren bei mit Windows laufenden Thinkpad-Notebooks eingeführt; mit einigen Thinkpad-spezifischen Treibern sowie Vorläufern des jetzt aufgenommenen Codes ließ sich aber auch schon mit älteren Kernel ein vergleichbarer Schutz realisieren. Auch HP hat mit "HP Mobile Data Protection System 3D" und "HP 3D driveguard" schon eine ähnliche Technik impementiert – für einige der dabei genutzten Beschleunigungssensoren kam mit 2.6.28 ein passender Treiber hinzu.

Nachdem Intel Anfang Oktober die ACPI Integrated Graphics Device OpRegion Specification unter einer Creative-Commons-Attribution-Lizenz veröffentlicht hat, stieß nun Unterstützung für eben diese Technik zum Kernel hinzu. Das ermöglicht bei neueren Notebooks mit Intel-Grafikchipsatz die Einstellung der Display-Helligkeit über eben diese ACPI-Methode, was die Entwickler erfolgreich auf einem Thinkpad T61 und einem HP 2510p getestet haben; auch das Abfangen und Weiterleiten von Events beim Betätigen der Funktionstasten zum Umschalten des Displays-Ausgangs soll der neue Code verbessern. Durch eine weitere Änderung nutzt der Kernel zur Einstellung der Hintergrundbeleuchtung von Notebook-Displays in Zukunft nun bevorzugt ACPI. Die Treiber für Net- und Notebooks von Asus (1, 2,), Compal, Fujitsu, MSI, Sony und IBM/Lenovo kümmern sich hingegen nur noch um die Helligkeitsregelung, wenn es per ACPI nicht funktioniert; bisher kamen sich diese zwei Verfahren gelegentlich ins Gehege. Zu den genannten und zumeist Hersteller-spezifischen Notebook-Treibern gesellt sich mit panasonic-laptop ein weiterer. Er ermöglicht bei Notebooks aus der Panasonic-Serie Let's Note die Einstellung der Display-Helligkeit und macht einige zuvor brachliegende Funktionstasten nutzbar.

Das Libata-Subsystem kann dem übergeordneten Block-Layer nun mitteilen, ob es sich bei einem Datenträger um eine SSD (Solid-state drive) handelt. Die zum Block Layer gehörenden IO-Scheduler CFQ oder AS sind anhand dieser Informationen in der Lage, den Datenfluss besser zu steuern – statt wie sonst üblich einige Sekundenbruchteile auf weitere Daten zu warten, um den Einfluss der Zugriffszeiten zum Positionieren der Schreib-/Leseköpfe zu minimieren, können die IO-Scheduler bei SSDs so gleich die nächste Aufgabe angehen und so den Gesamtdurchsatz durch Eliminierung der sonst Vorteile bringenden Wartepausen steigern. Über die neue Discard-Funktion (LWN.net-Artikel) sind Dateisysteme nun zudem in der Lage, dem Block-Layer mitzuteilen, wenn bestimmte Bereiche (Blöcke) des Datenträgers nicht mehr in Benutzung sind – auch das ist für SSDs wichtig, damit etwa deren Wear-Leveling-Einheit weiß, welche Blöcke nicht mehr belegt sind.

Die IO CPU Affinity soll auf Mehrkern- oder Multiprozessor-Systemen den Datendurchsatz steigern und die CPU-Belastung reduzieren. Dazu versucht der Block-Layer, die Daten mit dem Prozessor weiterzuverarbeiten, mit dem zuvor die Datenanforderung erfolgt ist, da die Daten bei der CPU vielfach noch im Cache sind. Zudem unterstützt der Block-Layer nun Größenänderungen von Block-Devices zur Laufzeit und bietet Xen-Gästen über den Treiber blkfront Zugriff auf mehr als 16 virtuelle Datenträger. Ein ganzer Schwung kleiner Block-Layer-Patches von Libata-Entwickler Tejun Heo räumt zudem die Beschränkung auf maximal 15 Festplattenpartition bei über Libata-Treibern angesteuerten Datenträgern aus.

Über das Git-Web-Frontend auf Kernel.org lassen sich auch Informationen zu Änderungen an einzelnen Dateien des Linux-Kernels aufrufen – so lässt sich beispielsweise herausfinden, ob es Neuerungen an den auf dem eigenen System eingesetzten Treibern gab. Dazu muss man allerdings wissen, wo sich die Treiberdateien im Quellcodebaum des Linux-Kernels finden. Bei den zumeist stark auf Modulen setzenden Kerneln der Distributionen helfen häufig die Ausgaben des Programms modinfo bei der Suche: [VERBATIM0] Liegt ein kompiliertes Modul etwa in [...]/kernel/drivers/net/e100.ko, dann findet sich dessen Sourcecode im Linux-Quellcodearchiv normalerweise im Verzeichnis drivers/net/ in Dateien mit ähnlichem Namen – etwa e100.c im Falle des für Intel-100-MBit-Netzwerkhardware zuständigen Treibers e100. Andere Module wie der für Intels PCI-Gigabit-LAN-Chips zuständige Treiber e1000 haben hingegen ein Verzeichnis für sich allein. Kennt man die ungefähre Position des Treiber-Quellcodes, navigiert man im Git-Webinterface über die Tree-Ansicht zu den jeweiligen Quellcode-Dateien und ruft über den Link history eine Übersicht über die jüngsten Änderungen an den zugehörigen Dateien oder dem ganzen Verzeichnis auf. Im Verzeichnis für die Netzwerktreiber lassen sich so beispielsweise die Änderungen am Treibercode von e100 (drivers/net/e100.c) und e1000 (drivers/net/e1000/) anzeigen und näher unter die Lupe nehmen.

Die Audio-Treiber von Linux 2.6.28 entsprechen in ungefähr dem Stand der Alsa-Treiber-Version 1.0.18, bringen aber bereits einige zusätzliche, meist allerdings eher kleinere Verbesserungen und Korrekturen mit. Zu den über die neue Alsa-Version eingeflossenen Neuerungen zählt eine Userspace-Schnittstelle, über die Anwendungen erkennen können, an welchen Audio-Buchsen Ein- oder Ausgabegeräte angeschlossen sind (Jack Sensing). Ebenfalls neu ist der Treiber snd-usb-us122l für das Tascam US-122L USB Audio/MIDI Interface. Der Treiber snd-virtuoso versteht sich nun mit der Xonar HDAV1.3 und der Xonar HDAV1.3 Deluxe von Asus.

Zahlreiche Änderungen bringen oder verbessern die Unterstützung für die AC97- und HD-Audio-Codecs verschiedener Hersteller – neu ist etwa der Support für die Codecs AD1882A und AD1980 von Analog Devices, ALC662 und 663 von Realtek oder VT1708S und VT1702 von VIA. Wie mit praktisch jeder neuen Kernel-Version erweiterten die Entwickler zudem die Whitelists für die automatische Anwendung Hardware-spezifischer Workarounds, sodass die Treiber die bei so manchen PCs, Notebooks und Mainboards nötigen und manuell über Modulparameter aktivierten Sonderbehandlungen für die Audio-Codecs auf mehr Hardware als zuvor automatisch aktivieren – ab 2.6.28 beispielsweise beim Dell Studio 15, dem HP Compaq 6730s oder dem Medion MD96630. Entfernt haben die Kernel-Entwickler hingegen den OSS-Treiber hal2. Die OSS-Emulation im Alsa-Modul soundcore ist nun optional, was alternative Implementierungen ermöglicht – damit ist der noch experimentelle OSS Proxy gemeint, der auf das ebenfalls experimentelle CUSE (Character devices in user space) aufsetzt (siehe auch LWN.net-Artikel).

Alleine mehr als 500 der in den vergangenen Wochen für 2.6.28 vorgenommenen Commits verändern den Code im Video-4-Linux-/DVB-Subsystem und bringen dabei zahlreiche Verbesserungen mit (1, 2, 3, 4, 5) – darunter eine große Überarbeitung des Gspca-Treibers t613 und ein neuer Treiber für die Terratec Cinergy T2, der den bisherigen ersetzt. Neu ist zudem ein Gspca-Treiber für den Webcam-Chip M5602 von ALi.

Wie schon bei Linux 2.6.27 haben die Entwickler erneut zahlreiche Aufrufe des im Multiprozessor-Betrieb für die Sicherung kritischer Codebereiche genutzten Big Kernel Lock (BKL) eliminiert oder von den Treiber-Subsystemen in die Treiber selbst verlagert. Weiter vorangetrieben haben die Kernel-Hacker zudem die mit Linux 2.6.24 begonnene Zusammenlegung der Verzeichnisse und Quellcodedateien zur Unterstützung von x86-32- und x86-64-Systemen. Bei diesem fortwährenden Prozess traf es diesmal unter anderem zahlreiche Code-Bereiche rund um das IRQ-Management; dadurch sollte sich das Verhalten von 32- und 64-Bit-x86-Kernel weiter annähern, die bei der IRQ-Konfiguration bislang gelegentlich recht unterschiedlich vorgehen.

Optimiert und um den PRIO based multiqueue packet scheduler erweitert haben die Netzwerk-Entwickler die mit 2.6.27 eingeführte Linux TX Multiqueue Implementation (kurz "multiqueue networking"). Erstmals dabei ist der von Nokia-Entwicklern eingebrachte Phonet Stack (Dokumentation) und die von Herbert Xu entwickelte Unterstützung für Transparent Ethernet Bridging over GRE tunnels. Jan Engelhardt brachte zudem zahlreiche sehr umfangreiche Renovierungsarbeiten am Netfiltercode ein, durch die unter anderem die Ebtables-Unterstützung jetzt auf Xtables aufbaut. Die Netfilter-Infrastruktur unterstützt nach fünf Jahren nun wieder "vernünftig" den Betrieb als transparenter Proxy (aus dem Merge request: "Proper transparent proxy support in netfilter. We sort of lost this feature 5 or so years ago, but hey better late than never to get it back :-)").

Das Initialisieren der Hardware und so den Boot-Vorgang beschleunigen sollen einige von Intel-Entwickler Arjan van de Ven eingebrachte Änderungen (u.A. 1, 2, 3, 4). Diese und einige weitere, von Torvalds allerdings zurückgewiesene Änderungen hatte van de Ven bei dem auf der Linux Plumbers Conference gezeigten Netbook eingesetzt, dass nur fünf Sekunden zum Start von Linux benötigte. Bei den meisten Systemen dürfte Linux 2.6.28 aber trotz der integrierten Fastboot-Patches allerdings nur unwesentlich schneller starten, da gängigen Mainstream-Distribution die meiste Zeit mit dem Initialisieren von Userspace-Diensten sowie dem Laden von Anmelde-Manager und Desktop-Umgebung vertrödeln. Wer dennoch die für die Kernel-Initialisierung benötigte Zeit zu Optimierungszwecken näher analysieren will, kann dabei nun auf neue, speziell für diesem Zweck eingerichtete Tracing-Infrastruktur zurückgreifen.

Treibereien In der Unmenge der für Linux 2.6.28 vorgenommenen Änderungen finden sich eine Unmenge an Patches, die die zahlreichen in den Linux-Quellen enthaltenen Treiber verändern. Diese Patches verbessern die Hardware-Unterstützung, erweitern den Funktionsumfang oder korrigieren schlichtweg Fehler. Die in den nebenstehenden Absätze auf dieser und den vorangegangenen Seiten erwähnten Treiberneuerungen sind nur die allerwichtigsten; viele weitere solcher Änderungen finden sich am Ende des Artikels in zwei thematisch grob sortierten Listen mit Kurzbeschreibungen der jeweiligen Änderung (1, 2). Diese verlinken zum jeweiligen Commit im Webinterface des Verwaltungssystems für den Linux-Quellcode, wo sich in der Regel weitere Informationen zu den Hintergründen der jeweiligen Änderung sowie der Patch selbst findet.

Nachdem bereits bei Linux 2.6.27 die Include-Dateien für ARM, IA64, Power und Sparc von include/xyz nach arch/xyz/include wanderten, folgen nun die Dateien für einige weitere Architekturen – darunter MIPS und x86. Die Kernel-Entwickler überholten ferner die APIC-Unterstützung für x86-Systeme an verschiedenen Stellen und erweiterten sie dabei gleich um Unterstützung für x2apic (u. a. 1, 2, 3, 4). Neu dabei ist auch die Unterstützung für die von neueren Intel-Prozessoren verstandenen Befehle XSAVE und XRSTOR, die den Zustand von x87- und SSE-Registern beim Context-Switch sichern oder wiederherstellen.

Der Microcode Loader, über den sich bislang nur der Microcode von Intel-CPUs aktualisieren ließ, unterstützt nach einem maßgeblich von AMD-Entwicklern vorangetriebenen Redesign nun auch neuere AMD-Prozessoren (u. a. 1, 2, 3). Zum Performance- oder Code-Debugging gibt es ferner einige grundlegende Neuerungen – darunter die Kernel Tracepoints (Dokumentation, Beispiele) und der Unified Trace Buffer. Entfernt haben die Kernel-Entwickler irqbalance – bei den meisten Distributionen kümmert sich bereits seit Jahren der gleichnamige Userspace-Daemon um diese Aufgabe.

Auch für Virtualisierungslösungen bringt 2.6.28 wieder einiges Neues. Mit der Virtualisierungslösung KVM lassen sich nun etwa mit Hilfe von Intels VT-D PCI-Geräte an Gäste durchreichen (u. a. 1, 2, 3); zudem gab es eine Optimierung, die den Startprozess von als KVM-Gast laufenden Betriebssystemen um rund 15 Prozent beschleunigen soll. Für Visualisierung mit Containern bietet der Kernel nun einen Container Freezer, mit dem sich ein Container komplett einfrieren lässt (Dokumentation, LWN.net-Artikel) – etwa um einen Cluster-Job mit niedriger Priorität vorübergehend komplett anzuhalten. Der Kernel-Code zum Betrieb als Xen-Gastsystem (DomU) ermöglicht nun auch CPU-Hotplugging; neu aufgenommen wurde ferner Xen-DomU- und IOMMU-Unterstützung für Intels Itanium (IA64). Der Xen-Code zum Aufsetzen einer federführenden Xen-Domäne (Dom0) hat die Aufnahme in 2.6.28 wie erwartet nicht geschafft.

Die bislang erwähnten Neuerungen waren allerdings nur die wichtigsten. Neu dabei sind etwa auch zahlreiche Treiber für das insbesondere bei Embedded-Systemen eingesetzten Framework ASoC (ALSA System on Chip) – darunter Treiber für die Codecs WM8903, WM8580, WM8900 und WM8971 von Wolfson Microelectronics. Neben dem vor einigen Monaten zu Red Hat gewechselten Jaroslav Kysela ist nun auch der bei Suse beschäftigte Alsa-Entwickler Takashi Iwai offiziell als Verwalter der Audio-Treiber in den Kernel-Quellen gelistet.

Bereits bei der Konfiguration lässt sich nun festlegen, welche Gspca-Treiber tatsächlich übersetzen werden sollen. Neu ist die Unterstützung für die DVB-S2-Chips cx24116, si21xx und stv0288; die Treiber cx88 und dw2102 wurden parallel um DVB-S2-Unterstützung erweitert.

Im Netzwerk-Bereich sind die Treiber enic (10 GBit-NICs von Cisco), jme (Gigabit-NICs von JMicron), qlge (10GBit-NICs von Qlogic) und smsc95xx (USB 2.0 10/100 MBit-Adapter mit SMSC LAN9500) hinzugekommen. Erstmals enthalten sind zudem der Treiber fsl_qe_udc für den QE/CPM USB Device Controller von Freescale und ein USB test and measurement class driver für Geräte, die der USB.org-Spezifikation für "USB Test and Measurement devices" entsprechen.

Der Treiber für Toshiba-Notebooks beherrscht nun die Kontrolle zum Ein- und Ausschalten von Bluetooth und nutzt dazu das rfkill-Framework. Der Framebuffer-Treiber für Intel-Grafikchipsätze kennt jetzt den im Eee 901 verbauten 945GME.

Viele weitere weniger wichtige, aber keineswegs bedeutungslose Änderungen finden sich auf der letzten Seite dieses Artikels – im V4L/DVB-Abschnitte finden sich etwa die Nahmen von zahlreichen DVB-Karten und -Adaptern, mit denen der Linux-Kernel in der Version 2.6.28 umgehen kann.

Wie im September auf dem Kernel-Summit beschlossen, haben die Kernel-Hacker den Entwicklungszweig "Linux-Staging" in den Hauptentwicklungszweig aufgenommen (1, 2). Ursprünglich hatte Greg Kroah-Hartman Linux-Staging vor einigen Monaten gestartet, um dort unabhängig vom offiziellen Linux-Kernel gewartete Open-Source-Treiber zusammenzutragen, die den Qualitätsansprüchen der Kernel-Entwickler nicht genügen; damit wollte man anderen Entwicklern eine zentrale Plattform bieten, um die Treiber dort für eine Aufnahme in den offiziellen Linux-Kernel aufzubereiten.

Die Verbesserung solcher Treiber mit teils schwerwiegenden Problemen im Code oder im Design wollen die Kernel-Entwickler aber nun innerhalb des Hauptentwicklungszweigs vorantreiben; alle Kernel-Hacker hätten den Code dort direkt vor Augen und könnten Verbesserungen über die üblichen, ihnen bekannten Wege beisteuern. Um die reifen von den unreifen Treibern klar zu trennen, landete der bisher in Linux-Staging zusammengetragene Code im neuen Verzeichnis driver/staging/. Damit aber auch den Anwendern klar wird, dass diese Treiber größere Probleme haben können, muss man Staging-Code explizit während der Kernel-Konfiguration aktivieren; beim Laden eines Staging-Treibers wird der Kernel zudem als "TAINT_CRAP" markiert, damit bei Fehlerberichten klar ersichtlich ist, dass ein "mistiger" Treiber geladen war und möglicherweise für Probleme jeglicher art (mit)verantwortlich ist (1, 2).

In dem Dutzend in den Hauptentwicklungszweig aufgenommenen Staging-Treibern sind einige recht bekannte, die einige Linux-Distributionen schon seit Jahren ausliefern – etwa der vom WLAN-NG-Projekt entwickelte Treiber prism2_usb für Intersil-USB-Chips oder der Treiber at76_usb für WLAN-Chips von Atmel. Es wird sich zeigen müssen, ob sich durch die Aufnahme in den Staging-Bereich des offiziellen Kernels nun mehr Kernel-Hacker als zuvor berufen fühlen, die Treiber zu verbessern – gerade bei dem alten und komplexen WLAN-NG-Treiber könnte das Schreiben eines von Grund auf neuen Treibers möglicherweise die bessere Herangehensweise sein, sofern jemand überhaupt noch so viel Arbeit für so alte Hardware investieren will.

Linux 2.6.28 bringt zahlreiche Neuerungen, von denen so mancher Linux-Anwender über kurz oder lang profitieren wird. Wenn man aber nicht gerade einen der neuen Treiber braucht, wird es zumeist wohl eher auf "lang" hinauslaufen: Ext4 etwa dürfte erst an wirklich an Bedeutung gewinnen, wenn eine Mainstream-Distribution es als Standard-Dateisystem einsetzt – das wird frühestens in einigen Monaten der Fall sein. Auch die Wireless-USB-Unterstützung ist derzeit noch nicht so wichtig, weil entsprechende Hardware noch rar ist; und bis gängige Desktop-Systeme und durchschnittliche Server von den Performance-Verbesserungen im Speichersubsystem profitieren, vergeht vermutlich auch noch eine Weile. Für einige Herausforderungen der Zukunft haben die Kernel-Hacker aber schon jetzt vorgesorgt.

Entwicklungszyklus des Linux-Kernels [...] Durch den öffentlichen Entwicklungsprozess und einen tiefen Blick in den Kaffeesatz ist heise open und der von der Linux-Foundation gewartete Radarschirm des Linux Weather Forecast bereits bei der Vorstellung einer neuen Kernel-Version dazu in der Lage, einige Neuerungen zu benennen, die die darauf-folgende Version mitbringen dürften. [...] (...mehr...)

Direkt nach der Freigabe von 2.6.28 beginnt die erste, üblicherweise zwei Wochen lange und Merge Window genannte Phase im Entwicklungszyklus des Linux-Kernels, in der Torvalds die umfangreicheren Änderungen für die darauffolgende Kernel-Version in den Hauptentwicklungszweig aufnimmt. Im Grafikbereich planen die Intel-Entwickler nach GEM die Aufnahme der Unterstützung für Kernel-Based Mode-Setting (KMS). Ferner planen offenbar auch die Entwickler des Echtzeitzweiges, einige der Echtzeiterweiterungen für Linux in den Hauptentwicklungszweig zu überführen. Dass es allerdings der Code zum Aufsetzen eines Xen-Hosts (Dom0) in 2.6.29 schafft, scheint derzeit eher unwahrscheinlich – ganz ausschließen kann man es aber auch nicht.

Wie üblich wird das Kernel-Log in der c't und auf heise open in den kommenden Wochen über die wichtigsten in die Hauptentwicklungslinie von Linux integrierten Neuerungen 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 ein oder anderen Fehler korrigieren dürften, den die Kernel-Hacker und Tester bei der Entwicklung von 2.6.28 übersehen haben. Zur CeBit Anfang März oder kurz danach dürfte Torvalds dann die Linux-Version 2.6.29 freigeben. Deren Änderungen wird dann wie üblich ein längeres Kernel-Log wie dieses auf heise open detailliert beschreiben. (thl/c't)

Anhang:

Änderungen an der Infrastruktur

Änderungen an Treibern und der sie umgebenden Infrastruktur

Weiter: Anhang, weitere Änderungen an der Infrastruktur

Die im voranstehenden Artikel erwähnten Neuerungen der jüngsten Linux-Version stellen nur eine Auswahl der bedeutsamsten Änderungen dar – die sprichwörtliche Spitze des Eisbergs, der bei jeder neuen Linux-Version im Hauptentwicklungszweig aus Tausenden von Commits im Quellcodeverwaltungsystem besteht. Zahlreiche weitere ebenfalls wichtige Neuerungen – sozusagen die etwas unterhalb der Eisbergspitze – finden sich im Folgenden als thematisch grob sortierte Liste mit einer Kurzbeschreibung zur Änderung. Bei ihr handelt es sich zumeist um die (teilweise leicht angepassten) englischen Überschriften des Commits, die auf die jeweilige Änderung im Webfrontend des Quellcodeverwaltungssystems verlinkt sind; dort finden sich in der Regel detaillierte Informationen und Hintergründe zur Anpassung sowie der Patch selbst.

Architecture code:

x86:

Others:

Filesystems, VFS, Block, DM, MD:

Security/Crypto/LSM/SELinux:

Documentation:

Various:

Weiter: Anhang, weitere Änderungen an Treibern und der sie umgebenden Infrastruktur

Powermanagement, ACPI and PCI:

Notebook- and PDA specific:

USB General:

UWB/USB Wireless:

Input Subsystem (keyboard, mice, joysticks, ....):

Storage

General:

Libata (newer drivers for Parallel- and Serial-ATA controllers):

IDE (alternative/older drivers mainly for Parallel-ATA controllers):

SCSI:

Network:

General:

LAN specific:

WLAN specific:

Graphics:

Audio:

V4L:

Hardware-Monitoring/I2C/EDAC/Watchdog:

Staging:

Various:

Einen der voranstehenden Auflistung ähnlichen Überblick sowie eine Kurzbeschreibung der wichtigsten Änderungen von 2.6.28 pflegen auch die Kernelnewbies in ihrem Wiki. Wer es noch detaillierter wissen möchte, durchkämmt das mehrere Megabyte große Changelog, das die zu jedem einzelnen Commit im Quellcodeverwaltungssystem von Linux gehörenden Kommentare enthält, welche den jeweiligen Patch des Commits beschreiben. Alternativ kann man sich auch im Git-Webinterface durch die Kernel-Quellen und deren jüngste Änderungen arbeiten; dort hat man zum jeweiligen Kommentar auch gleich den zugehörenden Patch im Zugriff. (thl/c't) (thl)