8. Comment kerneld sait quels modules à charger ?

Contenu de cette section

Bien que kerneld connaisse un peu les types de modules les plus courants, il y a certaines situations où kerneld ne sait pas comment gérer une requête en provenance du noyau. C'est le cas avec les gestionnaire de CD-ROM ou les gestionnaires réseau : il existe plusieurs types de modules qui peuvent être chargés.

Les requêtes que le démon reçoit du noyau concernent l'un des éléments suivant :

kerneld détermine quel module doit être chargé en consultant le fichier de configuration /etc/conf.modules. Il existe deux types d'entrées dans ce fichier : des chemins d'accès (où les fichiers de modules se trouvent), et des aliases (quels modules devraient être chargés). Si vous ne possédez pas ce fichier, vous devriez le créer en exécutant :

  /sbin/modprobe -c | grep -v '^path' >/etc/conf.modules

Si vous souhaitez vraiment ajouter une autre directive path aux chemins par défaut, vous devez absolument inclure tous les chemins par défaut également, étant donné qu'une directive path dans ce fichier replacera tous les chemins que modprobe connait.

Normalement, vous n'avez pas à ajouter un chemin par vous-même étant donné que l'ensemble de chemins par défaut prend en compte une configuration normale.

D'un autre côté, si vous souhaitez uniquement ajouter un alias ou une option, votre nouvelle entrée dans le fichier /etc/conf.modules sera ajoutée à celles que modprobe connaît déjà. Si vous deviez redéfinir un alias ou une option, votre nouvelle entrée redéfinira celles déjà connues.

8.1 Gestionnaires de périphériques mode bloc

Si vous lancez la commande /sbin/modprobe -c, vous obtiendrez la liste des modules connus par kerneld, ainsi que les requêtes correspondantes. Par exemple, la requête qui termine le chargement du gestionnaire pour le lecteur de disquettes correspond au gestionnaire de périphérique qui possède comme nombre majeur 2 :

  osiris:~ $ /sbin/modprobe -c | grep floppy
  alias block-major-2 floppy

Pourquoi le numéro 2 ? Tout simplement parce que le périphérique correspondant au lecteur de disquette /dev/fd* utilise le nombre majeur 2 et il est de type bloc :

  osiris:~ $ ls -l /dev/fd0 /dev/fd1
  brw-rw-rw-   1 root     root       2,   0 Mar  3  1995 /dev/fd0
  brw-r--r--   1 root     root       2,   1 Mar  3  1995 /dev/fd1

8.2 Gestionnaires de périphériques mode caractère

Les gestionnaires de périphériques se comportent de manière similaire. Par exemple, le gestionnaire pour lecteur de cartouches possède comme nombre majeur 27 :

  osiris:~ $ ls -lL /dev/ftape
  crw-rw----   1 root     disk      27,   0 Jul 18  1994 /dev/ftape

Toutefois, kerneld ne connaît pas ce gestionnaire par lui-même : il ne le trouve pas dans la liste donnée par /sbin/modprobe -c.

Donc, pour configurer le démon pour qu'il charge ce module, il est nécessaire d'ajouter la ligne suivante dans le fichier /etc/conf.modules :

  alias char-major-27 ftape

8.3 Gestionnaires de cartes réseau

Vous pouvez également utiliser le nom du périphérique au lieu de char-major-xxx, block-major-yyy. Cela est particulièrement utile avec les gestionnaires de périphériques de cartes réseau. Prenons l'exemple d'une carte ne2000 étant sur eth0 qui sera donc chargée en rajoutant :

  alias eth0 ne

Si vous devez passer des options au périphérique (par exemple pour donner au module l'IRQ de la carte réseau), il suffit de rajouter une ligne option :

  options ne irq=5

Cela permettra alors au module gérant les cartes ne2000 d'être chargé automatiquement au lieu d'avoir à taper la ligne de commande :

  /sbin/modprobe ne irq=5

Bien sûr, ces options sont spécifiques au module que vous utilisez.

8.4 Formats de binaires

Les formats de binaires sont gérés de la même manière. À chaque fois que vous essayez d'exécuter un programme que le noyau ne sait pas exécuter, kerneld reçoit une requête de la forme binfmt-xxx, où xxx est un nombre correspondant aux premiers octets de l'exécutable. Par exemple, pour gérer le chargement du module binfmt_aout pour les exécutables ZMAGIC (a.out) est

  alias binfmt-267 binfmt_aout

comme le nombre magique pour les fichiers ZMAGIC est 267 (voir le fichier /etc/magic. Si vous regardez, vous trouverez 0413, mais c'est de l'octal). Il existe en fait trois variantes des du format exécutable a.out : NMAGIC, QMAGIC et ZMAGIC. Donc pour gérer tout à fait les modules binfmt_aout, il est nécessaire d'avoir :

  alias binfmt-264 binfmt_aout  # executable pure (NMAGIC)
  alias binfmt-267 binfmt_aout  # executable de type demand-paged (ZMAGIC)
  alias binfmt-204 binfmt_aout  # executable de type demand-paged (QMAGIC)

Les formats de binaires a.out, Java et iBCS sont reconnus automatiquement par kerneld sans aucune configuration particulière.

8.5 Discipline de lignes (slip, cslip et ppp)

Les disciplines sont demandées avec tty-ldisc-x, où x commence généralement par 1 pour SLIP, ou 3 pour PPP. Il sont reconnus automatiquement par kerneld.

A propos de PPP, si vous souhaitez que kerneld charge le module de compression de données bsd_comp, il vous suffit d'ajouter les deux lignes suivantes dans le fichier /etc/conf.modules :

  alias tty-ldisc-3 bsd_comp
  alias ppp0 bsd_comp

8.6 Protocoles réseau (IPX, AppleTalk et AX.25)

Certains protocoles réseau peuvent être également chargés sous la forme de modules. Le noyau demande à kerneld une famille de protocole (par exemple IPX) avec une requête de la forme net-pf-XX est un nombre déterminant la famille désirée. Par exemple, net-pf-3 correspond à AX.25, net-pf-4 à IPX et net-pf-5 à AppleTalk (ces nombres sont déterminés par les macros AF_AX25, AF_IPX, ..., que l'on trouve dans les sources du noyau dans le fichier d'en-tête include/linux/socket.h). Pour charger automatiquement le module IPX, il suffit d'utiliser une entrée dans /etc/conf.modules :

  alias net-pf-4 ipx

Consultez également la section traitant les problèmes courant pour éviter certains messages d'avertissement lors de l'amorçage de la machine concernant des familles de protocole inconnus.

8.7 Systèmes de fichiers

Les requêtes soumises à kerneld concernant les systèmes de fichiers sont particulièrement simples car elles correspondent au nom du système de fichiers. Une utilisation classique concerne le chargement du module isofs pour les systèmes de fichiers CD-ROM, c'est à dire, le système de fichiers de type iso9660 :

  alias iso9660 isofs


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre