Come elencare tutti i moduli del kernel caricabili?


66

Sto cercando alcuni moduli del kernel da caricare i2c-deve i2c-bcm2708. Ma il modprobecomando restituisce:

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

Come posso elencare tutti i moduli disponibili nel sistema? In quale directory si trovano?


1
Il kernel non ha compilato questo i2c-dev. Questo modulo non è stato trovato. I moduli del kernel si trovano in / lib / modules / 'kernel-version' / drivers. Quando stai cercando driver linux.
Soprattutto il

Puoi controllare / boot / config-'kernel-version 'e leggere questo file di configurazione. Dovresti sapere quali moduli Linux sono caricati o modulari o durante la compilazione del kernel non ha abilitato il modulo i2c-dev.
Soprattutto il

Risposte:


77
  • Per impostazione predefinita modprobecarica i moduli dalle sottodirectory situate nella /lib/modules/$(uname -r)directory. Di solito tutti i file hanno estensione .ko, quindi puoi elencarli con

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

    oppure, tenendo conto dei file compressi:

    find /lib/modules/$(uname -r) -type f -name '*.ko*'
    
  • Tuttavia, per caricare correttamente un modulo sono modprobenecessarie le sue dipendenze elencate nel file /lib/modules/$(uname -r)/modules.dep(e una versione binaria corrispondente modules.dep.bin). Se un modulo è presente sul sistema, ma non è nell'elenco, è necessario eseguire un comando depmodche genererà tali dipendenze e includerà automaticamente il modulo su modules.depe modules.dep.bin.

  • Inoltre, se il modulo viene caricato correttamente, verrà elencato nel file /proc/modules(accessibile anche tramite comando lsmod).


3
I file dei moduli Redhat 7 sono compressi in .xz (non sei sicuro che sia a causa della versione del kernel o della versione del sistema operativo ... se qualcuno mi può chiarire?) Quindi penso che potresti non trovarli con il comando find di jimmij. Usa invece find /lib/modules/$(uname -r) -type f -name *.ko*
Pozinux il

1
@Pozinux Ho scoperto la stessa cosa qui su Arch Linux a 4.13.10, che ha il finale.gz
Johann,

1
@posinux: attenzione: la shell potrebbe espandere il tuo *.ko*se ti capita di avere nella directory corrente alcuni file corrispondenti. meglio evitarlo tra virgolette singole: find /lib/modules/$(uname -r) -type f -name '*.ko*'
Olivier Dulac il

10

Digitare modprobee premere tab, l'elenco di completamento automatico dovrebbe contenere tutti i moduli caricabili


11
non funziona per alcuni sistemi
avtomaton,

5

C'è lsmodcomando del kmodpacchetto in Arch Linux quanto elenca e mostra lo stato dei moduli del kernel Linux che contiene altri comandi utili come modinfo, rmmod modprobeanche.

Per l ist tutti i binari previsti dal pacchetto è possibile digitare:

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

, E si può anche verificare la o pacchetto di wner di un binario con pacman -Qo lsmod.


Qinterruttore è q uery pacchetti installati localmente (a differenza Sdi s ynchronize, cioè. per controllare a distanza).


2
Dove è importante evidenziare che lsmodmostra solo i moduli già caricati. L'autore di questo thread ha avuto il problema di caricare un modulo che non era nella mappa dei moduli caricabili del kernel. Inoltre, questa soluzione si applica solo ad archlinux. Quale potrebbe non essere la distribuzione dell'autore e potrebbe non risolvere il problema per gli altri.
Akendo,

@Akendo lsmodè disponibile anche su Ubuntu, almeno. Tuttavia, sono d'accordo che questo non risolva il problema di OP.
Melebio

2

Preferisco usare depmod. Con il comando depmod -av|grep MOD_NAME:, il tuo sistema genererà i file modules.dep / map e lo attraverserà. Il -vparametro è importante per la verbosità e -aper garantire che tutti i moduli possibili da /lib/modules/vengano utilizzati per il file modules.dep.

In questo modo è possibile garantire che un modulo del kernel richiesto sia mappato sul kernel come caricabile. Quando il modulo del kernel desiderato non è elencato nell'output, sai che il kernel non lo troverà.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.