![]() |
|
||||||||||||||||||||
|
|||||||||||||||||||||
|
|||||||||||||||||||||
Marcel Hilzinger
Der Hardwarekauf sorgt selbst bei erfahrenen Linux-Benutzern noch ab und zu für ein fahles Gefühl in der Magengegend. Sie sollten sich deshalb vor jeder Neuanschaffung im Internet schlau machen, ob es für das Gerät Linux-Treiber gibt. Sind diese vorhanden, können Sie die Treiber im Notfall von Hand installieren. Wie bei jedem Handwerk brauchen Sie dazu Zeit und Geduld.
Der Text zeigt im Folgenden am Beispiel der DVB-T-Sticks Hauppauge HVR-900 und WinTV Nova-T-Stick, wie Sie aus dem Quellcode einen Treiber erzeugen und diesen installieren. Einen allgemeinen Artikel, wie man aus Quellcode ein Programm erstellt, finden Sie in EasyLinux 09/2006 [1]. Auch wenn die einzelnen Schritte bei anderen Geräten nicht genau passen, gilt die generelle Vorgehensweise auch für andere Treiber.
Linux unterstützt sehr viel Hardware ohne weiteres manuelles Zutun. Bevor Sie sich auf die Treibersuche machen, sollten Sie deshalb einfach ausprobieren, ob das Gerät wie gewünscht funktioniert. Wenn nicht, sollten Sie so viele Informationen zur Hardware wie möglich sammeln. Bei USB-Geräten hilft meistens die Ausgabe des Befehls
/usr/sbin/lsusb
Sie zeigt die Hersteller- und Geräte-ID der Hardware an. Nicht-USB-Geräte zeigt die Ausgabe von
/sbin/lspci
an. Mit diesen Informationen finden Sie im Internet ziemlich schnell Informationen zu eventuellen Linux-Treibern. Eine in jeder Situation passende Herangehensweise für die Treibersuche gibt es nicht, in der Regel erzielen Sie aber bei der Suchmaschine Google mit den Stichworten linux ''Gerät'' ''ID'' die besten Treffer, wobei Sie ''Gerät'' durch den Hardwarenamen und ''ID'' durch die Hersteller- oder Geräte-ID aus der Ausgabe von lspci beziehungsweise lsusb ersetzen müssen. Unterstützung bei der Treibersuche bieten Ihnen auch die EasyLinux-Mailinglisten [2].
Im Unterschied zu Windows erkennt Linux viele Geräte auch dann, wenn dafür keine Treiber installiert sind. Lassen Sie sich dadurch nicht verwirren. Ob Linux Hardware unterstützt, erkennen Sie meistens an den Systemmeldungen während des Anschließens. Um diese einzusehen, öffnen Sie über [Alt-F2] und den Befehl kdesu konsole ein Terminalfenster mit Root-Rechten und geben danach folgenden Befehl ein:
tail -f /var/log/messages
Bei Geräten, die mit Linux zusammenarbeiten, erscheinen dann im Terminalfenster allerlei Meldungen. Ändert sich an der Ausgabe nichts, hat das System die neue Hardware nicht erkannt. Auch die Meldungen in der Datei /var/log/messages bieten einen guten Ansatz für die Treibersuche im Internet.
Bevor Sie einen Treiber aus dem Quellcode übersetzen können, müssen Sie auf Ihrem Linux-System diverse Entwicklerwerkzeuge installieren. Dazu gehören zum Beispiel die Kernelquellen oder zumindest Teile davon, der C-Compiler gcc und das Kompiliertool make. Benutzen Sie Suse Linux oder OpenSuse, starten Sie zur Installation dieser Werkzeuge YaST über [Alt-F2] und den Befehl kdesu yast2. Wählen Sie in YaST das Modul Software / Software installieren oder löschen und stellen Sie den Filter auf Selektionen (bis Suse Linux 10.1) bzw. Schemata (ab OpenSuse 10.2). Markieren sie nun den Eintrag Linux-Kernel-Entwicklung (Suse Linux 10.1) bzw. Kernel-Entwicklung (OpenSuse 10.2) zur Installation und klicken Sie auf Übernehmen. Für die DVB-Treiber benötigen Sie zudem das Paket Mercurial. Sie finden es auf der Heft-DVD.
Unter Ubuntu installieren Sie über die Paketverwaltung folgende Pakete:
Auf der Kommandozeile erledigen Sie die Installation dieser Pakete über den Befehl
sudo apt-get install linux-heade\ rs-$(uname -r) build-essential m\ ercurial
Benutzen Sie Mandriva Linux 2007, gehen Sie folgendermaßen vor:
Mandriva Linux installiert so die Kernelquellen und die wichtigsten Entwicklerwerkzeuge.
Sind die Entwicklertools installiert, benötigen Sie den Quelltext des Treibers. Für einige DVB-T-Geräte bringen aktuelle Distributionen bereits Treiber mit, für relativ neue Geräte laden Sie sich den Sourcecode aber am besten neu herunter. Die meisten Softwareprojekte bieten davon täglich aktualisierte Versionen zum Download an. Diese heißen Daily Snapshot oder CVS-Snapshot. Für die DVB-Treiber gibt es keinen solchen Code, Sie müssen die Quellen direkt aus dem Versionskontrollsystem des Projekts beziehen. Dazu geben Sie folgenden Befehl ein:
hg clone http://linuxtv.org/hg/~\ mrechberger/v4l-dvb-kernel
Das Programm hg gehört zum Paket mercurial. Ist dieses nicht installiert, benutzen Sie einfach den Quellcode v4l-dvb-kernel-2007-mar-05.tar.gz von der Heft-DVD aus dem Verzeichnis heft-cd/kompilieren.
Jetzt folgt der interessanteste und zugleich komplizierteste Schritt: Sie erstellen aus den Quellen im Textformat den Programmcode in maschinenlesbarem Code. Dazu wechseln Sie in der Regel ins Hauptverzeichnis des Quellcodes und rufen den Befehl make auf. Dieses Programm liest die Informationen der Datei Makefile ein. Befindet sich im Programmverzeichnis keine Makefile-Datei, müssen Sie eventuell in ein anderes Verzeichnis wechseln.
In vielen Fällen liegt dem Quellcode anstelle der Makefile-Datei ein configure-Skript bei, das diese erstellt. Das Skript rufen Sie über
./configure
oder sh configure auf. Es überprüft, welche Entwicklerwerkzeuge in welcher Version vorhanden sind, und trägt diese Informationen in die Datei Makefile ein.
Der DVB-Code funktioniert ohne configure-Aufruf. Wechseln Sie ins Verzeichnis v4l-dvb-kernel und geben Sie hier make ein. Je nach CPU-Geschwindigkeit arbeitet Ihr Rechner jetzt eine Weile. Wie Sie Fehler während des Kompiliervorgangs finden und beheben, lesen Sie im Kasten ''Sherlock Holmes''. Verlief das Übersetzen ohne Probleme, zeigt Ihnen der Befehl
find -name *.ko
an, welche Kernelmodule der neue Treiber mitbringt. Bei den DVB-Treibern sind das aktuell 197 Module. Die meisten Treiber bestehen aber nur aus einem oder zwei Modulen. Unter Mandriva Linux 2007 lassen sich die aktuellen Treiber nicht kompilieren. Wenden Sie sich an die EasyLinux-Mailingliste, wenn Sie einen der genannten DVB-T-Sticks unter Mandriva Linux betreiben möchten.
| Sherlock Holmes |
|
Fehler beim Kompiliervorgang treten meistens dann auf, wenn der Entwickler nicht sauber gearbeitet hat und/oder auf Ihrem System Entwicklerwerkzeuge fehlen. Der make-Befehl schließt dann mit einer Fehlermeldung Error 1 oder ähnlich ab. In vielen Fällen sagt die Fehlermeldung wenig Konkretes darüber aus, warum es zum Abbruch kam. Scrollen Sie aber im Terminalfenster ein paar Zeilen weiter hoch, findet sich in der Regel ein Hinweis auf Dateien, die der Compiler nicht gefunden hat. Betroffen davon sind meistens Dateien mit der Endung .h -- die so genannten Header-Dateien. Beklagt sich make zum Beispiel, dass es die Datei xyz.h nicht gefunden hat, suchen Sie am besten im Internet, zu welchem Paket diese Datei gehört, und installieren das entsprechende Paket nach. Danach rufen Sie make erneut aus. In einigen Fällen benötigen Sie zum Lösen sämtlicher Rätsel viel Geduld und Linux-Know-how. Sehr selten lässt sich ein Treiber gar nicht kompilieren, weil dem Programmierer ein Fehler unterlaufen ist oder der Code nicht zum Kernel passt -- wie bei Mandriva Linux 2007 und den aktuellen DVB-Treibern. Hier hilft es nur, auf eine neue Version des Treibers oder des Kernels zu setzen. Alternativ versuchen Sie Ihr Glück mit einer anderen Distribution. |
Die eigentliche Installation des Treibers ist ganz einfach: Über den Befehl make install kopiert das System die Kernelmodule (das Modul) ins Verzeichnis /lib/modules/Kernelversion/. Kernelversion ist wiederum die Nummer, die der Befehl uname -r ausgibt. Da in dieses Verzeichnis nur der Systemadministrator schreiben darf, benutzen Sie unter Suse Linux und Ubuntu den Befehl
sudo make install
für die Installation. Benutzer von Mandriva Linux schlüpfen zunächst mit dem Befehl su und der Eingabe des Root-Passwortes in die Rolle des Systemadministrators und geben danach make install ein.
Damit Linux vom neuen Treiber Kenntnis nimmt, müssen Sie die Liste der aktuellen Treiber aktualisieren. Dies geschieht über den Befehl depmod -a. In der Regel führt make install den depmod-Befehl ebenfalls aus. Achten Sie hier auf die Ausgabe in der Konsole. Nach der Installation der neuen DVB-Treiber müssen Sie den Rechner neu starten. Normalerweise ist dieser Schritt nicht notwendig.
Nach dem Neustart öffnen Sie über [Alt-F2] und den Befehl kdesu konsole ein KDE-Terminal mit Root-Rechten. Geben Sie hier folgenden Befehl ein, um die Systemmeldungen aktiv mitzuverfolgen:
tail -f /var/log/messages
Schließen Sie jetzt die Hardware an den Linux-Rechner an, sehen Sie in der Ausgabe des Terminalfensters, ob Linux das Gerät erkannt hat und das passende Kernelmodul lädt (Abbildung 1). Dies sollte automatisch passieren. Für den DVB-T-Stick HVR 900 lädt das System das Kernelmodul em28xx-dvb sowie einige allgemeine Module für den DVB- und Sound-Support. Im Falle des Nova-T-Sticks lädt das System das Modul dvb_usb_dib0700 und einige weitere, die für den Support des USB-Sticks benötigt werden. Informationen dazu zeigt die Ausgabe des Befehls /sbin/lsmod an. Sehen Sie beim Anschließen der Hardware keine Meldungen im Systemprotokoll, ist in der Regel etwas schief gelaufen. Sie können dann noch versuchen, die passenden Kernelmodule von Hand zu laden. Dazu rufen Sie den Befehl modprobe Modulname auf.
Abb. 1: Beim Anschließen eines unterstützten Geräts, zeigt das Systemprotokoll diverse Informationen an. |
Abb. 2: Die Kernelmodule lädt das System zwar problemlos, es findet aber die zugehörigen Firmware-Dateien nicht. |
Einige Geräte benötigen eine spezielle Firmware, so auch die meisten DVB-T-Adapter (Abbildung 2). Die Firmware entnehmen Sie entweder der Treiber-CD für Windows oder laden sie aus dem Internet herunter. Passende Firmware-Dateien für die meisten DVB-Karten finden Sie unter [3] und [4]. Die EasyLinux-Distributionen speichern die Firmware-Dateien im Verzeichnis /lib/firmware. Unter OpenSuse 10.2 gibt es dieses Verzeichnis eventuell noch nicht. Legen Sie es dann einfach an, zum Beispiel auf der Konsole mit Root-Rechten über den Befehl
mkdir /lib/firmware/
Die zum Nova-T-Stick passende Firmware-Datei heißt dvb-usb-dib0700-01.fw. Sie finden diese in einem tar-Archiv unter [5]. Für die Hauppauge HVR 900 laden Sie von [4] das Archiv firmware_v3.tgz herunter und entpacken die darin enthaltenen Dateien nach /lib/firmware. Auf der Konsole genügen dazu die folgenden Befehle:
cd /lib/firmware wget http://konstantin.filtschew\ .de/v4l-firmware/firmware_v3.tgz tar xvfz firmware_v3.tgz
Arbeiten Sie lieber grafisch, starten Sie Konqueror zwei Mal über [Alt-F2] und den Befehl kdesu konqueror und verschieben so die Firmware-Dateien aus dem Archiv nach /lib/firmware. Die im Artikel vorgestellten DVB-T-Geräte funktionieren nach diesen Schritten unter Ubuntu und Suse Linux problemlos mit dem KDE-Programm Kaffeine. (mhi)
| Infos |
|
[1] Andrea Müller: Handarbeit -- Programme aus dem Quellcode übersetzen, EasyLinux 09/2006, S. 82.
[2] EasyLinux-Mailinglisten: http://www.easylinux.de/Kontakt/Mailinglisten [3] Firmware für Nova-T-Stick: http://www.omskakas.se/wp-content/uploads/2007/01/linuxtv-firmwaretar.bz2 [4] Firmware für em28xx-Karten: http://konstantin.filtschew.de/v4l-firmware/ [5] Firmware für DVB-T-Karten: http://linuxtv.org/downloads/firmware/ |
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.
Druckerfreundliche Version |
Feedback zu dieser Seite |
Datenschutz |
© 2012 Linux New Media AG |
Last modified: 2008-11-05 17:26
[Linux-Magazin]
[LinuxUser]
[Linux-Community]
[Admin-Magazin]
[Ubuntu User]
[Smart Developer]
[Linux Events]
[Linux Magazine]
[Ubuntu User]
[Admin Magazine]
[Smart Developer]
[Linux Magazine Poland]
[Linux Community Poland]
[Linux Magazine Brasil]
[Linux Magazine Spain]
[Linux Technical Review]