Linux

CentOS 4.8

modules.conf(5)


MODULES.CONF

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 suivant :

  [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.

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 ==, !=, <, <=, >= 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.

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 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é.
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 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.
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, 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.

CONFIGURATION PAR DÃFAUT

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

FICHIER 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 donnerons un message d’erreur et refuserons de charger les modules.

VOIR AUSSI

depmod(8), modprobe(8), insmod(8)

AUTEUR

Bjorn Ekwall <bj0rn@blox.se>
Keith Owens <kaos@ocs.com.au>

TRADUCTION

Loïc Le Loarer, 2001. version 2.4.10 de modutils.


modules.conf(5)