Modules
Les fichiers contenant le code compilé des modules se trouvent dans l'un des sous-répertoires /lib/modules/version_du_noyau/ de votre système de fichiers. Dans notre cas, il s'agit d'un noyau 2.6.15-26, et les différents modules se trouvent dans le répertoire /lib/modules/2.6.15-26-386/kernel/drivers. Les modules du noyau sont stockés sous forme de fichiers d'extension .ko (pour Kernel Object – ou d'extension .o dans le cas des noyaux de la branche 2.4). Le nom de chaque module correspond en fait au nom du fichier sans son extension. Certains modules peuvent parfois être compressés au format gzip ; dans ce cas, les fichiers portent l'extension .ko.gz. Comme pour les packages de logiciels, il existe des dépendances entre modules, c'est-à-dire que certains modules ont besoin que d'autres modules soient chargés pour fonctionner.
Retrouver le module d'un périphérique
page 61 Linux kernel in a nutshell (tiré de http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/book.pdf)
Gérer les dépendances
En lancant la commande depmod -a, cela va créer le fichier /lib/modules/2.x.x/modules.dep. Ce fichier contient la liste des modules avec toutes leurs dépendances (sous-modules).
Exemple :
- /lib/modules/2.0.36/misc/snd.o:
-> C'est un module "stand-alone". Il n'a pas de dépendances avec les autres
modules.
- /lib/modules/2.0.36/misc/snd-timer.o: /lib/modules/2.0.36/misc/snd.o
-> Tiens, "snd-timer.o" repose sur "snd.o". Pour le charger à la main, il faudrait donc faire: insmod snd.o && insmod snd-timer.o
- /lib/modules/2.0.36/misc/snd-ens1370.o:
/lib/modules/2.0.36/misc/snd-mixer.o
/lib/modules/2.0.36/misc/snd-midi.o
/lib/modules/2.0.36/misc/snd-pcm1.o
/lib/modules/2.0.36/misc/snd.o
/lib/modules/2.0.36/misc/snd-ac97-codec.o
-> "snd-ens1370.o", comme son nom l'indique, correspond au module gérant le chip ensoniq de la SB PCI (selon les versions, c'est un ens1370 ou 1371). Dans les drivers ALSA, les
deux chipsets sont confondus dans le même module.
lsmod : Afficher les modules
Cette commande retourne une liste sous forme de trois colonnes :
* dans la première colonne, vous trouverez le nom des modules ;
* dans la deuxième colonne, la taille du fichier correspondant ;
* dans la troisième colonne se trouvent le nombre de processus qui utilisent le module, ainsi que le nom des dépendances éventuelles propres à chaque module.
Notons que ces informations sont également présentes dans le fichier /proc/modules.
Par exemple, sur la figure 2, on peut constater que le module vfat a nécessairement besoin du module fat pour fonctionner. Par conséquent, ceci implique que le module fat
doit être chargé avant l'autre, et qu'il n'est pas possible de retirer le module fat avant que vfat ne soient retiré.
fat 53020 1 vfat
Le chiffre qui précède le nom des dépendances indique qu'un ou des programme(s) utilisent actuellement le module.