Auch diesen Monat gibt es wieder einen Kernel-Rückblick. Dieser ist, neben vielen anderen interessanten Themen, in der aktuellen Ausgabe von freiesMagazin enthalten.
Hatte Torvalds das Merge Window mit dem 2.6.31-rc1 noch im Juni geschlossen (siehe „Der Juni im Kernel-Rückblick“, freiesMagazin 07/2009 [1]), so kamen trotzdem noch einige wichtige Patches hinzu, die in erster Linie die MIPS- und PowerPC-Architekturen betreffen. Korrekturen an Intels i915-Grafiktreiber und Aufräumarbeiten des Codes für PAE (Physical Address Extension) [2] sorgten für Probleme beim Kompilieren des Kernels auf i386-Systemen, davon war auch der Build-Service für Ubuntus Mainline-Kernel-Archiv [3] betroffen. Der Umfang der Änderungen im -rc2 [4] fiel zwar geringer aus als bei den vergangenen Kernel-Versionen, jedoch nicht genug für Torvalds. Das wurde auch im -rc3 [5] nicht besser, zumal mit einem großen Patch der USB-to-Go-Treiber [6] für Intels Langwell-Chipsatz wieder entfernt wurde. Dieser setzt auf eine Komponente auf, die in den aktuellen Kernel noch gar keinen Eingang gefunden hat und damit nur unnützen Ballast darstellen würde. Besser erging es dem -rc4 [7], der erheblich weniger Änderungen erfahren hatte, dafür kämpfte man mit Problemen der binutils [8], des ccache [9] und des Compilers [10], die zwar außerhalb des Kernels ihre Ursache hatten, aber dessen Erstellung unverzichtbar sind und deren Fehler sich dadurch direkt auf die Kernelentwicklung auswirken.
Mit FUSE (Filesystem in Userspace) [11] wurde es begonnen, indem Dateisysteme in unprivilegierten Kontext ermöglicht wurden, und mit CUSE (Characterdevices in Userspace) folgt man nun weiter dem Trend, Treiber aus dem Kernelspace in den Berechtigungskontext des Anwenders zu verlagern. Dabei stützt sich CUSE auf die FUSE-Implementierung, um älterer Software zum Beispiel eine serielle Schnittstelle im Userspace zur Verfügung zu stellen.
Apropos ab in den Userspace: Einen ähnlichen Weg könnte auch der X-Server gehen. Dank Kernel Modesetting (KMS) [12], das seit Kernel 2.6.29 zur Verfügung steht, könnten die meisten Operationen des X-Servers nun ohne höhere Privilegien auskommen. An die X.org-Entwickler-Mailingliste schickte der Intel-Entwickler Jesse Barnes einen nur etwa 100 Zeilen langen Patch [13], der eine Zusammenarbeit des X-Servers mit KMS ermöglicht. Bis wann ein X-Server ohne root-Rechte tatsächlich auf den Rechnern der Anwender läuft, steht jedoch noch in den Sternen.
Für Staunen sorgte Microsoft, als sie die Veröffentlichung ihres Hyper-V-Treibers für Linux unter der GPLv2 bekannt gaben [14]. Greg Kroah-Hartman kündigte auch gleich die baldige Aufnahme des Treibers in den Kernel an, vorerst ist der Code in Kroah-Hartmans staging-Tree vorhanden. Allerdings folgte auch bald schon die Ernüchterung, als bekannt wurde, dass der Treiber bereits GPL-Bestandteile beinhaltete und in dieser Form vor seiner Veröffentlichung die GPL verletzte [15]. Der Entwickler Stephen Hemminger stieß bereits vor der Veröffentlichung des Treibers auf diesen Umstand [16] und machte Kroah-Hartmann darauf aufmerksam, der dies wiederum an Microsoft weitergab.
Von Schwachstellen bleibt auch der Kernel nicht verschont und ein Grund zur Begeisterung sind sie eigentlich auch nie - eigentlich, da der Entwickler Brad Spengler eine Lücke fand, die von seinem Kollegen Bojan Zdrnja als „interessant“ eingestuft wurde [17]. Betroffen waren die Kernelversionen 2.6.30 und die für RHEL5 angepasste Version 2.6.18. Hier war es möglich, über die NET/TUN-Implementierung einer Variable den Wert NULL zu geben, wodurch es möglich ist, höhere Rechte im System zu erlangen. Das Interessante an diesem Fehler ist nun, dass ein Mechanismus im Code existiert, der verhindern soll, dass die entsprechende Variable NULL wird, die entsprechenden Codezeilen aber von den Optimierungsfunktionen des Compilers entfernt werden. Ein solcher Fehler wird während einer Überprüfung des Quelltextes dann nicht gefunden, da die Funktionen ja noch vorhanden sind.
Derlei Probleme machen immer wieder Aktualisierungen des Kernels notwendig. Damit nicht auch gleich ein Neustart des Systems hinzukommt, entwickelten Mitarbeiter des MIT (Massachusetts Institute of Technology) [18] eine Methode, um Kernel-Patches im laufenden Betrieb ohne Reboot durchzuführen (siehe „Kernel-Rückblick“, freiesMagazin 05/2008 [19]). Diese Methode, Ksplice genannt, die erst dieses Jahr mit einem Preis des MIT gewürdigt wurde (siehe „Der Mai im Kernel-Rückblick“, freiesMagazin 06/2009 [20]), nutzt die Möglichkeit, Kernel-Module zur Laufzeit nachzuladen. Hierzu betreibt das neugegründete Unternehmen Ksplice [21] den Dienst Uptrack, welcher die Kernel-Aktualisierungen bereitstellt, die dann von dem zugehörigen Client in Module verpackt und zum Kernel geladen werden. Dies soll für über 80% der Kernel-Aktualisierungen der letzten Zeit möglich sein und damit nie gekannte Laufzeiten von Linux-Servern ermöglichen. Der Client ist für Fedora und nun auch für Ubuntu [22] verfügbar.
Der Kernel-Juli endete weniger erfreulich, als der langjährige Kernel-Entwickler Alan Cox die Pflege des TTY-Layers aufgab [23]. Der Grund hierfür liegt in einer Diskussion auf der Linux-Kernel-Mailingliste, die Ende Juli ihren Anfang nahm, als ein Problem von kdesu, der grafischen Oberfläche zum Ausführen von Befehlen unter einem anderen Benutzer in KDE, mit einem bereits am 7. Juli eingereichten und im -rc2 enthaltenen Patch, der Fehler in der Umsetzung von Pseudoterminals (pty) [24] beseitigen sollte [25]. Darin beschuldigt Linus Torvalds Cox [26], der darauf hinwies, dass die Implementierung von kdesu seiner Ansicht nach nicht korrekt sei und nur durch Glück bisher funktioniert habe, das Problem anderen zuzuschieben, anstatt den Fehler in seinem Patch zu suchen. Daraufhin entfernte Cox seinen Namen aus der Maintainerliste für den TTY-Layer [27] mit der Aufforderung an Torvalds, das Problem selbst zu beheben. Dennoch wird sich Cox weiterhin in anderen Bereichen an der Kernelentwicklung beteiligen.
Links:
[1] http://www.freiesmagazin.de/freiesMagazin-2009-07
[2] http://de.wikipedia.org/wiki/Physical_Address_Extension
[3] http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.31-rc2/
[4] http://lkml.org/lkml/2009/7/4/76
[5] http://lkml.org/lkml/2009/7/13/380
[6] [de.wikipedia.org]
[7] http://lkml.org/lkml/2009/7/22/483
[8] http://de.wikipedia.org/wiki/GNU_Binutils
[9] http://de.wikipedia.org/wiki/Ccache
[10] http://de.wikipedia.org/wiki/Compiler
[11] http://de.wikipedia.org/wiki/Filesystem_in_Userspace
[12] http://en.wikipedia.org/wiki/Mode-setting
[13] http://lists.x.org/archives/xorg-devel/2009-July/001293.html
[14] http://www.pro-linux.de/news/2009/14467.html
[15] http://www.linux-magazin.de/NEWS/GPL-Verletzung-Microsofts-Code-Spende-m...
[16] http://linux-network-plumber.blogspot.com/2009/07/congratulations-micros...
[17] http://www.linux-community.de/Internal/Nachrichten/Erratum-Faszinierende...
[18] http://mit.edu/
[19] http://freiesmagazin.de/freiesMagazin-2008-05
[20] http://freiesmagazin.de/freiesMagazin-2009-06
[21] http://www.ksplice.com/
[22] http://www.golem.de/0907/68403.html
[23] http://www.heise.de/newsticker/meldung/142773
[24] http://de.wikipedia.org/wiki/Pseudoterminal
[25] http://lkml.org/lkml/2009/7/7/287
[26] http://lkml.org/lkml/2009/7/28/373
[27] http://lkml.org/lkml/2009/7/28/375
