Gerätetreiber: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 7: | Zeile 7: | ||
;Ein Kernel-Modul ist ein Stück Code, das dynamisch in den Kernel eingefügt werden kann, um zusätzliche Funktionen bereitzustellen. Viele Gerätetreiber sind als Kernel-Module implementiert. | ;Ein Kernel-Modul ist ein Stück Code, das dynamisch in den Kernel eingefügt werden kann, um zusätzliche Funktionen bereitzustellen. Viele Gerätetreiber sind als Kernel-Module implementiert. | ||
| − | = | + | =Möglichkeiten= |
==Fest im Kernel verankert== | ==Fest im Kernel verankert== | ||
| + | *Treiber ist Teil des Original Kernel Quellcode | ||
*Das Modul(Treiber) wurde beim komipilieren fest in den Kernel verankert. | *Das Modul(Treiber) wurde beim komipilieren fest in den Kernel verankert. | ||
*Es lässt sich somit nicht mehr entladen. | *Es lässt sich somit nicht mehr entladen. | ||
| Zeile 14: | Zeile 15: | ||
*Wenn ich die Netzwerkkarten von meiner Produktionslinie kenne, brauche ich nur diese in den Kernel zu kompilieren. | *Wenn ich die Netzwerkkarten von meiner Produktionslinie kenne, brauche ich nur diese in den Kernel zu kompilieren. | ||
{{#drawio:kernel-und-module-1}} | {{#drawio:kernel-und-module-1}} | ||
| − | + | ==Modul gehört zum Kernel und kann nachgeladen werden.== | |
| − | + | *Treiber ist Teil des Original Kernel Quellcode | |
| + | *Das Modul wurde beim Kompilieren mit übersetzt. | ||
| + | *Es ist somit Nachladbar. | ||
| + | *Es kann direkt an den Kernel andocken und geht somit eine Symbiose mit dem Kernel ein. | ||
| + | *Geöhnliche und verbreitete Treiber sind normalerweise nachladbar. | ||
{{#drawio:kernel-und-module}} | {{#drawio:kernel-und-module}} | ||
| + | ==Hersteller stellt Quellcode von einem Treiber zur Verfügung== | ||
| + | *Treiber ist nicht Teil des Original Kernel Quellcode | ||
| + | *Man muss das Modul nun für den passenden Kernel übersetzen. | ||
| + | *Es gibt 2 Möglichkeiten | ||
| + | ===Treiber vom Hersteller selbst kompilieren (schlechter)=== | ||
| + | *Quellen des Treibers besorgen. | ||
| + | *Quellen des aktuellen Kernels installieren | ||
| + | *Diverse Tools wie make installieren. | ||
| + | *Modul gegen den aktuellen Kernel kompilieren | ||
| + | *Nachteil: Bei einem Kernelupdate geht das Spiel erneut los. | ||
| − | == | + | ===DKMS(besser)=== |
| − | + | *Quellen sind meist über das Paketmanagment erhältlich. | |
| − | + | *DKMS übersetzt das Modul gegen den laufenden Kernel | |
| + | *Am Schluss ist das Modul verfügbar. | ||
| + | *Vorteil: Bei einem Kernelupdate kompiliert DKMS das Modul automatisch. | ||
| − | {{#drawio:kernel-und-module}} | + | ==Effekt== |
| + | *Der Effekt ist bei beiden Verfahren derselbe. | ||
| + | *Wichtig: Kernel wird nicht neukompiliert. | ||
| + | *Er wird nur für die richtigen Andockpunkte im Quellcode benötigt. | ||
| + | {{#drawio:kernel-und-module-2}} | ||
==Tools== | ==Tools== | ||
| + | ===Welche Module stellt der laufende Kernel zur Verfügung=== | ||
| + | *find /lib/modules/$(uname -r) -name *.ko | ||
| + | oder | ||
| + | *find /lib/modules/$(uname -r) -name *.ko.xz | ||
==== Beispiel: Anzeigen geladener Kernel-Module ==== | ==== Beispiel: Anzeigen geladener Kernel-Module ==== | ||
Aktuelle Version vom 18. Juli 2024, 13:17 Uhr
Gerätetreiber unter Linux
- Ein Gerätetreiber ist ein spezielles Stück Software, das ein Betriebssystem (wie Linux) mit einer Hardwarekomponente verbindet.
- Jeder Hardwarekomponente benötigt einen spezifischen Treiber, um korrekt zu funktionieren.
- Unter Linux sind viele dieser Treiber als Kernel-Module verfügbar, die dynamisch geladen und entladen werden können.
Kernel-Module
- Ein Kernel-Modul ist ein Stück Code, das dynamisch in den Kernel eingefügt werden kann, um zusätzliche Funktionen bereitzustellen. Viele Gerätetreiber sind als Kernel-Module implementiert.
Möglichkeiten
Fest im Kernel verankert
- Treiber ist Teil des Original Kernel Quellcode
- Das Modul(Treiber) wurde beim komipilieren fest in den Kernel verankert.
- Es lässt sich somit nicht mehr entladen.
- Anwendung gehärteter Kernel
- Wenn ich die Netzwerkkarten von meiner Produktionslinie kenne, brauche ich nur diese in den Kernel zu kompilieren.
Modul gehört zum Kernel und kann nachgeladen werden.
- Treiber ist Teil des Original Kernel Quellcode
- Das Modul wurde beim Kompilieren mit übersetzt.
- Es ist somit Nachladbar.
- Es kann direkt an den Kernel andocken und geht somit eine Symbiose mit dem Kernel ein.
- Geöhnliche und verbreitete Treiber sind normalerweise nachladbar.
Hersteller stellt Quellcode von einem Treiber zur Verfügung
- Treiber ist nicht Teil des Original Kernel Quellcode
- Man muss das Modul nun für den passenden Kernel übersetzen.
- Es gibt 2 Möglichkeiten
Treiber vom Hersteller selbst kompilieren (schlechter)
- Quellen des Treibers besorgen.
- Quellen des aktuellen Kernels installieren
- Diverse Tools wie make installieren.
- Modul gegen den aktuellen Kernel kompilieren
- Nachteil: Bei einem Kernelupdate geht das Spiel erneut los.
DKMS(besser)
- Quellen sind meist über das Paketmanagment erhältlich.
- DKMS übersetzt das Modul gegen den laufenden Kernel
- Am Schluss ist das Modul verfügbar.
- Vorteil: Bei einem Kernelupdate kompiliert DKMS das Modul automatisch.
Effekt
- Der Effekt ist bei beiden Verfahren derselbe.
- Wichtig: Kernel wird nicht neukompiliert.
- Er wird nur für die richtigen Andockpunkte im Quellcode benötigt.
Tools
Welche Module stellt der laufende Kernel zur Verfügung
- find /lib/modules/$(uname -r) -name *.ko
oder
- find /lib/modules/$(uname -r) -name *.ko.xz
Beispiel: Anzeigen geladener Kernel-Module
- lsmod
Beispiel: Laden eines Kernel-Moduls
- sudo modprobe modulname
Beispiel: Entfernen eines Kernel-Moduls
- sudo rmmod modulname
Gerätetreiber installieren
- Die genaue Methode zur Installation eines Gerätetreibers variiert je nach Treiber und Linux-Distribution.
- Oftmals werden Treiber über den Paketmanager der Distribution installiert.
- Manchmal müssen Treiber jedoch von der Herstellerseite heruntergeladen und manuell installiert werden.
Treiberprobleme beheben
Wenn eine Hardwarekomponente nicht korrekt funktioniert, kann es sein, dass der richtige Treiber nicht geladen ist oder Probleme aufweist. Tools wie dmesg und lspci können helfen, Treiberprobleme zu identifizieren und zu beheben.
Beispiel: Anzeigen von Kernel-Nachrichten mit dmesg
- dmesg
Beispiel: Anzeigen von PCI-Geräten mit lspci
- lspci


