Vorwort

Inhalt
Alessandros Einführung
Jons Einführung
Die Zielgruppe dieses Buches
Organisation des Buches
Hintergrundinformationen
Weitere Informationsquellen
Online-Versionen und Lizenz
Konventionen in diesem Buch
Danksagungen

Oberflächlich betrachtet ist dieses Buch ein Buch über das Schreiben von Gerätetreibern für Linux-Systeme. Das ist natürlich ein durchaus lohnenswertes Ziel; es steht nicht zu erwarten, daß der Zustrom neuer Hardware in nächster Zeit abnimmt, und irgend jemand muß ja dafür sorgen, daß alle diese Spielzeuge auch unter Linux funktionieren. Aber in diesem Buch geht es auch darum, wie der Linux-Kernel arbeitet und wie Sie sich das für Ihre Bedürfnisse und Interessen zunutze machen können. Linux ist ein offenes System, und wir hoffen, daß es mit diesem Buch für eine Vielzahl von Entwicklern noch offener und zugänglicher wird.

Es hat sich seit der ersten Auflage dieses Buches viel im Linux-Bereich geändert. Linux läuft jetzt auf viel mehr Prozessoren und unterstützt viel mehr verschiedene Hardware. Viele der internen Programmierschnittstellen haben sich signifikant verändert. Daher wurde diese zweite Auflage notwendig. Dieses Buch behandelt die Version 2.4 des Kernels mit allen darin enthaltenen neuen Features, schaut aber immer auch im Interesse derjenigen, die das benötigen, auf die älteren Versionen zurück.

Wir hoffen, es bereitet Ihnen genauso viel Vergnügen, dieses Buch zu lesen, wie es uns Spaß gemacht hat, dieses Buch zu schreiben.

Alessandros Einführung

Als Elektrotechniker und “Selbermacher” habe ich immer gern meinen Computer benutzt, um externe Hardware zu steuern. Seit den Zeiten des Apple ][e meines Vaters habe ich nach einer anderen Plattform gesucht, mit der ich meine selbstgebastelten Schaltkreise verbinden und auf der ich eigene Treiber für diese schreiben könnte. Unglücklicherweise waren die PCs der achtziger Jahre noch nicht leistungsstark genug, weder auf der Software- noch auf der Hardware-Ebene: Das innere Design des PCs war deutlich schlechter als das des Apple ][e und die verfügbare Dokumentation war lange Zeit wenig zufriedenstellend. Aber dann erschien Linux, und ich entschied mich, ihm eine Chance zu geben: ich kaufte eine teure 386er-Hauptplatine und keinerlei kommerzielle Software.

Zu dieser Zeit benutzte ich Unix-Systeme an der Universität. Dieses schlaue Betriebssystem begeisterte mich sehr, insbesondere wenn man die noch schlaueren Hilfsprogramme hinzunimmt, die das GNU-Projekt für die Benutzer entwickelt. Den Linux-Kernel auf meinem eigenen PC laufen zu lassen ist immer eine interessante Erfahrung gewesen, und ich konnte nun sogar meine eigenen Gerätetreiber schreiben und wieder mit dem Lötkolben spielen. Ich erzähle den Leuten immer noch, daß ich “ein Hacker werden möchte, wenn ich groß bin”. Linux ist die perfekte Plattform für solche Träume. Da weiß ich nicht einmal, ob ich jemals groß werde.

In dem Maße, in dem sich Linux weiterentwickelt und reift, interessieren sich auch immer mehr Leute dafür, Treiber für ihre selbstgestrickten Schaltungen oder auch für kommerzielle Geräte zu entwickeln. Oder wie Linus Torvalds es einmal formulierte: “Es brechen Zeiten an, in denen Männer wieder Männer sind und ihre eigenen Gerätetreiber schreiben.”

1996 programmierte ich an meinen eigenen Spielzeug-Gerätetreibern, mit denen ich mit geliehener, gespendeter oder sogar selbstgebauter Hardware herumexperimentieren konnte. Ich hatte bereits einige Seiten zum Kernel Hacker's Guide von Michael Johnson beigetragen und begann, Kernel-bezogene Artikel für das Linux Journal zu schreiben, das Magazin, das Michael gegründet hatte und leitete. Michael brachte mich mit Andy Oram von O'Reilly zusammen, der sein Interesse an einem ganzen Buch über Gerätetreiber bekundete, und ich nahm diese Aufgabe an, die mich eine ganze Zeitlang auf Trab hielt.

1999 wurde deutlich, daß ich nicht allein die Energie aufbringen konnte, das Buch zu aktualisieren; meine Familie war gewachsen, und ich hatte genug Programmieraufgaben, um mich allein mit dem Schreiben von GPL-Software zu beschäftigen. Außerdem war der Kernel größer und die API reifer und umfassender geworden. An dieser Stelle bot Jonathan seine Hilfe an: Er hatte genau die richtigen Fähigkeiten und den Enthusiasmus, um mit der Aktualisierung anzufangen und mich bei Kurs und im Zeitplan zu halten — der dann doch ins Rutschen geriet. Er ist ein unschätzbarer Kumpel bei dieser Arbeit gewesen, die er mit seinen Kenntnissen und seiner Einsatzbereitschaft deutlich mehr vorangebracht hat, als ich das allein hätte tun können. Ich habe wirklich gern mit ihm zusammengearbeitet, sowohl auf fachlicher als auch auf persönlicher Ebene.