Re: Questions au sujet des modules.

Top Page

Reply to this message
Author: Vincent Caron
Date:  
To: guilde@guilde.asso.fr
Subject: Re: Questions au sujet des modules.
On Thu, 2012-01-05 at 15:58 +0100, Jean Pierre Morin wrote:
> Bonjour et Bonne Année à tous.
>
> Voilà : lorsque j'execute la cmd
> lsmod, j'obtiens la liste des modules installés et
> de leur dépendances.
> Mais comment connaitre le lien entre le nom du
> module et le materiel qu'il pilote ? La cmd modinfo
> n'étant pas prolixe.


Linux associe module et matériel via les IDs PCI ou USB quand cela est
pertinent (c'est le cas pour beaucoup de drivers). On les voit dans les
'alias: pci:v....'.


> Question inverse, quand on a materiel, par exemple
> une imprimante ou une carte wifi, comment
> savoir le module qu'il nécessite ? Et qui décide des
> modules à charger au boot d'un système ?


C'est Linux qui le sait le mieux, via justement ces 'aliases' :). Il
arrive qu'on ait un driver qui supporte un matériel mais ne le
reconnaisse pas, simplement parce qu'il ne connait pas son ID. C'est
rageant mais ça oblige à recompiler un kernel ou du moins le driver
concernant juste pour lui faire accepter de se charger et prendre en
charge le matériel (ou idéalement se contenter de mettre à jour son
kernel via sa distro). Car cette info n'est pas dans une BDD ou un
fichier de conf, mais directement dans le code du module du driver.

Cependant lors la compilation d'un kernel, l'ensemble des aliases est
normalement collectée pour que modprobe puisse raisonnablement s'en
sortir et ne pas à avoir à charger tous les modules un par un pour
vérifier. Chez moi c'est /lib/modules/<version>/modules.alias.

Le package 'pciutils' contient le fameux 'lspci' et aussi 'pcimodules'
qui d'après la doc : "List kernel driver modules available for all
currently plugged in PCI devices". Ca ne marche pas chez moi, ça cherche
le déprécié 'modules.pcimap'.

J'imagine qu'en théorie avec les data de pciutils on devrait pouvoir
au moins mettre un constructeur et une classe de device sur chaque
'alias' d'un module, je ne sais pas si ça existe.