Kernel-Log: Stable-Kernel analysiert, Linux ohne Firmware, neue Grafiktreiber | heise online

Kernel-Log: Stable-Kernel analysiert, Linux ohne Firmware, neue Grafiktreiber

Die Entwicklung von Linux 2.6.34 ist angelaufen und sorgt für hitzige Diskussionen auf der LKML. LWN.net hat Linux 2.6.32.9 auf Sicherheitskorrekturen analysiert und fast zwanzig davon gefunden. Linux-Libre entfernt unfreie Dateien aus dem Kernel und neue Grafiktreiber für Radeon-Karten bringen zahlreiche Verbesserungen.

vorlesen Druckansicht 4 Kommentare lesen
Lesezeit: 11 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Einen Tag nach der Freigabe von Linux 2.6.33 in der letzten Februarwoche begann Linus Torvalds mit der Aufnahme der größten Änderungen für Linux 2.6.34. Bislang hat er knapp fünftausend Commits vorgenommen, durch die der Kernel um beinahe zweihundertausend Zeilen gewachsen ist. Neu zum Kernel gestoßen sind unter anderem der Treiber für die Magic Mouse von Apple, eine Python-Scripting-Engine für das Tracing-Subsystem sowie der Virtio-Server vhost_net, der den Overhead beim Datenaustausch mit Gastsystemen via Virtio reduzieren soll.

Das Merge Window ist noch einige Tage offen, dieses Mal aber möglicherweise statt zwei voller Wochen nur 10 oder 12 Tage – das deutete Torvalds an, um die Subsystem-Verwalter zu animieren, ihre Änderungen nicht auf den letzten Drücker einzusenden. Einige bereits für 2.6.34 eingereichte Verbesserungen an SquashFS sowie die Patches zur Aufnahme des Subsystems zum Ansprechen von Helligkeitssensoren (Ambient Light Sensors/ALS) hat Torvalds indes bereits kritisiert (1, 2); sofern er seine Meinung nicht nochmal ändert, dürfte beides frühestens bei 2.6.35 zum Linux-Kernel stoßen.

Torvalds wies zudem die Verwalter der grundlegenden Infrastruktur für Treiber ("Driver Core") und den des Direct Rendering Managers (DRM) nachhaltig darauf hin, dass neue Kernel-Funktionen bei der Kernel-Konfiguration nicht standardmäßig eingeschaltet werden sollten, wenn es dafür keinen triftigen Grund gibt (1, 2). Die DRM-Programmierer änderten daraufhin einige der eingesandten Patches, die Torvalds schließlich am Donnerstag Abend in den Hauptentwicklungszweig aufnahm.

Erst kurz danach bemerkte Torvalds bei einem Test, worauf der DRM-Subsystem-Verwalter in seinem ersten Git-Pull-Request bereits hingewiesen hatte: Eine inkompatible API-Änderung an dem bei Linux 2.6.33 aufgenommenen Nouveau-Treiber für Grafikhardware von Nvidia. Wer den auf dem Kerneltreiber aufsetzenden Nouveau-Treiber für X.org nutzen will, muss diesen sowie die Libdrm daher parallel mit dem Kernel aktualisieren – das erschwert anderen Testern sowie Anwendern den Alltag, denn sie können nicht einfach zwischen Kerneln vor und nach der Aufnahme der API-Änderungen hin- und her wechseln, wenn sie den Nouveau-Treiber für X.org einsetzen.

Torvalds kritisierte das nachhaltig und löste damit eine längere, teils hitzige und noch andauernde Diskussion aus. In der weisen einige Nouveau-Entwickler darauf hin, dass Torvalds doch selbst auf eine zügige Aufnahme gedrängt hatte, obwohl diese und weitere Änderungen an den Schnittstellen zu erwarten gewesen waren – daher ist der Nouveau-Treiber auch als unreifer Staging-Treiber markiert, denn bei richtigen Treibern werden die Schnittstellen zum Userspace normalerweise nur in abwärtskompatibler Weise geändert.

Die im vorangegangene Kernel-Log bereits erwähnte Kernel-Version 2.6.32.9 ist nach wie vor der neueste Kernel der Stable-Series. Auch dessen Freigabe-Mail enthielt wie so häufig bei Stable-Kerneln die Empfehlung, auf die neue Version zu wechseln, ohne explizit auf Korrekturen für Sicherheitslücken hinzuweisen.

Allerdings hat sich Jonathan Corbet, Gründer von Linux Weekly News (LWN) und selbst am Linux-Kernel mitarbeitend, die 96 Änderungen einer Vorabversion von 2.6.32.9 exemplarisch näher angesehen und in einem mittlerweile auch Nichtabonnenten von LWN.net zugänglichen Artikel beschrieben. Gleich zu Beginn weist er darauf hin, das die Analyse sehr viel Arbeit war und es wahrscheinlich sei, dass er einige Dinge übersehen hätte.

Das war auch tatsächlich der Fall, denn Corbet hatte 18 der Änderungen als potenziell Sicherheitslücken beseitigende Korrekturen eingestuft ("Security-related fixes"). Schon der erste Kommentar zum Artikel wies aber darauf hin, dass eine weitere Korrektur auch in diese Kategorie gehört hätte, denn die Lücke lässt sich für einen Angriff nutzen und hat sogar eine CVE-Nummer; die Leser spekulieren in weiteren Kommentaren über einige andere potenziell ausnutzbare, aber nicht als Sicherheitslücke eingestufte Korrekturen.

Das zeigt, dass sich Anwender selbst kompilierter Kernel am besten wirklich einfach updaten, wie es die Freigabe-Mails der Stable-Series empfehlen – ein solches Update dürfte nämlich häufig erheblich weniger Arbeit machen als eine genaue (und möglicherweise fehlerhafte) Analyse der Änderungen. Anwender von Distributionskerneln brauchen sich darum allerdings keine Gedanken machen, denn dort kümmern sich der Distributor um das Bereitstellen von Updates – dabei muss man aber hoffen, dass die Mitarbeiter alle potenziell Sicherheitslücken korrigierende Änderungen auch erkennen und in ihre Kernel einbauen.

Die Free Software Foundation Latin America (FSFLA) hat Linux-2.6.33-libre veröffentlicht. Zu ihr gehören die erheblich überarbeiteten und dadurch potenziell schneller arbeitenden Libre-Kernel-Deblob-Skripte, die alle Teile im Quellcode von Linux 2.6.33 entfernen, die die FSFLA als unfrei ansieht; wer die Skripte nicht selbst laufen lassen möchte, kann auch ein um Firmwares bereinigtes Archiv von 2.6.33 direkt herunterladen.

Entfernt werden beim Libre-Kernel unter anderem einige mit dem Hauptentwicklungszweig von Linux ausgelieferte Firmware-Dateien, die verschiedene Treiber in die Chips der Geräte laden müssen, um die Hardware in Betrieb zu nehmen. Die Lizenz dieser Dateien erlaubt eine Weiterverbreitung zusammen mit dem Linux-Kernel; da jedoch kein Quellcode beiliegt, werden solche "Binary Large Objects" (Blobs) als unfrei angesehen.

Mit dem Libre-Kernel oder Linux-Distributionen, die solche und ähnliche Firmware-Dateien nicht mitliefern, laufen daher einige Hardware-Komponenten nicht oder nur eingeschränkt. Das kann sogar Hauptprozessoren betreffen, weil diese häufig Fehler enthalten, die durch sogenannte Microcode-Patches behoben oder umgangen werden. Das Mainboard-BIOS spielt solche Microcode-Updates normalerweise vor dem Booten von Betriebssystemen ein. Da viele Anwender das BIOS aber nur selten aktualisieren, haben die Prozessor-Hersteller schon vor vielen Jahren Schnittstellen geschaffen, über die auch Betriebssysteme früh im Boot-Prozess frischen Microcode einspielen können. So lassen sich CPU-Fehlerkorrekturen über die Update-Funktionen moderner Betriebssysteme einfach und schnell weit verteilen. Anwender von Linux-Distributionen, die Microcode-Updates nicht ausliefern, nutzen so die ältere Microcode-Version im Prozessor, die möglicherweise einige CPU-Bugs nicht behebt.

Die Kernel-Entwickler um David Woodhouse arbeiten übrigens schon länger daran, die teilweise enge Verquickungen zwischen Treibern und Firmware zu beseitigen. Einige Distributionen nutzen die Firmware-Dateien des Kernel bereits nicht mehr und liefern statt dessen ein von Woodhouse auf Kernel.org gepflegtes Archiv mit den Firemware-Dateien aus.

Nachdem die Entwickler der X.org-Open-Source-Grafiktreiber für Radeon-Grafikchips schon länger keine neue Version freigegeben haben veröffentlichten sie kürzlich die in wesentlichen kleinere Verbesserungen und Fehlerkorrekturen enthaltene Version 6.12.5. Größere Neuerungen soll die 6.13er-Reihe bringen, wie die Freigabe-Mail zu dessen Vorabversion 6.12.191 erläutert. Sie bringt etwa experimentelle und rudimentären Unterstützung für Evergreen-GPUs, die auf den im vergangenen Herbst eingeführten Radeon-Karten der HD-5000-Serie sitzen; auch soll diese Version mit dem KMS-Treiber für Evergreen-Grafikchips zusammenarbeiten, den die Kernel-Entwickler gestern für Linux 2.6.34 aufgenommen haben.

Zu den weiteren Neuerungen zählen KMS- und DRI2-Unterstützung für alle Radeon-GPUs bis hin r700-Serie, die auf der Radeon-Karten der Reihe HD-4000 sitzen; ebenfalls neu ist die Unterstützung für die Beschleunigungsfunktionen von GPUs der Serien r600 und r700 (Radeon-HD-Serien 2000, 3000 und 4000). Diese und einige andere in der Freigabe-Mail aufgeführte Neuerungen finden sich aber bereits jetzt in einigen Linux-Distributionen, da die teilweise bereits Code aus dem Hauptentwicklerzweig der Treiber eingesetzt haben, aus dem sich die Version 6.13 ableitet.

Auch die Intel-Entwickler bereiten neue Treiber vor und haben mit xf86-video-intel 2.10.901 den erste Release Candidate der X.org-Intel-Treiber 2.11 veröffentlicht. Zu einer ihrer größten Neuerungen zählt die im Kernel-Log bereits erwähnte Unterstützung einiger neuen Funktionen von DRI2, die eine bessere Synchronisation der Anzeige neuer Bilddaten mit dem Bildwechsel ermöglicht.

Die Entwickler der Treiber für die virtuelle Grafikhardware einiger VMware-Hypervisor haben unter dessen die Testphase hinter sich gelassen und kürzlich die Version 11.0.0 des von ihnen gepflegten X.org-Treibers xf86-video-vmware veröffentlicht. Intel-Entwickler Eric Anholt hat derweil die Version 2.4.19 der libdrm veröffentlicht.

Kernel

  • Drei Entwickler von Evidence haben die zweite Version eines im Rahmen des EU-Projekts ACTORS (Adaptivity and Control of Resources in Embedded Systems) entwickelten Deadline-Prozess-Scheduler für Linux zur Begutachtung an die LKML gesandt. Ein kann durch die Vorhersagbarkeit des Verhaltens insbesondere für Realtime-Umgebungen interessant sein.
  • Die Kernel-Quellen wuchsen während der Entwicklung von Linux 2.6.33 um durchschnittlich 9000 Zeilen Code; bei 2.6.29 waren es über 14.500 Zeilen gewesen. Diese und einige andere statistische Daten finden sich in einer von Greg Kroah-Hartmann gepflegten OpenOffice-Tabelle, die er kürzlich in einem Dent erwähnte.
  • Atheros-Entwickler Luis R. Rodriguez ("mcgrof") hat im Wiki der Linux-WLAN-Entwickler eine Seite angelegt, die die Zusammenarbeit der verschiedenen für die Entwickler der WLAN-Unterstützung wichtigen Kernel-Hacker beschreibt und den Fluss der Änderungen illustriert.

Kernel-Umland ("Plumbing layer") und Userland-Treiber

  • Über Server des Debian-Projekts sind zahlreiche Videos der auf der diesjährigen Fosdem im "Distribution Developer Room" gehaltenen Vorträge abrufbar – etwa einer zum im vorangegangene Kernel-Log bereits erwähnten Bootchart2. Es finden sich auch ein Video, in dem Harald Hoyer das modularen und distributionsübergreifend angelegten Dracut zum Erstellen von Initial Ramdisks (Initrd) erklärt; die zugehörigen Präsentationsfolien stellt der Entwickler auf seiner Homepage bereit.
  • Junio C Hamano hat die Git 1.7.0.1 veröffentlicht.
  • Die Entwickler des Projekts Hplip haben die Version 3.10.2 der gleichnamigen Treiber für Drucker und Multifunktionsgeräte von HP veröffentlicht. Zu den nun unterstützten Geräten zählen laut Release-Notes verschiedene Geräte der Officejet-Baureihe; für zahlreiche andere Modelle gab es Verbesserungen.
  • Lennart Poettering erläutert in einem Blog-Eintrag einige Probleme rund um die Lautstärkeregelung über PulseAudio und erklärt, wie man Treiber-seitige Probleme findet und zu deren Beseitigung beiträgt.

Grafik

  • Tias Guns hat die Version 0.6.0 des Xinput Calibrator freigegeben. Sie soll laut Freigabe-Mail verschiedenen, meist rudimentäre und Treiber-spezifische Programme zur Kaltbration von Touchscreens ersetzen und habe dieses Ziel schon zu weiten Teilen erreicht. Der Entwickler fordert daher die X-Entwickler der Distributionen auf, eine Aufnahme der Software zu erwägen
W eitere 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" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Der Autor des Kernel-Logs zwitschert unabhängig davon über einige Kernel-Log-Themen bei Identi.ca und Twitter als "@kernellogauthor". (thl).