Die Neuerungen von Linux 3.4

Einen ganzen Schwung größerer Änderungen gab es bei den Treibern für AMD-, Intel- und Nvidia-Grafik. Das neue x32-ABI will die Vorteile von x86-64-CPUs nutzen, aber den Overhead von 64-Bit-Code vermeiden. Btrfs soll flotter arbeiten und Yama verhindern, dass ein Prozess einem anderen in den Speicher schaut.

In Pocket speichern vorlesen Druckansicht 33 Kommentare lesen
Lesezeit: 10 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Lediglich zwei Monate haben die Kernel-Entwickler zur Fertigstellung der jetzt veröffentlichten Version 3.4 benötigt. Neuerungen bringt sie aber dennoch im gewohnten Umfang; sie sind für Administratoren von Rechnerparks genauso von Bedeutung wie für Anwender, die Linux auf Desktop-PCs oder Notebooks einsetzen.

Mehr Infos

Im Detail

Bereits in den vergangenen Wochen hat das Kernel-Log in der Serie "Was Linux 3.4 bringt" detailliert über die Neuerungen von Linux 3.4 berichtet:

  1. Infrastruktur
  2. Storage und Treiber
  3. Grafiktreiber

Der nebenstehende Text fasst die wichtigsten Neuerungen in Linux 3.4 zusammen und gibt einen Ausblick auf den Kernel 3.5.

Nur wenige Stunden nachdem Nvidia mit der Vorstellung der GeForce GTX 680 den Generationswechsel auf die Kepler-Architektur einläutete, erweiterten die Kernel-Entwickler den Kernel-Treiber Nouveau um rudimentäre Unterstützung für diese Grafikkarte. Zunächst unterstützte der DRM-Treiber nur das Einstellen der Bildschirmauflösung (Modesetting). Nachdem auch die Entwicklerversionen der Nouveau-Treiber von Mesa 3D und X.org Unterstützung für die Karte erhielten, rüsteten einige Patches für den Kernel-Treiber die Fähigkeit nach, Beschleunigungsfunktionen der Karte über den Direct Rendering Manager (DRM) nutzen.

Damit sind im Prinzip alle Bausteine zusammen, um aktuelle Nvidia-Grafikarten unter Linux zu nutzen. Es dürften allerdings noch einige Monate vergehen, bis den größeren Linux-Distributionen alles für die GTX 680 benötigte von Haus aus beiliegt – so fehlt es derzeit unter anderem noch an einer freien Firmware.

Der Radeon-DRM-Treiber des Kernels 3.4 unterstützt die Grafikkerne der Familien "Southern Islands" (SI) und "Trinity" (TN) (u. .a 1, 2, 3, 4). Zur Southern-Islands-Generation zählen die Grafikchips Tahiti, Pitcairn und Verde, die auf den Mittelklasse- und High-End-Karten der Radeon-HD-Serien 7700, 7800 und 7900 sitzen. Ein Gallium3D-Treiber für Mesa 3D, der mit dem DRM-Treiber im Kernel zusammenarbeitet, befindet sich allerdings noch in Entwicklung.

Trinity ist der Codename für eine mit Grafikkern ausgestattete Reihe von Prozessoren, die AMD Mitte Mai vorgestellt hat; sie beerben die Llano-Prozessoren aus AMDs Serie A, die vornehmlich in PCs und Notebooks der unteren und mittleren Preisklassen eingesetzt werden. Unterstützung für die Trinity-GPU ist schon in den Treibern von Mesa 3D und X.org enthalten und dürfte vermutlich bald in den Linux-Distributionen auftauchen. Mit dem um Trinity-Unterstützung erweiterten Radeon-Kernel-Treiber im Kernel 3.4 sollte Trinity-Grafik daher jetzt unter Linux funktionieren.

Die Intel-Entwickler haben einen Patch eingebracht, durch den Linux 3.4 die Grafikkern-Stromspartechnik RC6 bei Intels Sandy-Bridge-Prozessoren mit GPU standardmäßig verwendet. Da die Technik die Leerlauf-Leistungsaufnahme typischerweise um drei bis fünf Watt senkt, kann die Änderung die Akku-Laufzeit von Notebooks spürbar verlängern und die Geräuschentwicklung merklich senken.

Zum Kernel stieß ferner der einfache DRM-Treiber "udl", der das DisplayLink-Protokoll spricht, das bei der Ansteuerung von Monitoren via USB zum Einsatz kommt. Aufgenommen wurde auch das das Framework Prime/Dma-Buf, über das Grafikkerne ohne viel Overhead Daten austauschen sollen. Langfristig soll das die Unterstützung für im Betrieb zuschaltbare Grafikchips verbessern, damit in Systemen mit Hybrid-Grafik der schnelle AMD- oder Nvidia-Chip die von ihm berechneten Bilder ohne viel Aufwand zur Ausgabe auf den Monitor an die Prozessorgrafik übergeben kann. Bislang nutzt allerdings noch kein Treiber die neue Infrastruktur.

Für x86-64/x64-Prozessoren übersetzte Kernel bieten Programmen ab Linux 3.4 das neue x32-ABI (u. a. 1). Dafür kompilierte Programme haben Zugriff auf die die 64-Bit-Register und -Datenpfade der 64-Bit-Prozessoren, arbeiten aber nur mit 32-Bit-Pointern – die reichen für viele typische Aufgabenstellungen aus und belegen weniger Arbeitsspeicher als 64-Bit-Pointer. Grob gesprochen vermeidet das x32-ABI so den Overhead, den ein voller 64-Bit-Betrieb mit sich bringt, macht aber dennoch einige wichtige Vorteile von 64-Bit-x86-Prozessoren nutzbar.

Das neue ABI, das vor allem von Intel-Entwicklern vorangetrieben wurde, ist offenbar vornehmlich für den Embedded- und Mobil-Markt gedacht: Die dort eingesetzten Programme dürften problemlos mit 4 GByte Speicher und damit mit 32-Bit-Pointern auskommen, sodass sich der höhere Speicherverbrauch eines vollwertigen 64-Bit-Betriebs nicht lohnt.

Das neu aufgenommene Security-Modul Yama kann Prozessen verbieten, über den Funktionsaufruf Ptrace (Process Trace) den Speicher anderer Prozesse zu untersuchen; SELinux beherrscht seit Kurzem eine ähnliche Funktion.

KVM kann mit 3.4 nun auch PCI-2.3-Geräte an Gäste weiterreichen, die sich auf dem Host eine Interrupt-Leitung mit anderen PCI-Geräten teilen. Durch Änderungen am Xen-Code (u. a. 1, 2) können aktuelle Versionen des Xen-Hypervisors den Prozessortakt anpassen oder die CPU in Kurzzeitschlafzustände (C-States) versetzen, wenn man Linux 3.4 als Dom0-Kernel einsetzt.

Zum SCSI-Subsystem stieß der Treiber Virtio-Scsi, der sich zusammen mit der gleichnamigen Unterstützung in Qemu zu einer Datenträgeremulation eignet, die mit recht wenig Overhead den Datenverkehr zwischen Host und Gast regelt. Der Treiber soll laut seinem Entwickler flexibler sein, besser skalieren und einfacher in der Handhabung sein als Virtio-Blk, das Ähnliches bietet, dem aber Funktionen für bestimmte Einsatzgebiete fehlen sollen.

Optimierungen am Metadaten-Handling von Btrfs sollen die Performance des weiterhin experimentellen Btrfs-Dateisystems verbessern. Ferner gab es einige Verbesserungen rund um die Fehlerbehandlung von Btrfs.

Der MD-Software-RAID-Code kann nun auch RAID-10-Arrays so verkleinern oder vergrößern, dass sich beispielsweise zusätzlicher Speicherplatz im Verbund nutzen lässt, nachdem man die verwendeten Datenträger gegen größere ausgetauscht hat. Das für Thin Provisioning zuständige Device-Mapper-Target Dm-Thin beherrscht beherrscht nun Discard. Zudem kann es ein schreibgeschützt eingehängtes Image mehrfach exportieren und die auf diesen Export geschriebenen Daten an anderer Stelle sichern – solch ein "read only external snapshot origin" ist bei der Virtualisierung interessant, um ein Image einer Betriebssysteminstallation als gemeinsame Basis für mehrere Gastsysteme zu verwenden.

Unter den vielen Änderungen an den Treibern und der Infrastruktur für DVB-Hardware ist Unterstützung für die KWorld PC150-U ATSC hybrid tuner card sowie die AzureWave 6007 und damit verwandte USB-2.0-DVB-T/C-Hardware; neu ist auch ein Treiber für DVB-T-Hardware mit dem Realtek RTL2831U..

Der Broadcom-WLAN-Treiber Brcmfmac spricht nun auch die USB-Chips Bcm43235/6/8 an; der Ralink-Treiber rt2x00 unterstützt ab 3.4 den WLAN-Chipsatz RT5372. Der für den gleichnamigen Realtek-Chip zuständige Treiber rtl8187 bietet nun AD-HOC support. Mit Linux 3.4 stößt ein Treiber für Synaptics-Touchpads zum Kernel, die über USB angebunden sind. Einige größere Änderungen gab es beim Treiber für Samsung-Notebooks; durch eine davon kann der Treiber nun bei einigen Geräten die Tastatur-Beleuchtung einschalten.

Der Hyper-V-Storage-Treiber zog vom Staging-Zweig ins SCSI-Subsystem um. Damit konnte nun auch der letzte Treiber für Microsofts Virtualisierungsschnittstelle den Bereich für Treiber verlassen, die den Qualitätsansprüchen der Kernel-Entwickler nicht genügen – die Microsoft-Treiber dürften daher bald auch in Distributionen auftauchen, die gar keine oder nur ausgewählte Staging-Treiber mitliefern.

Linux 3.4 besticht durch die vielen Verbesserungen an den Grafiktreibern. Für sinnvollen Einsatz der allerneuesten Chips von AMD und Nvidia braucht man zwar fürs Erste weiter die proprietären Treiber der Hersteller; in einigen Monaten dürften die Open-Source-Treiber in Kernel und die darauf aufbauende Unterstützung in Libdrm, Mesa 3D und den Treibern für den X-Server wohl so weit gereift sein, dass sie für viele Einsatzgebiete gut genug sind.

Das x32-ABI ist vielleicht bei Desktop-PCs oder Servern die Mühe nicht wert, aber könnte einem bei x86-Smartphones und Tablets mit Linux in Zukunft häufiger begegnen. Zu den wichtigsten Neuerungen von Linux 3.4 zählen ferner die Verbesserungen an Btrfs, die mit Yama verbesserte Abschottung von Prozessen sowie die vielen neuen und verbesserten Treiber.

Direkt nach der Freigabe von Linux 3.4 beginnt nun das typischerweise zwei Wochen lange Merge Window, in dem die Kernel-Entwickler den Großteil der Änderungen für die nächste Linux-Version in den Hauptentwicklungszweig integrieren.

Zur Aufnahme bei Linux 3.5 ist etwa Reshape-Support für den MD-Code vorgesehen, mit dessen Hilfe sich die Verteilung der Daten eines RAID 10 verändern lässt. Zur Integration liegen auch Patches bereit, durch die sich ein Linux-Rechner ("SCSI Target") per Firewire oder UASP (USB Attached SCSI Protocol) einem anderen System ("SCSI Host") gegenüber als SCSI-Datenträger ausgeben kann; viele Apple-Systeme bieten solch einen "FireWire target disk mode" schon länger.

Es gibt wieder einmal Hinweise, die auf eine Integration des für Userspace-Tracing interessanten Uprobes-Codes hindeuten. Die Entwickler dieses Codes arbeiten schon seit langem auf eine Integration hin, zu der es trotz Hinweisen auf eine baldige Aufnahme bislang nicht gekommen ist. Der durch Udev und Systemd bekannte Entwickler Kay Sievers hat zudem einige Verbesserungen für die Logging-Funktionen ausgearbeitet, die möglicherweise in Linux 3.5 einziehen; Hintergründe dazu liefert der LWN.net-Artikel "Toward more reliable logging".

Das Kernel-Log in c't und auf heise open wird wie üblich über diese und andere Neuerungen am Linux-Kernel und in dessen Umfeld berichten. Sofern Torvalds und seine Mitstreiter im üblichen Tempo arbeiten, dürfte Linux 3.5 ungefähr Ende Juli erscheinen.

Linux-
Version
Anzahl
Dateien¹
Zeilen
Quelltext²
(Ohne
Dokum.)
Entwick-
lungs-
zeitraum
Anzahl
Commits³
Diffstat⁴
2.6.38 35864 14208866
(13289311)
69 Tage 9542 9133 files changed,
 747809 insertions(+),
 455603 deletions(-)
2.6.39 36705 14533582
(13600071)
65 Tage 10268 10985 files changed,
 847537 insertions(+),
 523387 deletions(-)
3.0 36781 14646952
(13688408)
64 Tage 9153 7946 files changed,
 555406 insertions(+),
 442033 deletions(-)
3.1 37084 14770469
(13804451)
94 Tage 8692 9181 files changed,
 728892 insertions(+),
 604658 deletions(-)
3.2
37617 14998651
(14017008)
73 Tage 11881 12608 files changed,
 1646421 insertions(+),
 1418238 deletions(-)
3.3 38082 15166074
(14173668)
74 Tage 10550 10698 files changed,
 599745 insertions(+),
 432324 deletions(-)
3.4 38566 15383860
(14370856)
63 Tage 10899 11086 files changed,
 576156 insertions(+),
 358369 deletions(-)
¹ find . -type f -not -regex '\./\.git/.*' | wc -l
² find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l (find . -name *.[hcS] -not -regex '\./\.git.*' | xargs cat | wc -l)
³ git-log --no-merges --pretty=oneline v3.(x-1)..v3.(x) | wc -l
⁴ git diff --shortstat v3.(x-1)..v3.(x)
Mehr Infos

Linux 3.4 herunterladen

Der neue Kernel steht über Kernel.org zum Download bereit; in Kürze dürften auch die Spiegelserver diese Version ausliefern. Den Quellcode gibt es in Tar-Archiven, die mit Gzip, Bzip2 und XZ komprimiert wurden. Die Echtheit des Archivs lässt sich nach dem Dekomprimieren über eine Signatur-Datei prüfen:

[thl@thl tmp]$ wget --quiet http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.tar.sign \
http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.tar.xz
[thl@thl tmp]$ xz -d linux-3.1.tar.xz
[thl@thl tmp]$ gpg --verify linux-3.1.tar.sign
gpg: Unterschrift vom Mo 24 Okt 2011 09:17:58 CEST mittels RSA-Schlüssel ID 00411886
gpg: Korrekte Unterschrift von "Linus Torvalds <torvalds@linux-foundation.org>"
gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!
gpg: Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.
Haupt-Fingerabdruck = ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H Open" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige später meist auch im Kernel-Log erwähnte Themen als "@kernellogauthor" bei Identi.ca und Twitter. (thl) (thl)