Hardware-Treiber unter Linux losrobos@users - Anti

Transcription

Hardware-Treiber unter Linux losrobos@users - Anti
Hardware-Treiber unter Linux
[email protected]
Es ist bekannt, dass Linux mehr Hardware unterstützt als jedes andere
Betriebssystem – und das überwiegend bereits im
Standard- Lieferumfang. - Jedoch kann es
natürlich auch vorkommen dass es einmal
hakt-
Info: wie werden Hardware-Treiber und Firmware unter Linux entwickelt?
Unter Microsoft Windows ist dies einfach, die Hardware-Hersteller entwickeln die Treiber und die
Firmware die ein Gerät benötigt um zu funktionieren selbst oder beauftragen für diesen Zweck
Software-Entwickler, die Hardware-Hersteller geben dazu dem Software-Entwickler die nötigen
Hardware-Spezifikationen (alle benötigten Infos über die Hardware) und zumeist noch einige
Testgeräte damit der Software-Entwickler den Treiber gleich testen kann. - Die Hardware wird dann
ganz einfach mit dem Treiber auf einer CD oder dem Gerät selbst (UTMS-Modems, DVB-Sticks)
ausgeliefert, die Treiber werden vom User auf dem System installiert und das Gerät funktioniert
zumeist ganz gut.
Unter Linux funktioniert dies zumeist ganz anders, nur sehr wenige Hardware-Hersteller
produzieren selbst die Treiber für Linux, NVIDIA, ATI, HP... Noch weniger Hardware-Hersteller
liefern diese Treiber dann vielleicht auch noch auf den Installations-Medien mit der Hardware aus,
aber diese Treiber kann man dann zumindest in den Repositories der Distributionen oder auf den
Webseiten der Hardware-Hersteller finden. Einige andere Hardware-Hersteller geben zumindest die
Hardware-Spezifikationen bekannt – was den besten Fall für Linux-Entwickler darstellt – zumeist
sind Treiber von Hardware-Herstellern proprietär (kein offener Quellcode) und nicht immer
bestens programmiert wie man ja unter Microsoft oft sieht wenn es Probleme gibt. Kennt der LinuxEntwickler die Hardware-Spezifikationen kann er den Treiber und wenn nötig die Firmware
entwickeln und auf den Linux-Kernel abstimmen – und auch weiterentwickeln (haben proprietäre
Treiber Fehler – muss man warten bis sich der Hersteller bemüht den Treiber zu verbessern – was
natürlich dauern kann).
Viele Hardware-Hersteller geben nicht einmal die Hardware-Spezifikationen bekannt – der
schlimmste Fall – der Linux-Entwickler muss ein Microsoft-System zur Hand nehmen – den
Arbeitsspeicher auslesen um zu sehen wie der Treiber mit dem Gerät interagiert, das Gerät zerlegen
um zu sehen welche Hardware darin verbaut ist usw. - Dann kann begonnen werden den Treiber für
das Gerät unter Linux zu entwickeln.
Ubuntu – Installation von Treibern aus den Repositories:
Debian – Installation von Treibern aus den Repositories:
Wie findet man heraus wie das Gerät heißt und warum es nicht funktioniert?:
USB-Geräte:
PCI-Geräte (eingebaute):
Warum funktioniert das Gerät nicht?:
einzellne Firmware-Dateien installieren:
sehr neue Geräte – in den Repositories gibt es noch keinen Treiber oder Firmware:
Shellskript
Die Hardware-Situation:
lädt man sich eine Linux-Installations-CD/DVD aus dem Internet herunter und installiert das
System auf dem Rechner funktioniert die meiste Standart-Hardware ohne weitere TreiberInstallationen (dazu zählen etwa: Mainbords, Prozessoren, Netzwerkkarten, Mäuse, Tastaturen,
Bildschirme, Drucker, Laufwerke, Scanner, DVB-Hardware, Modems, Grafikkarten …), denn im
Gegensatz zu Microsoft sind die meisten Treiber für alle möglichen Geräte im Linux-Kernel schon
integriert (OpenSource-Treiber). - Vor allem bekannte sehr gebräuchliche Hardware ist sofort
funktionsfähig. Nun kann es natürlich vorkommen das Sie zum Beispiel eine NVIDIA-Grafikkarte
eingebaut haben – der OpenSource-Treiber bietet zur Zeit keine oder nur rudimentäre 3DFunktionen (doch daran wird gearbeitet) – um nun auch die 3D-Funktionen nutzen zu können muss
man zur Zeit noch den originalen proprietären Treiber über die Paketverwaltung installieren (dieser
ist nicht auf den Installations-Medien da er nicht quelloffen ist). Weiters kann es sein das zwar der
Treiber einer Hardware quelloffen ist – jedoch nicht die Firmware (kommt des öfteren bei WLANChips und DVB-Sticks vor). Ein anderer Fall wäre dann noch sehr neue Hardware – für die noch
kein Treiber in den Repositories der Distribution vorhanden ist – aber es den Treiber trotzdem schon
gibt – in diesem Fall lädt man sich den Treiber aus dem Internet herunter und installiert diesen per
Hand.
Ubuntu – Installation von Treibern aus den Repositories:
Ubuntu bietet eine einfache Möglichkeit Treiber und Firmware für erkannte Hardware aus den
Repositories zu installieren, ist das Gerät angeschlossen sollte sich nach kurzer Zeit das Programm
„zusätzliche Treiber“ melden – ansonsten starten Sie das Programm per Hand aus dem Menü
„System – Systemverwaltung – zusätzliche Treiber“ - das Programm bietet für erkannte Hardware
nicht installierte oder vorhandene Proprietäre Software zur Installation an, manchmal kann es sein
das auch mehrere Treiber zur Installation vorgeschlagen sind – klicken Sie in diesem Fall diese an
die mit „Empfohlen“ markiert wurde und klicken dann auf die Schaltfläche „Aktivieren“ - der
Treiber und wenn benötigt die Firmware wird dann herunter geladen und installiert. - Nun sollte ein
Neustart genügen damit die Hardware funktioniert.
Debian – Installation von Treibern aus den Repositories:
Debian bietet keine Treiber automatisch zur Installation an – öffnen Sie in diesem Fall einfach
„Synaptic“ aus dem Menü „System – Systemverwaltung“ - klicken Sie auf das Symbol mit der
„Lupe“ und geben den Namen des Gerätes ein und lassen es installieren. - Zumeist genügt unter
Debian eine Ab- und wieder Anmeldung von der Desktop-Umgebung.
Wie findet man heraus wie das Gerät heißt und warum es nicht funktioniert?:
Auch wenn das Gerät unter Linux mangels eines fehlenden Treibers oder einer fehlenden Firmware
noch nicht funktioniert heißt dies nicht das Linux die Hardware nicht kennt (wie etwa unter
Microsoft),
USB-Geräte: schließen Sie das Gerät an und geben nun den Befehl: lsusb in ein Terminal ein, die
Ausgabe könnte zum Beispiel so aussehen:
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 009: ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem
Bus 002 Device 007: ID 0bc2:2300 Seagate RSS LLC
Bus 002 Device 006: ID 046d:c03e Logitech, Inc. Premium Optical Wheel Mouse (M-BT58)
Bus 002 Device 005: ID 2304:0236 Pinnacle Systems, Inc. PCTV 72e [DiBcom DiB7000PC]
Bus 002 Device 003: ID 04f2:b044 Chicony Electronics Co., Ltd Acer CrystalEye Webcam
Bus 002 Device 002: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
und zeigt alle angeschlossenen USB-Geräte an. - Unter dem angezeigten Namen kann man nun
nach Informationen (z.Bsp. Unter Google mit dem Hinweis „Linux“) suchen.
PCI-Geräte (eingebaute): geben Sie den Befehl: lspci in ein Terminal ein, die Ausgabe könnte
z.Bsp. Etwa so aussehen:
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 009: ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem
Bus 002 Device 007: ID 0bc2:2300 Seagate RSS LLC
Bus 002 Device 006: ID 046d:c03e Logitech, Inc. Premium Optical Wheel Mouse (M-BT58)
Bus 002 Device 005: ID 2304:0236 Pinnacle Systems, Inc. PCTV 72e [DiBcom DiB7000PC]
Bus 002 Device 003: ID 04f2:b044 Chicony Electronics Co., Ltd Acer CrystalEye Webcam
Bus 002 Device 002: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
robert@debian-yedi:~$ lspci
00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics
Controller (rev 09)
00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics
Controller (rev 09)
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03
)
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev
03)
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)
00:1c.2 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 3 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03
)
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03
)
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03
)
00:1d.3 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03
)
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev
03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)
00:1f.0 ISA bridge: Intel Corporation ICH9M LPC Interface Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03)
04:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)
05:00.0 Ethernet controller: Atheros Communications AR8132 Fast Ethernet (rev c0)
und zeigt alle eingebauten PCI-Geräte an. - Unter dem angezeigten Namen kann man nun nach
Informationen (z.Bsp. Unter Google mit dem Hinweis „Linux“) suchen.
Warum funktioniert das Gerät nicht?: ist es ein USB-Gerät schließen Sie es an und geben dann
den Befehl: dmesg in ein Terminal ein, (die Ausgabe kann ziemlich lange ausfallen – denn es
werden alle erkannten Geräte und Meldungen dazu angezeigt) suchen Sie nun nach dem
Gerätenamen den Sie mit „lsusb“ oder „lspci“ heraus gefunden haben. Zu meist liegt das Problem
nur noch an einer fehlenden Firmware-Datei die mittels dem Befehl „dmesg“ am entsprechenden
Gerät angezeigt wird, notieren Sie sich den Namen der Firmware und suchen unter Google danach,
laden Sie diese herunter und installieren diese (nächster Beitrag), ist die Firmware nicht so einfach
zu finden markieren Sie die die komplette Zeile der Ausgabe von „dmesg“ von dem entsprechenden
Gerät und suchen damit unter Google mit dem Hinweis „Linux“
einzellne Firmware-Dateien installieren:
nach dem Herunterladen entpacken Sie die entsprechende Datei wenn nötig und öffnen nun ein
Terminal – am besten die Datei liegt im Home-Verzeichnis – so brauchen Sie nur den folgenden
Befehl ein zu geben:
Ubuntu: sudo cp dateiname /lib/firmware
Debian: su + Adminpasswort
cp dateiname /lib/firmware
nun starten Sie den Rechner neu und das Gerät sollte funktionieren
sehr neue Geräte – in den Repositories gibt es noch keinen Treiber oder Firmware:
suchen Sie nach dem Geräte-Namen mit dem Hinweis „Linux“ unter Google und laden das
entsprechende Treiber-Paket herunter und entpacken das Archiv, über den Paketmanager „Synaptic“
kontrollieren Sie ob folgende Pakete installiert sind: gcc, binutils, make. Öffnen Sie das
Verzeichnis mit den Treiber-Dateien und sehen Sie sich die „readme“ und „install“ Dateien an – sie
beinhalten zumeist wenn nötig weitere benötigte Pakete die Sie dann über den Paketmanager
installieren und wenn nötig spezielle Optionen die zum kompilieren benötigt werden.
Öffnen Sie nun ein Terminal und wechseln mit dem Befehl: cd verzeichnisname in dem die TreiberDateien liegen, je nach den Optionen in den „readme“ und „install“ Dateien sollten nun die Befehle:
Ubuntu:
./configure
make
und
sudo make install
Debian:
./configure
make
su + Adminpasswort
make install
genügen um den Treiber zu installieren, manche Hersteller bieten auch Treiber-Installationen per
Shellskript an – was vor allem für Einsteiger die Installation erleichtert, Firefox öffnet solche
Dateien beim Herunterladen als Webseite – warten Sie dann ganz einfach bis die Seite vollständig
geladen ist (reines Text-Wirr-Warr) und speichern das Dokument per „Datei – Seite speichern
unter“, auch können Sie den Treiber-Link ganz einfach rechts anklicken und „Ziel speichern unter“
wählen.
Klicken Sie das Shellskript nun mit der rechten Maustaste an und wählen „Eigenschaften –
Zugriffsrechte“ und klicken die Checkbox vor „als Programm ausführen“ an – nun öffnen Sie ein
Terminal – wechseln per „cd verzeichnisname“ in das Verzeichnis in dem die Datei liegt (liegt sie
direkt im Home-Verzeichnis ist dies nicht nötig) und installieren den Treiber mit dem Befehl:
Ubuntu: sudo sh dateiname
Debian: su + Administratorpasswort
sh dateiname
und folgen den Anweisungen
dieses Dokument liegt unter der Lizenz: GNU FDL http://www.gnu.org/copyleft/fdl.html ,
losrobos 2011

Documents pareils