Versionsnumerierung

Bevor wir nun wirklich zur Programmierung kommen, möchten wir noch auf das etwas unübliche Numerierungsschema von Linux eingehen sowie erwähnen, auf welche Versionen sich dieses Buch bezieht.

Beachten Sie zunächst, daß jedes Software-Paket, das in einem Linux-System verwendet wird, seine eigene Versionsnummer hat. Oft bestehen auch gegenseitige Abhängigkeiten unter ihnen: Sie benötigen eine bestimmte Version eines Pakets, um eine bestimmte Version eines anderen Pakets verwenden zu können. Die Linux-Distributoren kümmern sich normalerweise darum, die richtigen Versionen herauszusuchen; der Benutzer, der eine solche Distribution installiert, muß sich also nicht um die Versionsnummern kümmern. Diejenigen, die Systemsoftware selbst ersetzen oder aktualisieren, sind dagegen auf sich allein gestellt. Glücklicherweise kann man in einigen modernen Distributionen einzelne Pakete selbst aktualisieren, wobei die Distributionen die Abhängigkeiten zwischen den Paketen überprüfen. Der Paket-Manager der Distribution erlaubt keine Aktualisierung, sofern die Abhängigkeiten nicht erfüllt sind.

Um die Beispiele aus diesem Buch ausprobieren zu können, brauchen Sie nichts außer dem Kernel; jede halbwegs aktuelle Linux-Distribution kann verwendet werden. Wir geben hier keine genauen Anforderungen an, da die Datei Documentation/Changes in Ihren Kernel-Quellen die beste Quelle für solche Informationen ist, wenn Sie ein bestimmtes Problem haben.

Was den Kernel angeht, sind die Kernel-Versionen mit geraden Nummern (also zum Beispiel 2.2.x und 2.4.x) die stabilen, die für die allgemeine Verwendung vorgesehen sind. Die ungeraden Versionen (wie 2.3.x) sind dagegen Entwicklungs-Snapshots und verändern sich schnell; die neuesten stellen den aktuellen Entwicklungsstand dar, sind aber schon nach ein paar Tagen wieder veraltet.

Dieses Buch behandelt die Kernel-Versionen 2.0 bis 2.4. Wir haben uns darauf konzentriert, alle Features zu zeigen, die Treiber-Autoren in der Version 2.4, der derzeit aktuellen Version, zur Verfügung stehen. Wir behandeln auch 2.2 gründlich, wenn sich 2.2 und 2.4 unterscheiden. Außerdem erwähnen wir Features, die in 2.0 nicht zur Verfügung stehen, und bieten Workarounds an, wo der Platz das zuläßt. Ganz allgemein ist der hier gezeigte Code so geschrieben, daß er auf so vielen Kernel-Versionen wie möglich läuft; er ist auf der Version 2.4.4 und, wo es möglich war, den Versionen 2.2.18 und 2.0.38 getestet worden.

Wir gehen hier nicht speziell auf Kernel-Versionen mit ungeraden Nummern ein. Normale Anwender sollten diese nie verwenden. Entwickler, die mit neuen Features experimentieren, sollten aber immer die aktuellste Entwicklungsversion verwenden, um Fehlerkorrekturen und neue Implementationen von bestimmten Features mitzubekommen. Beachten Sie aber, daß es keine Garantie für experimentelle Kernel gibt,[1] und daß niemand Ihnen helfen wird, wenn Sie ein Problem wegen eines Bugs in einem nicht aktuellen Entwicklungs-Kernel haben. Diejenigen, die ungerade Kernel-Versionen verwenden, haben normalerweise die notwendigen Kenntnisse, um sich selbständig in den Kernel einzuarbeiten — ein weiterer Grund dafür, hier nicht auf Entwicklungs-Kernel einzugehen.

Linux ist nicht mehr nur ein “Unix-Klon für PC-Klone”, sondern ein plattformunabhängiges Betriebssystem; es wird erfolgreich auf Alpha- und SPARC-Prozessoren, 68000- und PowerPC-Plattformen und noch einigen mehr eingesetzt. Dieses Buch ist ebenfalls so plattformunabhängig wie möglich; alle Beispiele sind auf mehreren Plattformen wie PCs, ALpha, ARM, IA-64, M68k, PowerPC, SPARC, SPARC64 und VR41xx (MIPS) getestet worden. Weil der Code sowohl auf 32-Bit- als auch auf 64-Bit-Prozessoren getestet worden ist, sollte er auch auf allen anderen Plattformen kompiliert werden können und laufen. Natürlich gilt das nicht für die Code-Beispiele, die bestimmte Hardware benötigen, aber das ist dann jeweils im Quellcode angegeben.

Fußnoten

[1]

Auch für Kernel mit geraden Nummern gibt es keine Garantie, es sei denn ein kommerzieller Anbieter sieht das in seinen Lizenzbestimmungen vor.