Aus EasyLinux 02/2008

Treiberkonzepte unter Linux

Antriebsstark

Wer neue Hardware kauft, legt unter Windows die mitgelieferte CD ein und installiert die notwendigen Treiber. Für Linux-Anwender sieht die Lage anders aus: Meist läuft das Gerät sofort – oder gar nicht.

Das Logo klebt auf fast jedem Gerät im Computer-Handel: „Designed for Vista“. Eine Liste weiterer kompatibler Windows-Versionen steht direkt daneben. Linux erwähnen aber die wenigsten Verpackungen. Das heißt nicht zwangsläufig, dass die Geräte unter Linux den Dienst verweigern, aber auf der mitgelieferten CD werden Sie vergeblich nach Linux-Treibern suchen. Nur wenige Hersteller schreiben sich Linux-Kompatibilität auf die Fahnen, und eine mit dem unter Windows üblichen Treiber-Installer (Abbildung 1) vergleichbare Installationsroutine gibt es auch dort nicht.

Abbildung 1: Unter Windows laufen Treiberinstallation immer nach demselben Muster ab.
Abbildung 1: Unter Windows laufen Treiberinstallation immer nach demselben Muster ab.

Treiber ist nicht gleich Treiber, und verschiedene Gerätetypen machen oft völlig unterschiedliche Herangehensweisen notwendig. So unterscheiden sich die unter Windows gewöhnlich unter dem Begriff „Treiber“ subsummierten Programme und Dateien in ihren Funktionen deutlich. Beispielsweise liefern Multifunktionsgeräte mit Drucker, Scanner und Fax meist eine Windows-Anwendung mit, welche die Einzelfunktionen unter einer einhaltlichen Oberfläche zusammenfasst. Vom Anwender meist unbemerkt ermöglichen betriebssystemnahe Programme im Hintergrund der Desktop-Software die Kommunikation mit dem Gerät.

Anwendungen installieren Sie unter Linux selbst, unabhängig vom Gerätetreiber. Die Verbindung zwischen Betriebssystem und Desktop-Applikation schaffen die Kernel-Module. Als Schnittstelle dienen dabei die so genannten „Device Files“, die Gerätedateien.

Unix-Philosphie

Ein Ausflug in die Geschichte der Unix-Betriebssysteme erklärt den Hintergrund. Lange vor Linux entstanden zahlreiche andere Varianten des Betriebssystems Unix. Sie eint unter Anderem der Ansatz: „Everything is a file“ – alles ist eine Datei. Das bedeutet, dass Textdokumente oder Konfigurationsdateien oberflächlich ebenso aussehen wie die genannten Gerätedateien. Letztere befinden sich unter Linux unterhalb des Verzeichnisses /dev/.

Für Anwender-Software bietet das einen gewaltigen Vorteil. Sie schreibt ausgehende Daten in eine Gerätedatei und hat sich damit ihrer Verantwortung entledigt. Eine einfache Möglichkeit, beispielsweise eine Musikdatei abzuspielen, sieht so aus:

cat sound.wav > /dev/dsp

Der Kommandozeilenbefehl cat gibt eine beliebige Datei aus, das Zeichen > leitet die Ausgabe um, in diesem Fall in die für Soundkarten zuständige Gerätedatei /dev/dsp. Ohne Umleitung würde der Inhalt der Sounddatei auf der Textkonsole landen. In der Praxis funktioniert diese Methode aber meist nicht, denn es kann immer nur ein Programm auf das Gerät zugreifen. Das Soundsystem von KDE nimmt die Soundkarte beim Login in Beschlag und verwaltet sie für alle KDE-Musikprogramme.

Analog funktioniert die Eingabe. Eine handelsübliche Maus kommuniziert beispielsweise über die Gerätedatei /dev/input/mice mit der grafischen Oberfläche. Geben Sie auf der Kommandozeile den Befehl

cat /dev/input/mice

ein, erscheinen bei jeder Mausbewegung einige Zeichen auf dem Bildschirm (Abbildung 2). Damit können Sie als Mensch nichts anfangen, aber die grafische Oberfläche bewegt den Maus-Cursor an Hand eben dieser Informationen.

Abbildung 2: Die Ausgabe der Gerätedateien lässt sich anzeigen.
Abbildung 2: Die Ausgabe der Gerätedateien lässt sich anzeigen.

Module

Die Anwender-Software schreibt ausgehende Daten in die entsprechende Gerätedatei, eingehende liest sie bei Bedarf von einer anderen. Für den Datenverkehr zwischen Gerätedateien und dem Endgerät erklärt sich von nun an das Betriebssystem, also der Linux-Kernel für zuständig.

Moderne Linux-Distributionen liefern Kernel aus, die möglichst alle verfügbaren Hardware-Treiber enthalten. Damit der Kernel für viele Geräte sofort einsatzbereit ist, ohne dass sämtliche Treiber den Speicher durchgehend belasten, bietet Linux ein modulares System. Der feste und unveränderbare Teil der Standard-Kernel enthält nur die Funktionen, auf die das Betriebssystem zum Starten nicht verzichten kann.

Läuft Linux erstmal, lädt es während des Boot-Vorgangs oder auch beim Einstecken eines USB-Geräts im laufenden Betrieb die weiteren nötigen Treiber als Kernel-Module nach. Dieses Verfahren hält den Speicherbedarf so klein wie möglich und erlaubt dabei mit einem Standard-Kernel den Zugriff auf alle unterstützten Geräte. Hardware-Anbieter können für ihre Geräte auch eigene Module mitliefern, sie müssen aber exakt zum verwendeten Kernel passen.

Der Zugriff auf eine Hardware-Komponente besteht unter Linux im einfachsten Fall aus zwei Schritten: Die Hardware-Erkennung findet das Gerät und lädt das entsprechende Kernel-Modul. Dann starten Sie als Benutzer die gewünschte Desktop-Anwendung, die über die Gerätedatei mit der Hardware kommuniziert.

Mittlerweile erkennt Linux unterstützte Hardware-Komponenten automatisch, so dass Sie sich gewöhnlich nicht darum zu kümmern brauchen, das passende Modul zu laden. Möchten Sie erfahren, welche Module sich derzeit im Speicher befinden, geben Sie in einer Textkonsole den Befehl /sbin/lsmod ein (Abbildung 3).

EasyLinux 02/2008 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: