Page suivante Page précédente Table des matières
2. Utilitaires pour les modules
Les utilitaires pour les modules sont un ensemble de programmes nécessaires pour gérer les modules. Au moment où j'écris ces mots, la dernière version est
modules-2.0.0.tar.gz. Des informations concernant la version actuelle peut être trouvée à l'URLhttp://www.pi.se/blox.
Ces informations proviennent des personnes suivantes : Jacques Gelinas
jacques@solucorp.qc.caet Björn Ekwallbj0rn@blox.sedans/usr/src/linux/Documentation/modules.txt.
2.1 Créer les modules
La première étape consiste à compiler le noyau, comme l'explique le fichier
linux/README. Cela ressemble généralement à ça :
- make config
- make dep
- make clean
- make zImage ou make zlilo
Dans
make config, vous choisissez quelles caractéristiques vous souhaitez inclure d'une manière permanente dans le noyau, et celles que vous voulez sous la forme de modules chargeables. Vous allez généralement choisir d'inclure le minimum de choses, c'est à dire ce qu'il est nécessaire pour pouvoir amorcer la machine :
- le système de fichier de votre partition racine ;
- un gestionnaire SCSI (si vous avez une carte) ;
- la gestion d'un disque dur ;
- le support réseau (CONFIG_NET) ;
- le support TCP/IP (CONFIG_INET), mais aucun gestionnaire !
- plus les petites choses sans lesquelles vous ne pouvez pas vivre...
L'ensemble des modules est en constante augmentation et vous serez capable de choisir l'option
mlors dumake configpour les caractéristiques que vous souhaitez voir comme modules.Vous avez également la possibilité de créer des modules quoi soient moins dépendants de la version du noyau. Cette option peut être choisie lors du
make config, en activantCONFIG_MODVERSIONS, et cela est assez pratique sur les noyau stables comme les versions 1.2 et 2.0. Si vous possédez des modules qui ne sont pas inclus dans l'arborescence des sources du noyau, alors vous aprécierez sûrement cette option...
Lorsque le noyau est généré, il suffit de créer les modules en lançant :
make modulesCela va compiler tous les modules et les mettre dans le répertoire
linux/modules. Vous trouverez dans ce répertoire tout un tas de liens symboliques sur des fichiers objets de l'arborescence des sources.
Ensuite, après avoir crée tous les modules, il vous suffit de les installer :
make modules_install
Cela copiera tous les nouveaux modules dans les sous-répertoires
/lib/modules/version_noyau/, oùversion_noyauressemble à 2.0.26, ou le numéro de la version du noyau.
Dès que vous avez réamorcé la machine avec le nouveau noyau, vous pouvez installer et désinstaller les modules avec les programmes
insmodetrmmod. Après avoir lu la page de manuel de insmod, vous comprendrez qu'il est très simple de configurer un module en faisantinsmod module symbole=valeur.
2.2 Outils étendus :
modprobeetdepmod.Vous pouvez également utiliser deux outils :
modprobeetdepmod, où modprobe est une extension deinsmod. Ces outils utilisent et maintienent un ensemble de fichiers qui décrivent tous les modules disponibles pour le noyau actuel dans l'arborescence/lib/modulesainsi que leurs interdépendances.
En utilisant le programme modprobe, vous pouvez charger n'importe quel module
/sbin/modprobe modulesans se préoccuper du noyau qui tourne, ou des modules qui sont utilisés par ce module.
Grâce à l'aide du fichier de configuration de modprobe,
/etc/conf.modules, vous pouvez régler le comportement de modprobe, voir inclure un ensemble d'options par défaut pour chaque module. Et oui, il existe des pages de manuel pour cela !Pour utiliser correctement modprobe, vous inséréz généralement le script suivant dans le fichier
/etc/rc.d/rc.Sscript (voir le fichierrc.hintsdans paquetage des utilitaires modules,modules-x.y.z.tar.gz.)./sbin/depmod -aCela génère les dépendances entre les différents modules. Ensuite, si vous faîtes par exemple
/sbin/modprobe umsdosalors vous chargerez automatiquement les modules
msdosetumsdosétant donné queumsdosse base sur le modulemsdos.
2.3 La cerise sur le gâteau :
kerneld.Bon, vous avez lu tout ceci, et je vous sens fébrile et pressé d'essayer... Maintenant, oubliez tout ce que vous savez concernant le chargement et le déchargement des modules !
Grâce au démon kerneld, toutes ces opérations seront effectuées automatiquement. Répondez simplement "Y" à l'option CONFIG_KERNELD lors du
make config, et assurez-vous que le démon/sbin/kerneldest lancé le plus tôt possible lors de l'amorçage de la machine, et que la commande/sbin/depmod -aa été exécutée pour le noyau courant (lisez la documentation fournie dans le paquetages des modules).
A chaque fois qu'un programme veut que le noyau utilise un gestionnaire qui n'est disponible que sous la forme d'un module, et que le noyau ne l'a pas déjà installé, alors le noyau va demander au démon de bien vouloir s'occuper du problème.
Voici ce qui se passe :
- le noyau s'aperçoit qu'une caractéristique est demandée, mais qu'elle n'est pas disponible dans le noyau ;
- le noyau envoie un message à kerneld avec une description symbolique des caractéristiques demandées ;
- le démon demande par exemple à modprobe de charger un module qui corresponde à cette description ;
- modprobe regarde dans ses tables de conversions internes pour voir si quelque chose correspond. Cette table peut être reconfigurée et étendue en utilisant des lignes alias dans le fichier
/etc/conf.modules;- insmod insert ensuite le(s) module(s) que modprobe a identifié comme étant nécessaire aux modules. Tout module sera configuré suivant les lignes
optionsdu fichier/etc/conf.modules;- modprobe se termine et kerneld indique au noyau que la requête a réussi (ou échouée...) ;
- le noyau utilise la nouvelle caractéristique comme si elle avait été inclue dans le noyau d'une manière permanente.
La cerise sur le gâteau provient que lorsqu'un module automatiquement installé n'est pas utilisé pendant une certaine période (généralement une minute), alors le module sera automatiquement supprimé du noyau.
Cela permet de faire en sorte que le noyau utilise l'espace mémoire minimal à n'importe quel moment, le rendant donc plus productif libérant la place inutilement occupée par du code non utilisé.
En fait, il n'existe qu'un seul côté vraiment positif à kerneld : vous n'avez qu'à créer un noyau minimal qui plus ou moins dépendant de votre configuration matérielle. La configuration de ce noyau virtuel est plutôt contrôlé par un fichier de configuration spécialisant le comportement de la machine et de son noyau.
Cela devrait être plutôt une bonne nouvelle pour les administrateurs de plusieurs machines aussi bien que pour les mainteneurs des distributions.
Pour utiliser kerneld avec le moins de perte de place, vous devez utiliser une version de modprobe qui soit considérée comme étant récente, ainsi qu'un noyau récent, et enfin un fichier de configuration pour modprobe, le fichier (
/etc/conf.modules).
Comme modprobe connaît déjà la plupart des modules, le fichier de configuration minimal ressemble à quelque chose comme ça :
alias scsi_hostadapter aha1542 # ou n'importe quel contrôleur SCSI alias eth0 3c509 # ou n'importe quelle carte réseau # Vous avez besoin d'une ligne "options" pour certaines cartes réseau : options 3c509 io=0x300 irq=10 # egalement une ligne "options" pour d'autres modules : options cdu31a cdu31a_port=0x1f88 sony_pas_init=1
Vous pouvez également ajouter ces trois lignes, mais elles ne sont là que pour des raisons cosmétiques:
alias net-pf-3 off # pas de mode ax25 disponible alias net-pf-4 off # si vous n'utilisez pas le module ipx alias net-pf-5 off # si vous n'utilisez pas le module appletalkEnfin, pour les puriste, vous pouvez placer votre fichier de configuration soit dans
/etc/conf.modules, soit dans/etc/modules.conf, comme modprobe sait ce qu'il doit faire dans chacun des cas...
Page suivante Page précédente Table des matières