Wie funktionieren Linux-Treiber und wo finde ich sie? (insbesondere NIC-Treiber)

11

Ich frage mich, wie ein Treiber unter Linux funktioniert. Sind Treiber eine einzelne Datei, die bearbeitet werden kann? Gibt es eine Liste der aktuell verwendeten Treiber oder gibt es für jedes Gerät einen anderen Ort, an dem sie gefunden werden können?

Ich bin besonders daran interessiert, mehr über den Treiber meines Netzwerkadapters zu erfahren.

Wenn Sie wissen, wo sich eine gute Dokumentation befindet, würde ich das auch gerne lesen.

Usagi
quelle

Antworten:

6

Treiber sind jedem anderen Programm sehr ähnlich. Sie können aus mehreren Quelldateien bestehen. Linux-Gerätetreiber können direkt in den Kernel oder ein Kernelmodul kompiliert werden. Kernelmodule haben den Vorteil, dass sie dynamisch geladen werden können (dh Sie müssen keinen neuen Kernel kompilieren, um sie zu verwenden).

Sie können sich natürlich immer den Linux-Quellcode ansehen, aber das kann zunächst eine entmutigende Aufgabe sein. Wie bei allem in Linux sind Treiber jedoch Dateien. Das bedeutet, dass andere Programme über die VFS-Schnittstelle auf sie zugreifen. Beispielsweise können Sie die CD-ROM über ioctl()Anrufe mithilfe ihrer Gerätedatei steuern .

Ich würde wärmstens empfehlen, Linux-Gerätetreiber zu testen . Es ist frei verfügbar und beantwortet Ihre Fragen. Insbesondere können Sie Kapitel 2 durchlesen, in dem gezeigt wird, wie Sie ein einfaches "Hallo, Kernel" -Modul erstellen. Es kann weit mehr sein, als Sie verlangen, aber Sie können die Teile lesen, an denen Sie interessiert sind. Und es ist kostenlos. ; P.

Mr. Shickadance
quelle
3

Linux-Treiber werden mit dem Kernel erstellt, in oder als Modul kompiliert. Alternativ können Treiber für die Kernel-Header in einem Quellbaum erstellt werden. Sie können eine Liste der aktuell installierten Kernelmodule anzeigen, indem Sie Folgendes eingeben lsmodund, falls installiert, einen Blick auf die meisten Geräte werfen, die über den Bus mit verbunden sind lspci.

Wenn die aktuelle Kernelversion keine Treiberunterstützung für Ihre Netzwerkkarte bietet, müssen Sie Treiber beim Hersteller finden und ein Kernelmodul aus dem Quellcode kompilieren (anhand der Header Ihres Kernels).

Sean C.
quelle
1

Wenn etwas wie Ihre Netzwerkkarte nicht automatisch angezeigt wird, müssen Sie meistens auf der Website des Hardwareherstellers nachsehen, ob es eine Linux-Version gibt.

Allgemeiner ausgedrückt haben Linux-Treiber in der Regel die Form von Bibliotheken oder Modulen.

rfelsburg
quelle