next up previous contents Next:  Interruptions, ports E/S et Up: Sources du noyau LINUX, Previous:  Numéros de version du   Table des matières  

43.3  Modules, insmod et commandes associées.

Un module consiste usuellement en un pilote destiné à permettre la communication entre le noyau et un périphérique. Il est soit produit par la commande mknod ou existe déjà dans le répertoire /dev/. Par exemple, lorsqu'il est chargé, le pilote SCSI est défini avec pour numéro majeur de périphérique: 8 et pour mineur: 0,1,... Le module ``sound'' a pour majeur: 14 et pour mineur: 3 (/dev/dsp). Très souvent, le module ``people'' est associé à SCSI, Ethernet et Sound. Il existe aussi beaucoup de modules qui supportent des commandes et non du matériel.

Les modules sont chargés à l'aide de la commande insmod et sont supprimés à l'aide de rmmod. Cela ressemble aux opérations effectuées par l'éditeur de liens (linking) dans les Makefile de la section 24.1. Si vous voulez afficher les modules chargés, utilisez la commande lsmod. Pour les noyaux 2.2, essayez:

insmod /lib/modules/<version>/fs/fat.o 
lsmod 
insmod fat

lsmod 



Pour les noyaux 2.4, les commandes sont:

insmod /lib/modules/<version>/kernel/fs/fat/fat.o 


Pour les noyaux 2.6, les commandes sont (la commande entre parenthèse permet la recherche des modules; remarquez l'extension .ko de ceux associés à 2.6):

( find /lib/modules/`uname -r`/ -type f -iname '*.ko' ) 
modprobe /lib/modules/`uname -r`/kernel/fs/fat/fat 


Par ailleurs, rmmod -a élimine tous les modules inutilisés.

Parfois, certains modules nécessitent le chargement préalable d'autres modules. Si vous tentez d'en charger un et que vous obtenez un message d'erreur comme <nom_module>: unresolved symbol <nom_symbole>, cela signifie qu'un autre module, au moins, devait être chargé au préalable. La commande modprobe charge un module ainsi que ceux dont il dépend. Essayez:

insmod /lib/modules/`uname -r`/fs/vfat.o 
( insmod /lib/modules/<version>/kernel/fs/vfat/vfat.o ) 
modprobe vfat 


Cependant, modprobe s'appuie sur une table de dépendance des modules. Celle-ci réside dans un fichier /lib/modules/<version>/modules.dep et est créée automatiquement par vos scripts de démarrage via la commande:

/sbin/depmod -a 


quoique vous puissiez l'exécuter manuellement à tout instant. L'affichage produit par lsmod montre aussi les dépendances entre crochets:

Modules             Size   Used  by 
de4x5              41396   1  (autoclean) 
parport_probe       3204   0  (autoclean) 
parport_pc          5832   1  (autoclean) 
lp                  4648   0  (autoclean) 
parport             7320   1  (autoclean) [parport_probe parport_pc lp] 
slip                7932   2  (autoclean) 
slhc                4504   1  (autoclean) [slip] 
sb                 33812   0 
uart401             6224   0  [sb] 
sound              57464   0  [sb uart401] 
soundlow             420   0  [sound] 
soundcore           2596   6  [sb sound] 
loop                7872   2  (autoclean) 
nls_iso8859-1       2272   1  (autoclean) 
nls_cp437           3748   1  (autoclean) 
vfat                9372   1  (autoclean) 
fat                30656   1   (autoclean) [vfat] 


next up previous contents Next:  Interruptions, ports E/S et Up: Sources du noyau LINUX, Previous:  Numéros de version du   Table des matières  
1-01-2006