Programmation
modules sous Linux (partie
1) |
Suivant Gestion des périphériques |
III . Les modules |
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.
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)
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 |