Sprechstunde
Der Scanner scannt nicht, der Drucker druckt nicht und die WLAN-Karte war auch schon mal gesprächiger: Jeder Linux-Nutzer kennt solche oder andere Fälle bockender Hardware. Glücklicherweise lassen sich die meisten Probleme mit ein wenig Recherche in den Griff bekommen.
- Andrea MĂĽller
Normalerweise gelingt die Installation einer Linux-Distribution auf fast jedem Rechner, und der größte Teil der Hardware funktioniert perfekt out of the box. Probleme kann es allerdings bei PCs mit brandaktuellen Komponenten geben; auch Geräte wie Drucker, Scanner, Webcams und WLAN-Karten machen gelegentlich Ärger. Die meisten Linux-Treiber bringt der Kernel von Haus aus mit, doch da diese oft unabhängig vom Hersteller entwickelt werden, der oft nicht einmal die Spezifikation seiner Geräte offenlegt, dauert es unter Linux ein wenig länger, bis das System beispielsweise alle Features einer neuen Grafikkarte unterstützt [1]. Selbst wenn es freie Treiber gibt, heißt das gerade bei neuer Hardware nicht, dass sie schon in der eigenen Distribution enthalten sind. Dann gilt es für den Anwender, entweder auf Distributionspakete zu warten oder selbst Hand anzulegen und einen Treiber zu kompilieren.
Von Anfang an nur optimal von Linux unterstützte Hardware anzuschaffen ist zwar ein guter Rat, jedoch immer dann nicht umsetzbar, wenn die Geräte bereits vor Linux da waren. Plant man einen Hardware-Kauf, sollte man sich vorher auf den in der Tabelle „Linux-Hardware-Seiten“ aufgelisteten Webseiten oder über eine Google-Suche informieren, welche Geräte gut mit Linux zusammenarbeiten. Hat man eine Komponente, die unter Linux nicht auf Anhieb funktioniert, muss man nicht gleich die Flinte ins Korn werfen und den Kauf von Ersatz planen. Mit Recherche im Netz und Nachfragen bei anderen Nutzern stellt sich oft heraus, dass das Gerät doch zur Zusammenarbeit zu bewegen ist. Wenn man Glück hat, liegt nur ein Konfigurationsfehler vor oder es ist möglich, Hardware über einen Treiber, den die eigene Distribution nicht mitbringt, in Betrieb zu nehmen.
Informationen auf die Schnelle
Bei einigen Geräteklassen lohnt es sich, bevor man im eigenen System auf Fehlersuche geht, erst einmal herauszufinden, ob die Hardware überhaupt mit Linux zusammenarbeitet. So gibt es beispielsweise für Drucker, Notebooks und Scanner Datenbanken im Netz (siehe Tabelle „Linux-Hardware-Seiten“), die die Linux-Tauglichkeit der Geräte bewerten und Konfigurationshilfen liefern. Sehr aktuell und gut sortiert ist die Druckerdatenbank der Linux Foundation. Sie teilt die Geräte in perfekt, gut, schlecht und gar nicht unterstützt ein, und bietet eine Suchfunktion, mit der man nach Treibern, einem bestimmten Druckermodell oder allen Geräten eines Herstellers suchen kann. Die Suchergebnisse enthalten eine kurze Beschreibung, Nutzerkommentare und verlinken auf Konfigurationshinweise für die verschiedenen Linux-Drucksysteme (in aktuellen Distributionen in der Regel Cups) und das Diskussionsforum, in dem man sich mit anderen Nutzern austauschen kann. Einen anderen Weg geht die Seite Tuxmobil, die Erfahrungsberichte über mobile Geräte sammelt. Hier steuern die Anwender Beschreibungen zu Notebooks, PDAs und Handys bei. Diese beziehen sich meistens auf eine bestimmte Distribution, sodass man die Anleitung auf das eigene System übertragen muss.
Anamnese
Wird man weder auf einer dieser Seiten noch bei einer ersten Google-Recherche fündig oder bekommt ein Gerät mit den dort verfügbaren Informationen nicht ans Laufen, muss man das Problem eingrenzen. Linux liefert eine Reihe von Bordmitteln mit, die einem bei der Fehlersuche helfen. Mit ihnen kann man herausfinden, welche Hardware im Rechner steckt und welche Treiber das System lädt. Weitere Informationen findet man in den Log-Dateien: Dort listet das System beim Start die erkannte Hardware auf und protokolliert alle Meldungen beim Laden der Treiber. Auch Fehler im laufenden Betrieb und das Anstecken von USB-Geräten vermerkt Linux in den Log-Dateien.
Log-Dateien liegen unter Linux im Ordner /var/log. Um die Kernel-Meldungen beim Systemstart, die moderne Linux-Distributionen hinter einem farbigen Bootscreen verbergen, zu lesen, ruft man nach dem Hochfahren als Root das Kommando dmesg | less auf. Im Betrachter less durchsucht man die Meldungen mit Eingabe des Schrägstrichs und einem Suchbegriff nach dieser Zeichenkette. Um beispielsweise Problemen mit dem Powermanagement auf die Spur zu kommen, sollte man nach dem Begriff ACPI suchen. Zeilen, die Informationen zu IDE-Geräten enthalten, beginnen mit IDE, solche, die PCI-Hardware betreffen, mit PCI. Kennt man den passenden Suchbegriff nicht, kann man es mit Warning, Error und Failed als Suchbegriff versuchen oder die Ausgabe durchblättern und so nach Auffälligkeiten suchen.
Verweigert per USB angeschlossene Hardware den Dienst, kann man anhand der Log-Dateien in Echtzeit mitverfolgen, was passiert, wenn man das Gerät anschließt. Alle Kernel-Meldungen landen in der Datei /var/log/messages. Arbeitet man mit Debian, Ubuntu oder Mandriva Linux, kann man stattdessen die Datei /var/log/syslog überwachen, in die die Systeme alle Meldungen umleiten. Um zu sehen, was beim Anschließen der Hardware passiert, öffnet man ein Terminal-Fenster und gibt dort als Benutzer root
tail -f /var/log/messages
ein. Der Parameter -f steht für follow und mit ihm aufgerufen zeigt less alle Änderungen der Datei sofort an. Beim Einstecken des USB-Geräts gibt der Kernel Informationen über die Hardware aus und verrät, ob er versucht, einen Treiber zu laden.
Durchleuchtet
Bei auf dem Mainboard integrierter Hardware muss man meist erst einmal herausfinden, was für ein Chip im Rechner werkelt. In Laptops und PCs eingebaute Modems werden selbst im Handbuch ohne Herstellerangabe und bestenfalls mit ihrer Geschwindigkeit erwähnt. Meistens handelt es sich um sogenannte Win-Modems, bei denen die Treibersoftware die komplette Steuerung übernimmt. Um zu erfahren, ob man ein bestimmtes Modell unter Linux überhaupt nutzen kann, muss man wissen, um welchen Chipsatz es sich handelt. Ähnlich sieht es bei WLAN-Karten aus. Die Information, von welchem Hersteller eine Karte stammt, nutzt nur wenig, denn die Anbieter verwenden oftmals in Geräten einer Baureihe unterschiedliche Chipsätze - je nachdem, welcher gerade günstig zu haben ist.
Aufschluss über PCI-Geräte erhält man mit dem Befehl lspci. Diesen kann man auch als normaler Benutzer aufrufen, falls das Programm jedoch im Verzeichnis /sbin liegt, muss man es mit dem vollen Pfad aufrufen. Der Befehl listet Geräte und Controller auf und zeigt zu jedem Gerät den Hersteller und einen Gerätenamen an. Diese Informationen bezieht lspci aus der Datei pci.ids, die bei den meisten Linux-Distributionen im Verzeichnis /usr/share liegt. Debian und seine Derivate speichern die Datei unter /usr/share/misc, unter Fedora liegt sie im Ordner /usr/share/hwdata. Dort werden den Vendor- und Device-Nummern, die lspci anzeigt, wenn man das Tool mit dem Parameter -n aufruft, Hersteller- und Gerätenamen zugeordnet.
Zeigt lspci bei einem Gerät nur den Hersteller und den Eintrag „Unknown Device“ an, heißt das nicht automatisch, dass Linux es nicht unterstützt. Wahrscheinlich ist nur die Datei pci.ids zu alt, um die Hardware schon zu kennen. Umgekehrt bedeutet ein erkanntes Gerät in der Ausgabe von lspci nicht unbedingt, dass es dafür auch einen Treiber gibt. Ist die pci.ids nicht aktuell, erhält man beim Sourceforge-Projekt pciids eine neue Version [2]. Debian bringt zum Aktualisieren der Datei das Script update-pciids mit, das die neue Liste herunterlädt und unter /usr/share/misc speichert. Findet man in dieser Liste das Problemgerät, sollte man sich die Hersteller- und Geräte-ID notieren und gezielt nach dieser in Verbindung mit Linux suchen. Enthält die Ausgabe von lspci -n beispielsweise die Zeile
02:05.0 Class 0200: 10b7:9200 (rev 78)
erfährt man mit einer Google-Suche nach 10b7:9200 und Linux, dass die sich dahinter verbergende Netzwerkkarte unter Linux mit dem Kernel-Modul 3c59x läuft.
Das Pendant zu lspci für USB-Hardware heißt lsusb und gibt ohne Parameter aufgerufen alle angeschlossenen USB-Geräte und deren Hersteller aus. Die Mapping-Datei, anhand der das Programm die Vendor- und Produkt-IDs Herstellern und Geräten zuordnet, ist die usb.ids im Verzeichnis /usr/share beziehungsweise /usr/share/misc auf Debian-Systemen und /sr/share/hwdata unter Fedora und Red Hat. Möchte man auch die IDs sehen, erreicht man das mit dem Aufrufparameter -v. Damit die Ausgabe nicht allzu unübersichtlich wird, kann man die Ausgabe mit dem Parameter -s gefolgt von der Nummer des USB-Bus, einem Doppelpunkt und der Gerätenummer auf ein Gerät beschränken. So zeigt
lsusb -v -s 002:004
das Gerät mit der Nummer 004 am zweiten USB-Bus.
Informationen zu geladenen Kernel-Treibern liefert der Befehl lsmod. Er zeigt alle geladenen Treibermodule an, erfasst also nicht die Treiber, die fest in den Kernel einkompiliert sind. Mit diesem Befehl stellt man fest, ob ein Treiber überhaupt geladen ist. Zusätzliche Informationen erhält man mit dem Aufrufparameter -v. Das Kommando modinfo modulname gibt Informationen über das Kernelmodul aus. Meistens findet sich dort eine Beschreibung, die Lizenz, unter der das Modul steht, die Versionsnummer und eine Liste der Parameter, die man dem Modul mitgeben kann. Hat man herausgefunden, welches Kernel-Modul für ein bestimmtes Gerät zuständig ist und ist dieses nicht geladen, kann man das mit dem als Root ausgeführten Kommando
modprobe modulname
selbst erledigen und anhand eines Blicks in die Log-Dateien erkennen, ob es dabei zu einem Fehler kommt. Zusätzliche Informationen erhält man mit dem Aufrufparameter -v. Funktioniert die Hardware nach dem Laden des Treibers, trägt man den Namen des Moduls in die Datei /etc/modules ein, damit der Kernel ihn beim nächsten Booten automatisch lädt.
Die meisten Distributionen bringen grafische Tools mit, die eine Übersicht der vorhandenen Hardware erhalten. Unter OpenSuse findet man die Informationen im Systemverwaltungsprogramm YaST, Mandriva fasst sie im Abschnitt Hardware des Kontrollzentrums zusammen. Distributionsunabhängig liefert auch KDE Programme mit, die die vorhandene Hardware auflisten, wie beispielsweise eine grafische Oberfläche für lspci, die sich über den Ordner System/Hardware im KDE-Menü starten lässt.
Den vollständigen Artikel finden Sie in c't 20/2007.
Literatur
[1] Mirko Dölle, Kernel-Beschmutzer, Warum manche Linux-Treiber unerwünscht sind, c't 18/07, S. 156
[2] PCI-IDs-Projekt
| "Linux-Pannenhilfe" | |
| Artikel zum Thema "Linux-Pannenhilfe" finden Sie in der c't 20/2007: | |
| Diagnose und Hilfe im Netz | S. 124 |
| Hardware-Probleme lösen | S. 128 |
(amu)