Wie liste ich alle ladbaren Kernelmodule auf?

65

Ich suche ein paar Kernelmodule zum laden i2c-devund i2c-bcm2708. Der modprobeBefehl gibt jedoch Folgendes zurück:

sudo modprobe i2c-dev
modprobe: module i2c-dev not found in modules.dep

Wie kann ich alle verfügbaren Module im System auflisten? In welchem ​​Verzeichnis befinden sie sich?

UserK
quelle
1
Der Kernel hat diesen i2c-dev nicht kompiliert. Sie haben dieses Modul nicht gefunden. Die Kernel-Module befinden sich unter / lib / modules / 'Kernel-Version' / drivers. Wenn Sie nach Linux-Treibern suchen.
Freitag,
Sie können unter / boot / config-'kernel-version 'nachsehen und diese Konfigurationsdatei lesen. Sie sollten wissen, welche Linux-Module geladen oder modular sind oder beim Kompilieren des Kernels das i2c-dev-Modul nicht aktiviert haben.
18.

Antworten:

76
  • Standardmäßig modprobewerden Module aus Unterverzeichnissen geladen, die sich im /lib/modules/$(uname -r)Verzeichnis befinden. Normalerweise haben alle Dateien die Erweiterung .ko, sodass Sie sie mit auflisten können

    find /lib/modules/$(uname -r) -type f -name '*.ko'
    

    oder unter Berücksichtigung komprimierter Dateien:

    find /lib/modules/$(uname -r) -type f -name '*.ko*'
    
  • Zum erfolgreichen Laden eines Moduls modprobesind jedoch die in der Datei aufgeführten Abhängigkeiten /lib/modules/$(uname -r)/modules.dep(und eine entsprechende Binärversion modules.dep.bin) erforderlich . Wenn ein Modul im System vorhanden ist, aber nicht in der Liste enthalten ist, sollten Sie einen Befehl ausführen, depmodder solche Abhängigkeiten erzeugt und Ihr Modul automatisch in modules.depund einbindet modules.dep.bin.

  • Wenn das Modul erfolgreich geladen wurde, wird es in der Datei aufgelistet /proc/modules(auch über den Befehl erreichbar lsmod).

jimmij
quelle
3
Redhat 7 Module-Dateien werden in .xz komprimiert (nicht sicher, ob es sich um eine Kernel- oder eine Betriebssystemversion handelt), sodass ich denke, dass Sie sie möglicherweise nicht mit dem Befehl find von jimmij finden. Verwenden Sie stattdessen find /lib/modules/$(uname -r) -type f -name *.ko*
Pozinux
1
@Pozinux Entdeckte das Gleiche hier auf Arch Linux um 4.13.10, die das Ende haben.gz
Johann
1
@posinux: Vorsicht: Die Shell kann Ihre erweitern, *.ko*wenn Sie in Ihrem aktuellen Verzeichnis eine passende Datei haben. besser, es zwischen einfachen Anführungszeichen zu entkommen: find /lib/modules/$(uname -r) -type f -name '*.ko*'
Olivier Dulac
10

Geben Sie ein modprobeund drücken Sie die Tabulatortaste. Die Autovervollständigungsliste sollte alle ladbaren Module enthalten

Martin Hansen
quelle
11
Es funktioniert nicht für einige Systeme
Avtomaton
5

Es gibt das lsmodKommando über kmodPaket in Arch Linux , was auflistet und zeigt den Status der Linux - Kernel - Module , die andere nützliche Befehle wie enthält modinfo, rmmod modprobeauch.

Um l sind alle Binärdateien von dem Paket zur Verfügung gestellt Sie geben können:

pacman -Ql kmod | grep /bin/ --color=always

Und Sie können auch für das überprüfen o mit wner Paket eines binären pacman -Qo lsmod.


Qswitch ist auf q uery lokal installierte pakete (im gegensatz Szu s ynchronize, dh auf check remote).


quelle
2
Wo es wichtig ist hervorzuheben, dass lsmodnur bereits geladene Module angezeigt werden. Der Autor dieses Threads hatte das Problem, ein Modul zu laden, das nicht in der Map der ladbaren Kernelmodule enthalten war. Außerdem gilt diese Lösung nur für Archlinux. Dies ist möglicherweise nicht die Verteilung des Autors und löst möglicherweise das Problem nicht für andere.
Akendo
@Akendo lsmodist zumindest auch auf Ubuntu verfügbar. Ich stimme jedoch zu, dass dies das Problem von OP nicht löst.
Melebius
2

Ich benutze lieber depmod. Mit dem Befehl: depmod -av|grep MOD_NAMEerzeugt Ihr System die modules.dep / map-Dateien und durchsucht sie. Der -vParameter ist wichtig für die Ausführlichkeit und -aum sicherzustellen, dass alle möglichen Module von /lib/modules/für die modules.dep-Datei verwendet werden.

Auf diese Weise kann sichergestellt werden, dass ein angefordertes Kernelmodul dem Kernel als ladbar zugeordnet ist. Wenn das gewünschte Kernelmodul nicht in der Ausgabe aufgeführt ist, wissen Sie, dass der Kernel es nicht findet.

Akendo
quelle