Différences entre les versions de « Modules »

De BlaxWiki
Aller à la navigationAller à la recherche
Ligne 9 : Ligne 9 :


page 61 [https://wiki.blaxeenprod.com/BENPERSO/doc-manuel/system/Linux-kernel-nutshell.pdf Linux kernel in a nutshell] (tiré de http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/book.pdf)
page 61 [https://wiki.blaxeenprod.com/BENPERSO/doc-manuel/system/Linux-kernel-nutshell.pdf Linux kernel in a nutshell] (tiré de http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/book.pdf)
== Afficher les modules : lsmod ==
 
=== Gérer les dépendances ===
<pre>
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.
 
 
</pre>
 
== lsmod : Afficher les modules ==


<pre>
<pre>

Version du 6 avril 2011 à 16:49

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.

Charger un module : insmod