Linux-Magazin-Logo Die Zeitschrift für Linux-Professionals

Zacks Kernel-News

Umstrukturierungen im Intelligent Input/Output System

Kurz nachdem Markus Lidel zum offiziellen Maintainer des Intelligent Input/Output System (I20) ernannt wurde, nahm er eine gründliche Umstrukturierung des Codes vor. Diese radikalen Änderungen widersprechen der traditionellen Vorstellung von einer Trennung zwischen stabilem und Entwicklerkernel. Markus Lidels betreut nämlich einen Teil des aktuellen stabilen Kernels - und an dem sollte er theoretisch keine Veränderungen vornehmen, die dessen Stabilität gefährden könnten.

Das alte System weicht aber nicht nur an dieser Stelle auf: Auch Andrew Morton führte zahlreiche Neuerungen in das Entwicklungsmodell des Kernels ein und erklärte die Stabilität nicht unbedingt zum höchsten Entwicklungsziel. Stattdessen kündigte er an, dem Kernel weiterhin neue Features und Verbesserungen hinzuzufügen.

Bei dieser Entscheidung spielen Linux-Distributoren wie Debian und Red Hat eine große Rolle. Bereits in der Vergangenheit lieferten diese modifizierte Kernel aus und Morton entschloss sich daher - mit Zustimmung von Linus Torvalds - dazu, ihnen einen Großteil der Verantwortung für die Stabilität aufzubürden. Bisher waren die Distributoren etwas wie Kernelentwickler zweiter Klasse, die lediglich die offiziellen Releases für ihre Bedürfnisse anpassten. Nun sind sie Teil eines erweiterten Entwicklungsmodells für den Kernel und damit als wichtige Partner in den Entwicklungsprozess einbezogen.

Setzt sich dieses Modell durch, dann ist der Code auf Kernel.org in Zukunft eher für Entwickler als für Anwender bestimmt. Erst nach den Anpassungen der Distributoren formt sich daraus ein stabiler Kernel, wie ihn Endanwender auf ihren Systemen installieren.

Markus Lidels Arbeit an I2O lässt sich mit der Neuimplementierung des Virtual- Memory-Subsystems vergleichen, die Linus Torvalds zu Beginn der Version 2.4 vornahm. Während damals viel Kritik laut wurde, scheint solches Vorgehen nun zum Normalfall zu werden.

Debatte um Schnittstellen für Binärmodule im Kernel

Um den PWC-Treiber und seine Unterstützung für bestimmte Philips-Webcams ist eine spannende Auseinandersetzung entbrannt. Der Treiber besteht bereits seit Jahren aus einem Open- und einem Closed-Source-Teil. Der offene Teil stellt ein Hook zur Verfügung, über das sich der reine Binärteil leicht in den Kernel linken lässt. Das erschien dem Maintainer damals richtig, um Kamerachips zu unterstützen.

Solche Schnittstellen sind im Kernel jedoch explizit verboten. Linus Torvalds sprach sich wiederholt dagegen aus, da sich auf diesem Weg die Bedingungen der GPL umgehen lassen. Zudem erleichtern sie es Hardwareherstellern, von proprietären Binärtreibern zu profitieren, statt lieber Open-Source-Treiber anzubieten.

Greg Kroah-Hartmann, Kontaktmann zwischen den Entwicklern des PWC-Treibers und dem Kernel, entschloss sich schließlich, das Hook aus einer neueren Release des Maintainers Nemosoft Unv zu entfernen, woraufhin dieser forderte, den Treiber gänzlich aus dem Kernel zu entfernen, da jener nun unvollständig sei.

Dieser Vorgang wirft viele Fragen auf. Nemosoft veröffentlichte den Code unter einer Open-Source-Lizenz. Juristisch ist es unmöglich, die Verwendung zu untersagen. Nach der Ansicht von Linus Torvalds lassen sich Entscheidungen über den Kernel jedoch nicht allein an Lizenzen festmachen. Daher erklärte er sich bereit, den Treiber zu entfernen, was ihm viel Kritik einbrachte.

Alan Cox wies darauf hin, dass auf diese Weise eine einzelne Person den Kernel unbrauchbar machen könne. Sollte Cox beispielsweise aus der Entwicklung ausscheiden und seine Arbeit mitnehmen, fiele die nächste Release recht klein und unbrauchbar aus. Linus Torvalds geht es aber nicht nur um die Rechte der Entwickler. Er möchte vor allem keinen Code im Kernel lassen, der nicht aktiv betreut wird. In diesem Punkt dürften sich die Entwickler einig sein: Sollte Nemosoft seinen Code nicht weiter pflegen, verschwindet er ohnehin - es sein denn, es findet sich ein neuer Maintainer.

Währenddessen unterzog der Entwickler Luc Saillard das umstrittene Binärmodul einem Reverse Engineering und erstellte auf dieser Basis einen neuen - freien -Treiber. Seine Lösung stellt annähernd die gleiche Funktionalität wie das Original zur Verfügung.

Treiber für Grafikkarte GMX 2000 verschwindet

Die Unterstützung für die Grafikkarte GMX 200 von 3Dlabs wird voraussichtlich aus dem Kernel 2.6 entfernt. Diese Karte ist so selten, dass die Maintainer bezweifeln, dass davon überhaupt noch relevant viele Exemplare im Umlauf sind. Außerdem erschwert der Quellcodeteil unnötig die Pflege des Codes für ähnliche Karten. David Arlie und andere Entwickler, die den Code betreuen, sehen derzeit keine Rechtfertigung mehr für den großen Aufwand.

Um den Treiber aus dem Kernel zu entfernen, gehen die Maintainer in mehreren Schritten vor: Zunächst kennzeichnen sie den Treiber als "broken". Danach entfernen sie die zahlreichen Sonderfälle aus dem Code, die nötig waren, um mit den Eigenheiten der GMX 2000 umzugehen. Nach diesen Aufräumarbeiten wird der Treiber wohl tatsächlich broken sein. Melden sich daraufhin keine entrüsteten Benutzer, fliegt auch der eigentliche Code aus dem Linux-Kernel.

Der Wunsch, selbst obskure Hardware zu unterstützen, ist in der Entwicklergemeinde tief verwurzelt, hat aber auch so prominente Gegner wie Linus Torvalds. Er schätzt praktische Machbarkeit mehr als abstrakte Korrektheit und zog sich deswegen schon oft den Zorn von Puristen zu. Jedoch schuf er mit dieser Einstellung ein Klima, in dem die Entwicklung schnelle Fortschritte machte.

Allgemein bedeutet das allerdings nicht, dass die Kernelentwicklung seltene Hardware ignoriert. Im Gegenteil, es gibt viele Projekte, die sich mit älterer Hardware beschäftigen und an denen immer noch aktiv gearbeitet wird. Die Unterstützung hängt aber von mehreren Faktoren ab, einer davon ist beispielsweise, wie viele Benutzer bestimmte Geräte überhaupt noch einsetzen.

Gelegentlich gestaltet ein Entwickler einen neuen Treiber wesentlich komplexer als eigentlich nötig, da er künftige Erweiterungen bereits vorwegnimmt. In den meisten Fällen weisen die Mitentwickler ihn dann an, die Komplexität zu reduzieren. Das bedeutet für den Autor zwar, dass ein Teil seiner Arbeit vergeblich war, der Kernel bleibt aber frei von überflüssigen Konstrukten und somit flexibel.

PPC-Maintainer

David Engebretsen, Maintainer der PowerPC-Architektur, ist zurückgetreten. David war bei IBM Leiter des Teams, das die ursprüngliche Portierung von Linux auf die PowerPC 64 vornahm. Seit 2002 arbeitete er dann als Maintainer für den PowerPC-Teil des Linux-Kernels.

Seine Nachfolger sind Paul Mackerras und Anton Blanchard, die sich beide seit Jahren mit PowerPC beschäftigen. Allein während der Entwicklung der Kernelversionen 2.5 und 2.6 reichten sie hunderte Patches für diese Architektur ein und trugen so wesentlich zur Weiterentwicklung bei.

Nachfolger für »hdparm«

Mark Lord, Maintainer des IDE-Treibers, schrieb auch das Programm »hdparm«. Mit dem IDE-spezifischen Werkzeug lassen sich zahlreiche Festplattenparameter einstellen, um die Performance zu verbessern. Allerdings ist es ein wenig umständlich zu bedienen und zudem ausschließlich auf IDE-Platten beschränkt.

Daher beschloss Jeff Garzik, die Funktionalität in einem neuen Programm namens »blktool« nachzubilden, das mehr Bedienungskomfort sowie Unterstützung für mehr Plattentypen bieten soll. Zurzeit konzentriert sich zwar auch »blktool« auf IDE, Jeff möchte die Unterstützung jedoch bald auf SCSI, I2O und Raid ausdehnen. Langfristig soll das Programm mit allen Block Devices arbeiten, wie schon der Name »blktool« suggeriert.

Die eigenwillige Kommandozeilensyntax von »hdparm« möchte Jeff in seiner Neuentwicklung bedienerfreundlicher gestalten. Sein erster Vorschlag gefiel aber Alan Cox nicht. Über die richtige Benutzerschnittstelle könnte es noch eine längere Debatte geben. (mhu/agr)