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.
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
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
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.
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.
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
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-X où X 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.
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