Programmation modules sous Linux  (partie 1)

Suivant
Gestion des périphériques
III . Les modules
1 . Présentation
2 . Avantages
3 . Outils (commandes, fichier)
4 . Notions
5 . Chargement/Déchargement
6 . Gestion des modules (lsmod, insmod, rmmod, depmod et modprobe)
7 . Le fichier /etc/modules.conf

1 . Présentation

Un module est une extension (fonctionnalité, pilote) du système d'exploitation, donc du noyau.

Les modules peuvent être chargés puis liés (link) dynamiquement au noyau en cours d'exécution et retirés s'il n'y a plus de processus qui les utilisent.


2 . Avantages

Les modules simplifient la mise en œuvre d'extensions (configuration modulaire)

Ils permettent aussi de réduire la taille du noyau car les extensions ne sont pas compilées directement avec.

Ils sont chargés par le système en fonction de ses besoins.

Ils permettent donc une utilisation plus rationnelle de la mémoire.


3 . Outils (commandes, fichier)

Les commandes

insmod : charge un module
lsmod : liste les modules chargés
rmmod : retire un module chargé
depmod : établit les dépendances entre les modules
modprobe : charge ou retire un module et ses dépendances

Les fichiers

/etc/modules.conf : fichier de configuration pour kerneld et modprobe
/lib/modules/*/modules.dep : fichier de dépendance entre modules (créé par depmod et utilisé par modprobe)


4 . Notions

Un module se trouve dans des fichiers compilés : fichier d'extension .o (code objet compilé)

Ils sont regroupés, par type de pilote ou de fonctionnalité, dans le répertoire : /lib/modules/$(uname -r)

On y trouve un sous-répertoire par type de modules : net, scsi, ...


5 . Chargement et déchargement

Un module peut être chargé de 3 façons :

   Automatiquement au démarrage à partir des scripts /etc/rc.d/* (principalement rc.sysinit et rc.local).

   Automatiquement par le thread kmod (qui remplace le démon kerneld) lorsqu'un module est requis par un processus.

   Manuellement, à tout moment, à l'aide des commandes insmod ou modprobe (les droits root sont requis).

Un module peut être retiré manuellement par les commandes rmmod ou modprobe.


6 . Gestion des modules (lsmod, insmod, rmmod, depmod et modprobe)

La commande lsmod affiche, pour chaque module chargé : son nom, sa taille et le nombre de processus qui utilisent ce module ainsi que la liste des modules dépendants.

# lsmod
Module Size Used by Not tainted
lp 6464 0
parport_pc 22088 1
parport 23968 1 [lp parport_pc]
ne2k-pci 5120 1 (autoclean)
8390 6416 0 (autoclean) [ne2k-pci]
vfat 9788 1 (autoclean)
fat 31384 0 (autoclean) [vfat]


Ces informations sont également disponibles dans /proc/modules

La commande insmod permet de charger un module.
Elle autorise le passage d'arguments nécessaires pour certains pilotes, généralement des paramètres de configuration matérielle : IRQ, adresse de port d'E/S, ...

Syntaxe :

insmod [options] nom_module [paramètre=valeur]

insmod ne gère pas les dépendances (sinon utiliser modprobe).

La commande rmmod permet de retirer un module chargé si :
   le module n'est pas en cours d'utilisation par un processus
   le module n'est pas requis par un autre module déjà chargé

Syntaxe :

rmmod [options] nom_module

rmmod ne gère pas les dépendances (sinon utiliser modprobe).

La commande depmod permet de créer un fichier de dépendances.
La principale fonction de depmod, qui est exécuté à chaque démarrage par le script /etc/rc.d/rc.sysinit, est de créer le fichier /lib/modules/$(uname -r)/modules.dep. Ce fichier décrit pricipalement les chemins de recherche ainsi que les dépendances.

Exemple :

/lib/modules/2.4.18-6mdk/kernel/drivers/char/lp.o: /lib/modules/2.4.18-6mdk/kernel/drivers/parport/parport.o

La commande depmod -a n'est exécutée que si le noyau supporte la gestion des modules (voir la configuration du noyau).

La commande modprobe permet d'automatiser la gestion des modules, le chargement ou le retrait d'un ou plusieurs modules.
modprobe tient compte des informations contenues dans les fichiers :

   /lib/modules/$(uname -r)/modules.dep
   /etc/modules.conf

Exemples :

modprobe -c : affiche la configuration courante
modprobe nom_module [parametre=valeur] : charge le module et ses dépendances
modprobe -r nom_module : retire le module et ses dépendances (si elles ne sont pas requises par d'autres)
modprobe -l -t type : liste les modules d'un type donné (net, ...)

La commande modinfo permet d'obtenir des informations (auteur, licence, paramètres, ...) sur un module.


7 . Le fichier /etc/modules.conf

Le fichier /etc/modules.conf peut être utilisé pour modifier le comportement du démon kerneld et de la commande modprobe.
Il permet essentiellement de définir les chemins de recherche des modules, des paramètres de configuration matérielle des pilotes et d'identifier par des alias des fonctionnalités spécifiques :

alias eth0 ne2k-pci
alias sound sb
options sb io=0x220 irq=5 dma=1


Précédent
Informations systèmes
Sommaire
 
Suivant
Gestion des périphériques
© 2002 for www.tvtsii.net by tv