Linux |
CentOS 5.3 |
|
modules.conf(5) |
modules.conf − fichier de configuration des modules du noyau Linux |
Le comportement de modprobe(8) (et depmod(8)) peut être modifié par le fichier de configuration (optionnel) /etc/modules.conf. Le fichier de configuration est constitué
d’un ensemble de lignes. [add] above module liste_de_modules alias nom_alias résultat [add] below module liste_de_modules define VARIABLE MOT depfile=UN_CHEMIN else elseif EXPRESSION endif if EXPRESSION include CHEMIN_VERS_UN_FICHIER_DE_CONFIGURATION insmod_opt=OPTIONS_GÃNÃRIQUES_POUR_INSMOD install module commande ... keep [add] options module OPTIONS_SPÃCIFIQUES_AU_MODULE path=UN_CHEMIN path[ÃTIQUETTE]=UN_CHEMIN generic_stringfile=UN_CHEMIN pcimapfile=UN_CHEMIN isapnpmapfile=UN_CHEMIN usbmapfile=UN_CHEMIN parportmapfile=UN_CHEMIN ieee1394mapfile=UN_CHEMIN [add] probe nom liste_de_modules [add] probeall nom liste_de_modules prune nom_de_fichier post-install module commande ... post-remove module commande ... pre-install module commande ... pre-remove module commande ... remove module commande ... persistdir nom_de_répertoire Tous les arguments d’une directive sont évalués en prenant en compte les méta-caractères du shell, ce qui signifie que les *, ? et les commandes entre « ‘ » par exemple peuvent être utilisés. path[misc]=/lib/modules/1.1.5?/local path[net]=/lib/modules/‘uname −r‘/net DANGER : Appliquer l’expansion du shell à une entrée utilisateur comporte un risque majeur pour la sécurité. Le code modutils n’applique cette expansion que pour les données de confiance, c’est à dire uniquement pour les données du fichier de configuration. Et même cela présuppose qu’un utilisateur ne peut pas lancer modprobe en root en fournissant son propre fichier de configuration. Les programmes (y compris le noyau) qui appellent des programmes modutils en root avec des données utilisateur doivent fournir exactement un paramètre utilisateur et doivent activer le « safe mode » à moins de créer des trous de sécurité. Voir modprobe(8) pour plus de détails sur le « safe mode ». Les directives peuvent être répétées plusieurs fois. Notez que certaines directives peuvent avoir un préfixe optionnel : add. Quand ce préfixe est utilisé, la nouvelle liste_de_modules sera ajoutée à la liste précédente au lieu de la replacer. |
UN_CHEMIN est un chemin complet vers la cible. Il
est possible d’utiliser des
méta-caractères dans
UN_CHEMIN, y compris le résultat
d’une commande comme `uname −r` ou
`kernelversion`. MOT est une séquence de caractères sans espace. Si un caractère ’, " ou ‘ est trouvé dans la chaîne, alors tous les caractères jusqu’au ’, " ou ‘ correspondant sont ajoutés à la chaîne, y compris les espaces. Tout MOT subira une expansion respectant les méta-caractères du shell. Si le résultat après expansion donne plus d’un mot, alors seulement le premier mot sera conservé. EXPRESSION peut être : |
MOT compare_op MOT |
où compare_op est ==, !=, <, <=, >= ou >. Les MOTs sont comparés en tant que chaîne de caractères. |
−n MOT compare_op MOT |
où compare_op est ==, !=, <, <=, >= ou >. Les MOTs sont comparés en tant que valeurs numériques. |
MOT |
Si l’expansion de MOT échoue, ou si le résultat est "0", "false" ou "" (vide) alors le résultat prend la valeur FAUX. Sinon, le résultat prend la valeur VRAI. |
−f NOM_DE_FICHIER |
Teste si le fichier NOM_DE_FICHIER existe. |
−k |
Teste si « autoclean » est activé, c’est à dire demandé par le noyau. |
! EXPRESSION |
La négation d’une expression est aussi une expression. |
Ci-dessous la description des directives valables. |
define VARIABLE MOT |
Fait un putenv("VARIABLE=MOT"). Les variables d’environnement peuvent être créées et modifiées par cette directive. Elles peuvent donc être utilisées par toutes les commandes exécutées dans la session courante. |
depfile=UN_CHEMIN |
Ceci est le chemin du fichier de dépendances qui sera créé par depmod et utilisé par modprobe pour trouver les modules et ceux dont ils dépendent. Normalement la valeur par défaut devrait être utilisée, voir ci-dessous. |
if EXPRESSION |
Si l’expression est
évaluée à VRAI alors
toutes les directives jusqu’au else,
elseif ou endif correspondant sont
exécutées, sinon, elles sont
ignorées. Les directives if peuvent
être imbriquées
jusqu’Ã 20 fois. |
else |
Si le if ou le elseif précédant correspondant a été évalué à FAUX alors les directives incluses entre le else et son endif correspondant seront évaluées. |
elseif EXPRESSION |
Si le if ou le elseif précédant correspondant a été évalué à FAUX et si l’expression de cette directive est évaluée à VRAI alors les directives jusqu’au elseif, else ou endif correspondant seront évaluées. |
endif |
Cette directive termine une chaîne de directive(s) if, elseif ou else contrôlant l’évaluation des directives du fichier de configuration. |
if EXPRESSION |
n’importe quelles directives |
elseif EXPRESSION |
n’importe quelles directives |
else |
n’importe quelles directives |
endif Les directives else et elseif sont optionnelles. |
include CHEMIN_VERS_UN_FICHIER_DE_CONFIGURATION |
Prendre en compte des plates-formes ou des configurations différentes avec un seul fichier peut être assez complexe. En utilisant la directive include, exécutée conditionnellement par des directives if, cela devient plus facile à gérer. |
insmod_opt=OPTIONS_GÃNÃRIQUES_POUR_INSMOD |
Si insmod a besoin d’options spéciales, indiquées nulle part ailleurs, elles peuvent être ajoutées par cette option, et seront utilisées pour toutes les invocations d’insmod. Les options par défaut d’insmod n’ont pas normalement besoin d’être modifiées, sauf pour gérer une situation très particulière. |
keep |
Si ce mot est trouvé sur une ligne avant toute ligne contenant la directive path, alors le chemin par défaut est sauvegardé et donc ajouté au nouveau chemin. Sinon le comportement normal est que le chemin par défaut est remplacé par le chemin donné. |
path=UN_CHEMIN |
path[ÃTIQUETTE]=UN_CHEMIN |
L’argument UN_CHEMIN indique un chemin
supplémentaire de recherche des modules. La
directive path supporte une étiquette
optionnelle. Cela indique le type de modules dans le
répertoire donné et permet des
réponses automatiques de modprobe.
L’étiquette est ajoutée au
mot clé « path »
entre crochets. Si l’étiquette est
absente, « misc » est
utilisé. |
generic_stringfile=UN_CHEMIN |
Ceci est le chemin vers le fichier generic_string qui sera créé par depmod et utilisé par les scripts d’installation qui ont besoin d’informations sur les modules. Normalement la valeur par défaut doit être utilisée, voir below. |
pcimapfile=UN_CHEMIN |
Ceci est le chemin vers le fichier pcimap qui sera créé par depmod et utilisé par les scripts d’installation pour trouver le module qui supporte un périphérique PCI. Normalement la valeur par défaut doit être utilisée, voir below. |
isapnpmapfile=UN_CHEMIN |
Ceci est le chemin vers le fichier isapnpmap qui sera créé par depmod et utilisé par les scripts d’installation pour trouver le module qui supporte un périphérique ISA PNP (NDT : Plug aNd Play). Normalement la valeur par défaut doit être utilisée, voir below. |
usbmapfile=UN_CHEMIN |
Ceci est le chemin vers le fichier usbmap qui sera créé par depmod et utilisé par les scripts d’installation pour trouver le module qui supporte un périphérique USB. Normalement la valeur par défaut doit être utilisée, voir below. |
parportmapfile=UN_CHEMIN |
Ceci est le chemin vers le fichier parportmap qui sera créé par depmod et utilisé par les scripts d’installation pour trouver le module qui supporte un périphérique parport. Normalement la valeur par défaut doit être utilisée, voir below. |
ieee1394mapfile=UN_CHEMIN |
Ceci est le chemin vers le fichier ieee1394mapfile qui sera créé par depmod et utilisé par les scripts d’installation pour trouver le module qui supporte un périphérique ieee1394mapfile. Normalement la valeur par défaut doit être utilisée, voir below. |
alias nom_alias résultat |
La directive alias peut être utilisée pour donner un autre nom aux modules. Avec une ligne dans /etc/modules.conf qui ressemble à ceci : alias iso9660 isofs il est possible d’écrire modprobe
iso9660 même s’il n’y a pas de
fichier objet pour un tel module. alias un_module off fera en sorte que modprobe ignore une demande pour charger ce module. Un autre alias spécial est : alias un_module null qui fera que une requête pour un_module réussira toujours, mais aucun module ne sera vraiment chargé. Ceci peut être utilisé comme une base pour les piles créées par les directives above et below. Il est possible d’avoir un grand nombre de niveaux d’alias, et tous les alias sont résolus récursivement jusqu’à trouver le module physique voulu. Il y a une limite arbitraire de 1 000 sur la profondeur des alias pour détecter les boucles comme : alias a b alias b a Si le résultat final d’une recherche dans les alias ne correspond pas au nom d’un module, alors modprobe applique les expansions probe et probeall au résultat. Si ces expansions ne réussissent pas alors le module n’est pas trouvé. Cette procédure donne des résultats sensés. alias /dev/sg* /dev/sg probeall /dev/sg scsi-hosts sg Il est possible qu’un alias fasse correspondre le module A au module B et que le module A existe en même temps mais cette construction est ambiguë et doit être évitée. Pour des raisons historiques, le noyau a un module appelé « sound.o » mais les développeurs veulent aussi un alias « sound » pointant vers le module utilisé par la carte son de l’utilisateur, par exemple « alias sound sb ». Pour essayer de supporter ceci tout en maintenant le comportement défini par les alias, modprobe n’applique pas la résolution des alias pour un nom obtenu par modules.dep. Il n’est pas garanti que cela donne le bon résultat dans toutes les combinaisons d’alias et de nom réels, vous devez toujours éviter d’utiliser un alias avec le même nom qu’un module réel. |
[add] probe nom liste_de_modules |
[add] probeall nom liste_de_modules |
Ces directives ne peuvent être utilisées que quand nom est le nom d’un module demandé sur la ligne de commande de modprobe. Son effet est que quand une requête pour le module nom est faite, les modules indiqués dans liste_de_modules seront essayés, dans l’ordre donné. La différence entre les directives est que probe continuera jusqu’au premier succès, alors que probeall continuera jusqu’à la fin de la liste. La valeur de retour reflète le fait qu’au moins un module a été chargé correctement ou pas. Le préfixe add optionnel ajoute la nouvelle liste à une liste précédente au lieu de la remplacer. |
prune nom_de_fichier |
Le répertoire racine des modules du noyau contient des fichiers qui ne sont pas des modules, comme par exemple modules.dep, modules.generic_string, modules.pcimap, modules.isapnpmap, modules.usbmap, modules.parportmap, modules.ieee1394map, le lien symbolique vers le répertoire source du noyau et tout autre fichier que le processus d’installation veut conservé d’une compilation du noyau. Pour éviter que depmod lance des alertes disant « not an ELF file », ces fichiers peuvent apparaître dans la liste prune. depmod a une liste prune prédéfinie qui ne peut pas être enlevée car elle contient des fichiers qui existeront pour tout compilation du noyau. Si vous ajoutez vos propres fichiers au répertoire racine des modules, ajoutez une directive prune pour chaque nom_de_fichier. Note : La liste prune est utilisée uniquement lors de la recherche dans le répertoire racine d’un path, et seulement si le répertoire contient au moins un sous-répertoire dont le nom apparaît dans la liste des sous-répertoires standards, c’est à dire que ce chemin est un répertoire racine provenant d’une compilation du noyau. La liste prune n’a pas d’effet sur les sous-répertoires d’un path. |
[add] options [-k] module [OPTIONS_SPÃCIFIQUES_AU_MODULE] |
Tous les noms de modules, y compris les alias, peuvent avoir leurs propres directives options. Les options indiquées pour un alias ont une priorité supérieure aux options indiquées pour des noms plus « basiques ». Cette règle est utilisée pour résoudre les conflits entre les directives options. Les options données sur la ligne de commande ont la priorité la plus élevée. Si il y a -k devant le nom de module, alors le module ne sera pas en mode « autoclean » même si modprobe a été appelé avec l’option -k (autoclean). Le préfixe add optionnel ajoute la nouvelle liste à la précédente au lieu de la remplacer. Si le résultat d’un alias n’est pas un module réel alors toutes les options qui ont été ajoutées par la chaîne d’ alias sont effacées avant l’appel à probe[all]. Si une des OPTIONS_SPÃCIFIQUES_AU_MODULE contient des caractères spéciaux pour le shell alors l’option doit être mise entre ’"..."’. Les ’’ délimitent l’option dans modules.conf, les "" délimitent l’option quand elle est passée au shell. Par exemple : abc=’"def,ghi jkl (xyz)"’ |
[add] above module liste_de_modules |
Cette directive permet à un module de placer un ensemble de modules au-dessus de lui dans une pile de modules, comme on le voit dans la sortie de la commande lsmod(8). La directive above est plus utile dans des circonstances où la liste des dépendances est plus complexe que ce qui peut être décrit dans le fichier de dépendances modules.dep. C’est un cas d’optimisation des directives post-install et pre-remove. Notez qu’un échec pour installer le module n’influencera pas le code de retour de modprobe. Le préfixe add optionnel ajoute la nouvelle liste à la précédente au lieu de la remplacer. |
[add] below module liste_de_modules |
Cette directive permet à un module de placer un ensemble de modules au-dessous de lui-même dans une pile de modules, comme on le voit dans la sortie de la commande lsmod(8). La directive below est utile dans des circonstances où la liste des dépendances est plus complexe que ce qui peut être décrit dans le fichier de dépendances modules.dep. C’est un cas d’optimisation des directives post-install et pre-remove. Notez qu’un échec pour installer le module n’influencera pas le code de retour de modprobe. Le préfixe add optionnel ajoute la nouvelle liste à la précédente au lieu de la remplacer. |
Les directives suivantes sont utiles pour exécuter des commandes particulières au chargement et au déchargement d’un module. Même les alias de modules peuvent avoir leurs propres commandes, qui seront exécutées dans le bon ordre avec les directives pour le nom réel du module. |
pre-install module commande |
Exécute commande avant d’installer le module indiqué. Voir la directive below également. |
install module commande |
Exécute commande au lieu de insmod par défaut pour installer le module indiqué. |
post-install module commande |
Exécute commande après avoir installé le module indiqué. Voir la directive above également. |
pre-remove module commande |
Exécute commande avant de désinstaller le module indiqué. Voir la directive above également. |
remove module commande |
Exécute commande au lieu du rmmod par défaut pour désinstaller le module indiqué. |
post-remove module commande |
Exécute commande après avoir désinstallé le module indiqué. Voir la directive below également. |
persistdir=nom_de_répertoire |
Quand rmmod supprime un module qui contient des paramètres persistants, il stocke les paramètres éventuellement modifiés sous le répertoire nom_de_répertoire. Quand modprobe charge un module qui contient des paramètres persistant, il regarde dans le répertoire nom_de_répertoire pour d’éventuelles valeurs précédentes. Vous devez donner à persistdir un nom de répertoire qui est accessible en lecture quand les modules sont chargés et accessible en écriture quand les modules sont déchargés. La valeur par défaut est /var/lib/modules/persist. Beaucoup de distributions Linux chargent leurs modules avant de monter les systèmes de fichiers, ce qui pose des problèmes pour les données persistantes. Si /var est dans une partition séparée et est montée après que les modules sont chargés alors insmod ne peut pas lire les données persistantes. Vous avez deux possibilités quand /var est une partition séparée : |
1) Faire pointer persistdir vers un répertoire dans la partition racine, disons /lib/modules/persist. Ce qui impose que la partition racine soit accessible en écriture quand rmmod est lancé. |
|
2) Charger tous les modules liés au support des systèmes de fichier d’abord, puis monter la partition /var et enfin le reste des modules. Ce qui impose que les modules supportant les systèmes de fichier n’ont pas de données persistantes. |
Si le fichier de configuration /etc/modules.conf n’existe pas, ou si une directive n’est pas redéfinie, les valeurs par défaut suivantes sont utilisées : depfile=/lib/modules/‘uname −r‘/modules.dep generic_stringfile=/lib/modules/‘uname −r‘/modules.generic_string pcimapfile=/lib/modules/‘uname −r‘/modules.pcimap isapnpmapfile=/lib/modules/‘uname −r‘/modules.isapnpmap usbmapfile=/lib/modules/‘uname −r‘/modules.usbmap parportmapfile=/lib/modules/‘uname −r‘/modules.parportmap ieee1394mapfile=/lib/modules/‘uname −r‘/modules.ieee1394map path[boot]=/lib/modules/boot path[toplevel]=/lib/modules/‘uname −r‘ path[toplevel]=/lib/modules/‘kernelversion‘ path[toplevel]=/lib/modules/default path[toplevel]=/lib/modules persistdir=/var/lib/modules/persist Il y a aussi un ensemble de directives alias et options par défaut. Cet ensemble évoluant sans cesse, il n’est pas listé ici. L’ensemble par défaut utilisé peut être obtenu par la commande modprobe −c avec un fichier /etc/modules.conf vide. Toutes les directives options indiquent les options nécessaires à un module, comme par exemple dans : modprobe de620 bnc=1 Ces options seront remplacées par les options fournies dans le fichier /etc/modules.conf et sur la ligne de commande de modprobe. Souvenez-vous qu’il est possible d’avoir des directives options aussi bien pour les alias de modules que pour les noms réels de module. Ceci est utile par exemple pour le module dummy : alias dummy0 dummy options dummy0 −o dummy0 |
Pour des raisons historiques, si /etc/modules.conf n’existe pas, modutils utilisera le fichier /etc/conf.modules. Cependant, l’utilisation de ce nom historique est dépréciée et il devrait être remplacé par /etc/modules.conf. Cette version de modutils envoie un message d’alerte si /etc/conf.modules existe, les prochaines versions donnerons un message d’erreur et refuserons de charger les modules. |
depmod(8), modprobe(8), insmod(8) |
Bjorn Ekwall <bj0rn@blox.se> Keith Owens <kaos@ocs.com.au> |
Loïc Le Loarer, 2001. version 2.4.10 de modutils. |
modules.conf(5) |