NOM
modules.conf − fichier de configuration des modules du noyau Linux
DESCRIPTION
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.
Toutes les lignes vides et tous les caractères
d’une ligne après un
« # » sont ignorés.
Un « \ » en fin de ligne est
ignoré ainsi que le saut de ligne suivant, la ligne
se prolonge donc à la suivante.
Les lignes restantes doivent respecter les formats
suivants :
[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
pnpbiosmapfile=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 » sous peine 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 remplacer.
SÉMANTIQUE
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`.
Ces deux commandes sont comprises en interne par les
utilitaires modutils comme, respectivement, le numéro
de version du noyau et la version du noyau (par
exemple : 2.4.10 et 2.4).
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 un des opérateurs « == », « != », « < », « <= », « >= » 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 une chaîne 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.
SYNTAXE
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.
Note : évitez d’avoir des directives
path exécutées de manière
conditionnelle. modprobe a suffisamment de
propriétés utiles pour qu’un chemin
exécuté conditionnellement n’apporte
rien d’autre que de la confusion.
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 quelle directive |
elseif EXPRESSION
n’importe quelle directive |
else
n’importe quelle directive |
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é.
Une étiquette très utile est boot, qui
peut être utilisé pour tous les
répertoires contenant des modules qui doivent
être chargés lors du démarrage.
Notez que vous devez spécifier la directive
keep pour éviter que les directives
path n’écrasent les chemins par
défaut.
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 ieee1394map qui sera créé par depmod et utilisé par les scripts d’installation pour trouver le module qui supporte un périphérique ieee1394. Normalement la valeur par défaut doit être utilisée, voir below. pnpbiosmapfile=UN_CHEMIN Ceci est le chemin vers le fichier pnpbiosmap qui sera créé par depmod et utilisé par les scripts d’installation pour trouver le module qui supporte un périphérique pnpbios. 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.
Notez que la ligne :
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, modules.pnpbiosmap, le lien symbolique vers le répertoire source du noyau et tout autre fichier que le processus d’installation veut conserver 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 toute 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. S’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 pre-install et post-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 persistants, 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. |
CONFIGURATION PAR DÉFAUT
Si le fichier de configuration /etc/modules.conf n’existe pas, ou si aucune directive n’est 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
pnpbiosmapfile=/lib/modules/’uname
−r’/modules.pnpbiosmap
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
FICHIER DE CONFIGURATION ALTERNATIF
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 donneront un message d’erreur et refuseront de charger les modules.
VOIR AUSSI
depmod(8), modprobe(8), insmod(8)
AUTEUR
Bjorn Ekwall
<bj0rn [AT] blox.se>
Keith Owens <kaos [AT] ocs.au>
TRADUCTION
Loïc Le Loarer, 2001. version 2.4.10 de modutils.