2.3. Quellensuche

Zur Treiber-Entwicklung wird nicht nur ein aktueller Kernel, sondern die kompletten Kernelquellen benötigt. Sind die Quellen noch nicht auf dem System installiert, lassen sie sich vom offiziellen Kernel-Server http://www.kernel.org runterladen. Die Konfiguration der Quellen, die Kompilierung und die Installation des fertigen Kernels sind im Anhang Kernel generieren und installieren beschrieben.

Die Kernelquellen befinden sich auf dem Linuxsystem unterhalb des Verzeichnisses /usr/src/. Hier wird für jede Kernelversion ein eigener Ordner angelegt. So finden sich die Kernelquellen zur Version 2.6.5 im Verzeichnis /usr/src/linux-2.6.5/. Zusätzlich existiert im Regelfall ein symbolischer Link unter dem Namen linux, der auf den gerade verwendeten Kernel zeigt.

Wir gehen im Folgenden davon aus, dass die Quellen des Kernels, für den die Treiber-Entwicklung stattfinden soll, über das Verzeichnis /usr/src/linux/ auffindbar sind.

Abbildung 2-9. Verzeichnisstruktur des Kernel-Quellcodes

Dass der Quellcode von Linux offen gelegt ist, hat für den Entwickler erhebliche Vorteile: Es stehen genügend Beispiele zur Verfügung, anhand derer sich die Schnittstellen und ihre Verwendung nachvollziehen lassen.

Zur schnelleren Orientierung zeigt Abbildung Verzeichnisstruktur des Kernel-Quellcodes die oberste Verzeichnisstruktur der Kernelquellen mit jeweils einer kurzen Erläuterung.

Für den Treiberentwickler sind die folgenden Verzeichnisse besonders wichtig:

drivers/. Sämtliche Gerätetreiber befinden sich unterhalb dieses Verzeichnisses. Zeichenorientierte Gerätetreiber befinden sich im Unterverzeichnis drivers/char/, blockorientierte im Unterverzeichnis drivers/block/. Die Anbindung an das Gerätemodell (siehe Kapitel Das neue Gerätemodell) befindet sich im Verzeichnis drivers/base/.

Documentation/. Unterhalb dieses Verzeichnisses steht die Dokumentation zum Linux-Kernel, die von den Entwicklern selbst herausgegeben wird. Teile dieser Dokumentation sind leider veraltet. Des Weiteren finden sich hier Hilfsdateien, mit deren Hilfe sich die im Quellcode einkodierte Dokumentation zu wichtigen Systemfunktionen generieren lässt.

include/. Unterhalb dieses Verzeichnisses sind die Header-Dateien aufgelistet. Für den Entwickler sind zum einen die Standard-Header-Dateien unter include/linux/ und zum anderen die architekturspezifischen Header-Dateien unter include/asm-<platform> interessant. <platform> ist auf dem PC durch i386 (also include/asm-i386) zu ersetzen. Innerhalb des Buches referenzieren wir die Dateien unterhalb dieses Verzeichnisses über spitze Klammern. So finden Sie beispielsweise die Datei <linux/fs.h> an der Stelle /usr/src/linux-2.6.5/include/linux/fs.h.

kernel/. In diesem Verzeichnis geht es um das Prozessmanagement des Kernels.


Lizenz