Comment lister tous les modules du noyau chargeables?

66

Je cherche quelques modules de noyau à charger i2c-devet i2c-bcm2708. Mais la modprobecommande retourne:

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

Comment puis-je lister tous les modules disponibles dans le système? Dans quel répertoire sont-ils situés?

UserK
la source
1
Le noyau n'a pas compilé cet i2c-dev. Vous n'avez pas trouvé ce module. Les modules du noyau situés dans / lib / modules / 'kernel-version' / drivers. Lorsque vous recherchez des pilotes Linux.
Supriady
Vous pouvez vérifier sur / boot / config-'kernel-version 'et lire ce fichier de configuration. Vous devez savoir quels modules linux sont chargés ou modulaires ou lors de la compilation du noyau n’a pas activé le module i2c-dev.
Supriady

Réponses:

77
  • Par défaut, modprobecharge les modules des sous-répertoires situés dans le /lib/modules/$(uname -r)répertoire. Habituellement, tous les fichiers ont une extension .ko, vous pouvez donc les lister avec

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

    ou, en tenant compte des fichiers compressés:

    find /lib/modules/$(uname -r) -type f -name '*.ko*'
    
  • Cependant, pour charger un module avec succès modprobe, ses dépendances sont répertoriées dans le fichier /lib/modules/$(uname -r)/modules.dep(et une version binaire correspondante modules.dep.bin). Si un module est présent sur le système, mais ne figure pas dans la liste, vous devez exécuter une commande depmodqui générera de telles dépendances et inclura automatiquement votre module dans modules.depet modules.dep.bin.

  • De plus, si le module est chargé avec succès, il sera répertorié dans le fichier /proc/modules(également accessible via une commande lsmod).

Jimmij
la source
3
Les fichiers de modules Redhat 7 sont compressés dans le fichier .xz (vous ne savez pas si c'est à cause de la version du noyau ou de la version du système d'exploitation .. si quelqu'un peut me l'expliquer?). Je pense donc que vous ne pourriez pas les trouver avec la commande find de jimmij. Utilisez plutôt find /lib/modules/$(uname -r) -type f -name *.ko*
Pozinux
1
@Pozinux a découvert la même chose ici sur Arch linux à 4.13.10, qui ont la fin.gz
Johann
1
@posinux: méfiez-vous: le shell peut développer votre *.ko*fichier si vous avez dans votre répertoire actuel un fichier qui lui correspond. mieux pour y échapper entre guillemets simples: find /lib/modules/$(uname -r) -type f -name '*.ko*'
Olivier Dulac
10

Tapez modprobeet appuyez sur la touche Tab, la liste de saisie semi-automatique doit contenir tous les modules chargeables.

Martin Hansen
la source
11
cela ne fonctionne pas pour certains systèmes
avril
5

Il est lsmodcommande de kmodpaquet dans Arch Linux qui énumère et indique l'état des modules du noyau Linux qui contient d' autres commandes utiles telles que modinfo, rmmod modprobeaussi.

Pour l ist tous les binaires fournis par le paquet que vous pouvez taper:

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

, Et vous pouvez également vérifier le o package ropriétaire d'un binaire avec pacman -Qo lsmod.


Qinterrupteur est à q uery packages installés localement (contrairement Sà l ynchronize, par exemple. pour vérifier à distance).


la source
2
Il est important de souligner que lsmodseuls les modules déjà chargés sont affichés. L'auteur de ce fil a eu le problème de charger un module qui n'était pas dans la carte des modules du noyau chargeables. En outre, cette solution ne s'applique qu'à archlinux. Ce qui pourrait ne pas être la distribution de l'auteur et pourrait ne pas résoudre le problème pour les autres.
Akendo
@ Akendo lsmodest également disponible sur Ubuntu, au moins. Cependant, je conviens que cela ne résout pas le problème de l'OP.
Melebius
2

Je préfère utiliser depmod. Avec la commande:, depmod -av|grep MOD_NAMEvotre système générera les fichiers modules.dep / map et grep par son intermédiaire. Le -vparamètre est important pour la verbosité et -apour garantir que tous les modules possibles à partir de /lib/modules/sont utilisés pour le fichier modules.dep.

De cette façon, il est possible de s'assurer qu'un module de noyau demandé est mappé sur le noyau en tant que charge. Lorsque le module du noyau souhaité ne figure pas dans la sortie, vous savez que le noyau ne le trouvera pas.

Akendo
la source