Kerneld mini-HOWTO

par Henrik Storner storner@osiris.ping.dk

Version 1.7 19 juillet 1997
(Adaptation fran�aise par Alexandre Devaure adevaure@mail.dotcom.fr, 14 janvier 1999).

1. Introduction

Ce document explique comment utiliser la fonction kerneld avec les noyaux Linux. Il d�crit :

La derni�re version de ce document peut �tre trouv�e � l'adresse http://eolicom.olicom.dk/~storner/kerneld-mini-HOWTO.html. Entre les versions du mini-HOWTO, vous pouvez trouver des mises � jour sur ma liste non tri�e des modifications � http://eolicom.olicom.dk/~storner/kern.html

La derni�re version fran�aise se trouve � l'adresse http://www.freenix.fr/linux/HOWTO/mini/.

2. Contributeurs

Si vous d�couvrez dans ce document des choses fausses, envoyez-moi un mot � ce sujet. Les personnes suivantes ont contribu� � ce mini-HOWTO sur certains points :

J'appr�cierai les encouragements et les suggestions des lecteurs de ce mini-HOWTO.

3. Qu'est-ce que kerneld ?

kerneld est li� � une fonctionnalit� introduite lors du d�veloppement des noyaux de la s�rie 1.3 par Bjorn Ekwall. Il perdure avec les noyaux 2.0 et 2.1. Il permet aux modules du noyau (c'est-�-dire les pilotes de p�riph�riques, de r�seaux, les syst�mes de fichiers...) d'�tre charg�s automatiquement en fonction des besoins, sans utilisation manuelle des commandes modprobe ou insmod.

Des aspects plus amusants, bien que ceux-ci ne soient pas (encore ?) int�gr�s dans le noyau standard :

kerneld est compos� de deux entit�s s�par�es :

Ces deux parties doivent fonctionner pour que kerneld soit op�rationnel. Le fait qu'une des deux soit initialis�e ne suffit pas.

4. Pourquoi est-ce que je veux l'utiliser ?

Il y a de bonnes raisons pour utiliser kerneld. Voici les miennes. D'autres peuvent l'utiliser pour d'autres raisons.

Bien s�r, il y a aussi des raisons pour que vous ne vouliez pas l'utiliser : vous pr�f�reriez avoir juste un fichier image de votre noyau avec tous vos pilotes � l'int�rieur. Dans ce cas, vous lisez le mauvais document.

5. O� puis-je trouver les outils n�cessaires ?

Le support dans le noyau de Linux a �t� introduit avec Linux 1.3.57. Si vous avez une version plus ancienne, vous devrez la mettre � jour si vous voulez qu'il supporte kerneld. Tous les sites ftp majeurs de Linux offrent les sources du noyau. Je recommande que vous le mettiez � jour avec la derni�re version 2.0 (actuellement la 2.0.36) :

Pour les utilisateurs fran�ais, il vaut mieux utiliser le miroir francais ftp://ftp.lip6.fr/pub2/linux/kernel/sources/v2.0/linux-2.0.36.tar.gz

Le d�mon en mode utilisateur a �t� introduit avec le paquetage modules-1.2.8 et avec le nouveau paquetage modules-2.0. Ils sont normalement trouvables � la m�me place que les sources des noyaux mais les sites officiels sont :

Pour les utilisateurs fran�ais : ftp://ftp.lip6.fr/pub2/linux/kernel/sources/v2.0/modules-2.0.0.tar.gz

AVERTISSEMENT : si vous voulez essayer de charger des modules avec les derniers noyaux 2.1 (d�veloppement), vous devrez utiliser le dernier paquetage modutils- (PAS modules-). Mais regardez plus bas au sujet des probl�mes avec les modules et les noyaux 2.1.

6. Comment le configure-t-on ?

D'abord, ayez les parties n�cessaires : un noyau et les derniers modules-utilities. Ensuite, vous devez installer les modules-utilities. C'est tr�s simple : il faut juste d�sempaqueter les sources et lancer make install. Ceci compile et installe les programmes suivants dans /sbin : genkym, insmod, lsmod, modprobe, depmod, kerneld. Je recommande que vous ajoutiez quelques lignes dans les scripts de d�marrage pour faire les initialisations n�cessaires lors du d�marrage de Linux. Ajoutez les lignes suivantes � votre fichier /etc/rc/rc.d/rc.sysinit (si vous utilisez la Slackware) ou � /etc/rc.d/rc.sysinit (si vous utilisez SysVinit, c'est-�-dire les distributions Debian, RedHat, Caldera) :

      # Demarrer kerneld - ceci doit arriver tres tot dans le
      # processus de demarrage, certainement AVANT que vous lanciez
      # fsck sur les syst�mes de fichiers qui ont besoins que les
      # pilotes de disque soient charg�s automatiquement
      if [ -x /sbin/kerneld ]
      then
          /sbin/kerneld
      fi

      # Vos commandes fsck fonctionnent ici
      # et votre command mount monte le syst�me de fichiers racine
      # en lecture seule.

      # Mettez � jour le fichier de d�pendance des modules du noyau
      # Votre syst�me de fichier racine doit �tre mont� en
      # lecture-�criture � partir de maintenant
      if [ -x /sbin/depmod ]
      then
          /sbin/depmod -a
      fi
      
La premi�re partie lance kerneld lui-m�me.

La second appelle depmod -a au d�marrage. Le programme depmod construit une liste de tous les modules disponibles et analyse leurs inter d�pendances. Donc il sait si un module a besoin qu'un autre soit charg� avant lui.

NOTE : Les versions r�centes de kerneld ont une option pour utiliser la librairie GNU dbm : libgdbm. Si vous l'activez quand vous construisez les modules-utilities, kerneld ne se lancera pas si lidgdbm n'est pas disponible, ce qui pourrait �tre le cas si vous avez /usr sur une partition s�par�e et que vous lanciez kerneldavant que /usr ne soit mont�e. La solution recommand�e est de d�placer libgdm de /usr/lib vers /lib ou de faire un lien statique de kerneld.

Ensuite, d�fa�tes les sources du noyau, configurez et construisez un noyau � votre convenance. Si vous ne l'avez jamais fait avant, vous devriez lire le fichire README � la racine des sources du noyau. Quand vous lancez make config pour configurer le noyau, vous devrez faire attention � des questions qui apparaissent au d�but :

      Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y
      
Vous devez s�lectioner la gestion des modules chargeables, sinon, il n'y aura pas de modules � charger pour kerneld. R�pondez seulement oui (Y).
      Kernel daemon support (CONFIG_KERNELD) [Y/n/?] Y
      
Ceci est aussi n�cessaire. Ensuite, de nombreuses choses peuvent �tre mises sous forme de modules. Vous verrez des questions du genre :
      Normal floppy disk support (CONFIG_BLK_DEV_FD) [M/n/y/?]
      
o� vous pouvez r�pondre M pour Module. G�n�ralement, seuls les pilotes n�cessaires lors du d�marrage de votre syst�me (le pilote du disque dur, le pilote du syst�me de fichiers racine) doivent �tre mis dans le noyau ; le reste pouvant �tre construit sous forme de modules.

Quand vous avez fini avec make config, lancez make dep, make clean, make zImage ou make modules, make modules et make modules_install.

Ouf !

La commande make zImage cr�e la nouvelle image du noyau dans le fichier arch/i386/boot/zImage. Vous devrez le copier o� vous mettez votre image de boot. N'oubliez pas de relancer LILO.

Pour plus d'informations sur la configuration, la construction et l'installation de votre propre noyau, regardez le Kerneld-HOWTO post� r�guli�rement au comp.os.linux.answers et disponible sur le site sunsite.unc.edu/pub/Linux/docs/HOWTO. La version fran�aise est disponible � www.freenix.fr/linux

7. Tester kerneld

Maintenant, relancez le syst�me avec le nouveau noyau. Quand le syst�me est pr�t, vous pouvez ex�cuter un ps ax et vous devriez voir une ligne pour kerneld :

      PID TTY STAT  TIME COMMAND
      59  ?  S     0:01 /sbin/kerneld
      

Une des choses int�ressantes de kerneld est qu'une fois le noyau et le d�mon install�s, seule une tr�s petite initialisation est n�cessaire. Pour commencer, essayez d'utiliser un des pilotes que vous avez construit comme module. J'ai construit le pilote de disquette comme module, donc je peux mettre une disquette DOS dans le lecteur et :

      osiris:~ $ mdir a:
        Volume in drive A has no label
        Volume Serial Number is 2E2B-1102
        Directory for A:/

        binuti~1 gz       1942 02-14-1996  11:35a binutils-2.6.0.6-2.6.0.7.diff.gz
        libc-5~1 gz      24747 02-14-1996  11:35a libc-5.3.4-5.3.5.diff.gz
                2 file(s)        26689 bytes
      
le pilote de disquette fonctionne : il a �t� charg� automatiquement par kerneld quand j'ai voulu utiliser la disquette.

Pour voir que le module floppy est en effet charg�, vous pouvez lancer /sbin/lsmod qui listera tous les modules charg�s � l'instant :

      osiris:~ $ /sbin/lsmod
      Module:        #pages:  Used by:
      floppy            11    0 (autoclean)
      
Le mot ``autoclean'' signifie que le module sera automatiquement enlev� par kerneld quand il n'aura pas �t� utilis� pendant plus d'une minute. Les 11 pages de m�moire (soit 44ko, une page faisant 4ko) seront donc seulement utilis�es quand j'acc�derai au lecteur de disquette ; si je n'utilise pas la disquette pendant plus d'une minute, elles seront lib�r�es. Tr�s int�ressant si vous �tes � court de m�moire pour vos applications !

8. Comment kerneld sait-il quel module charger ?

Bien que kerneld connaisse d�j� les types les plus communs de modules, il y a des situations dans lesquelles kerneld ne sera pas comment satisfaire une requ�te venant du noyau. C'est le cas avec les pilotes de CD-ROM ou de cartes r�seau, o� il existe plus d'un module possible susceptible d'�tre charg�.

Les requ�tes que le d�mon de kerneld re�oit du noyau viennent d'un des �l�ments suivants :

kerneld d�termine quel module doit �tre charg� regardant le fichier de configuration /etc/conf.modules. Il y a deux types d'entr�e dans ce fichier : les chemins (o� les fichiers des modules sont stock�s) et les alias (quel module doit �tre charg�). Si vous n'avez pas d�j� ce fichier, vous devrez le cr�er en lan�ant /sbin/modprobe -c | grep -v '^path' > /etc/conf.modules

Si vous voulez ajouter encore une autre directive ``path'' aux chemins par d�faut, vous devez inclure aussi tous les chemins par d�faut �tant donn� qu'une directive path dans /etc/conf.modules remplacera toutes celles que modprobe conna�t par d�faut.

Normalement, vous ne voudrez pas ajouter de path par vous-m�me �tant donn� que l'ensemble des chemins par d�faut prend en compte toutes les configurations normales, je vous le promets !

D'un autre c�t�, si vous voulez juste ajouter un alias ou une directive d'option, vos nouvelles entr�es dans /etc/conf.modules seront ajout�es � celles que modprobe conna�t d�j�. Si vous deviez red�finir un alias ou une option, vos nouvelles entr�es dans /etc/conf.modules remplaceront celles d�j� pr�sentes.

8.1 Les p�riph�riques bloc

Si vous lancez /sbin/modprobe -c, vous aurez la liste des modules connus par kerneld et � quelles requ�tes ils correspondent. Par exemple, la requ�te qui termine le chargement du gestionnaire de disquettes correspond au p�riph�rique bloc dont le num�ro majeur est 2 :

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

Pourquoi block-major-2 ? Parce que les lecteurs de disquettes /dev/fd* utilisent un num�ro majeur �gal � 2 et sont 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 Les p�riph�riques caract�res

Les p�riph�riques de type caract�re sont utilis�s de la m�me mani�re. Par exemple, le lecteur de bande correspond au num�ro majeur 27 :

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

Toutefois, kerneld ne le conna�t pas par d�faut : il n'est pas list� dans le r�sultat de /sbin/modprobe -c.

Donc, pour configurer kerneld de mani�re � charger le gestionnaire ftape, je dois ajouter une ligne au fichier de configuration /etc/conf.modules :

      alias char-major-27 ftape
      

8.3 Les p�riph�riques r�seau

Vous pouvez aussi utiliser le nom du p�riph�rique � la place de char-major-xxx ou block-major-yyy. Ceci est particuli�rement utilis� pour les gestionnaires r�seaux. Par exemple, un pilote pour une carte r�seau ne2000 utilis�e comme eth0 pourrait �tre charg� avec :

      alias eth0 ne
      

Si vous devez passer des options au gestionnaire (comme de dire au module quelle IRQ la carte r�seau utilise), vous ajoutez une ligne options :

      options ne irq=5
      

Ainsi kerneld lancera le gestionnaire NE2000 avec la commande :

      /sbin/modprobe ne irq=5
      

Bien s�r, les options disponibles sont sp�cifiques aux modules que vous chargez.

8.4 Les formats binaires

Les formats binaires sont g�r�s de la m�me fa�on. A chaque fois que vous essayez de lancer un programme que le noyau ne sait pas comment ex�cuter, kerneld lance une requ�te pour binfmt-xxx, ou xxx est le nombre d�termin� � partir des tous premiers octets de l'ex�cutable. Donc la configuration de kerneld pour la gestion du chargement du module binfmt_aout pour les ex�cutable ZMAGIC (a.out) est :

      alias binfmt-267 binfmt_aout
      
vu que le nombre magique pour les fichiers ZMAGIC est 267 (voir /etc/magic). Si vous regardez /etc/magic, vous verrez le nombre 0413, ceci parce que ce fichier utilise des nombres octaux alors que kerneld utilise des d�cimaux ( 413 en octal correspond � 267 en d�cimal ). Il y a en r�alit� trois variantes des ex�cutables a.out peu diff�rentes (NMAGIC, QMAGIC et ZMAGIC). Pour un support total du format a.out, vous devez avoir :
      alias binfmt-264 binfmt_aout  # pure executable (NMAGIC)
      alias binfmt-267 binfmt_aout  # demand-paged executable (ZMAGIC)
      alias binfmt-204 binfmt_aout  # demand-paged executable (QMAGIC)
      

Les formats binaires a.out, Jave et iBCS sont reconnus automatiquement par kerneld sans la moindre configuration.

8.5 Les disciplines de ligne (slip, cslip et ppp)

Les disciplines de lignes sont demand�es avec tyy-ldisc-x o� x est g�n�ralement 1 (pour SLIP) ou 3 (pour PPP). Ces deux sont reconnus automatiquement par kerneld.

Concernant PPP, si vous voulez que kerneld charge le module de compression de donn�es pour PPP bsd_comp, vous devez ajouter les deux lignes suivantes au fichier /etc/conf.modules :

      alias tty-ldisc-3 bsd_comp
      alias ppp0 bsd_comp
      

8.6 Les familles de protocoles r�seau (IPX, AppleTalk, AX.25)

Certains protocoles r�seau peuvent �tre aussi charg�s sous la forme de modules. Le noyau demande � kerneld une famille de protocole (par exemple IPX) avec une requ�te pour net-pf-X o� X est un nombre indiquant la famille voulue. Par exemple, netpf-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 etc., que l'on trouve dans le fichier source include/linux/socket.h. Donc, pour charger automatiquement le module IPX, vous devrez ajouter une entr�e dans /etc/conf.modules :

      alias net-pf-4 ipx
      

Consultez �galement la section traitant des probl�mes courants pour �viter des messages d'avertissment lors de l'amor�age relatifs � des familles de protocoles ind�finies.

8.7 Les syst�mes de fichiers

Les requ�tes soumises � kerneld pour les syst�mes de fichiers sont simplement constitu�es par le type du syst�me de fichiers. Un usage courant est de charger le module isofs pour les syst�mes de fichiers des CD-ROM, c'est-�-dire les syst�mes de fichiers de type iso9660 :

      alias iso9660 isofs
      

9. P�riph�riques demandant une configuration sp�ciale

Certains p�riph�riques demandent un peu plus de configuration que le simple alias d'un p�riph�rique et d'un module.

9.1 char-major-10 : souris, watchdogs, et random

Les p�riph�riques sont habituellement identifi�s par leur nombre majeur, par exemple 27 pour ftape. Toutefois, si vous regardez les entr�es de /dev pour le nombre majeur 10, vous verrez un certain nombre de p�riph�riques tr�s diff�rents. Parmi ceux-ci :

De fa�on �vidente, ces p�riph�riques sont contr�l�s par diff�rents modules et non un seul. Pour cela, kerneld utilise le nombre majeur et le nombre mineur :

      alias char-major-10-1 psaux     # For PS/2 mouse
      alias char-major-10-130 wdt     # For WDT watchdog
      

Vous avez besoin d'un version du noyau 1.3.82 ou sup�rieure pour l'utiliser. Les versions plus anciennes ne passaient pas le nombre mineur � kerneld, ce qui ne permettait pas � kerneld de savoir quel module il fallait charger.

9.2 Charger les gestionnaires SCSI : l'entr�e scsi_hostadapter

Les gestionnaires de p�riph�riques SCSI sont constitu�s d'un adaptateur pour la carte SCSI (par exemple pour une Adaptec 1542) et d'un gestionnaire pour le type de p�riph�rique SCSI que vous utilisez, comme un disque dur, un lecteur de CD-ROM ou un lecteur de cartouche. Tous peuvent �tre charg�s sous forme de modules. Cependant, lorsque vous voulez acc�der � un lecteur de CD-ROM connect� � une carte Adaptec, le noyau et kerneld savent seulement qu'il faut charger le module sr_mod pour g�rer le CD-ROM SCSI, mais ils ignorent � quel contr�leur SCSI il est connect�, donc quel module charger pour g�rer le contr�leur SCSI.

Pour r�soudre cela, vous pouvez ajouter une entr�e pour le module du contr�leur SCSI au fichier /etc/conf.modules qui indiquera � kerneld quel module charger parmi toutes les possibilit�s :

      alias scd0 sr_mod               # sr_mod pour SCSI CD-ROM's ...
      alias scsi_hostadapter aha1542  # ... doit utiliser le pilote
                                      # Adaptec 1542
      

Cela ne fonctionne que pour un noyau de version 1.3.82 ou sup�rieure.

Cela marche si vous n'avez qu'une carte SCSI, sinon, c'est un peu plus difficile. En g�n�ral, vous ne pouvez pas avoir kerneld qui charge le pilote d'une carte SCSI si le gestionnaire d'un autre contr�leur est d�j� install�. Vous devez soit construire un noyau avec les deux gestionnaires (ils ne sont plus sous forme de modules) soit les charger manuellement.

Il y a une possibilit� pour que kerneldcharge plusieurs gestionnaires SCSI. James Tsiao a eu cette id�e : vous pouvez avoir kerneld qui charge le second controleur SCSI en mettant la d�pendance dans le fichier modules.dep � la main. Vous avez juste besoin d'une entr�e comme :

      /lib/modules/2.0.30/scsi/st.o: /lib/modules/2.0.30/scsi/aha1542.o
      
Pour que kerneldcharge le module aha1542.o avant qu'il charge st.o. Ma machine � la maison est configur�e exactement comme au-dessus et fonctionne tr�s bien pour tous les p�riph�rique de mon second contr�leur SCSI, incluant lecteurs de cartouche, CD-ROM et des p�riph�riques SCSI g�n�riques. L'inconv�niant est que depmod -a ne peut pas d�tecter ces d�pendances. Donc, l'utilisateur doit les ajouter � la main et ne pas lancer depmod -a au d�marrage. Une fois configur�, kerneld chargera automatiquement aha1542.o comme il faut.

Vous devez �tre conscient que cette technique ne marche que si vous avez diff�rents types de p�riph�riques sur deux contr�leurs. Par exemple les disques durs sur un contr�leur et les lecteurs de CD-ROM, de cartouches et les p�riph�riques g�n�riques sur l'autres.

9.3 Quand charger un module n'est pas suffisant : l'entr�e post-install

Parfois, charger un module n'est pas suffisant pour qu'il fonctionne correctement. Par exemple, si vous avez compil� le pilote de votre carte son en tant que module, il est souvent pratique de le r�gler pour un certain volume sonore. Le seul probl�me, c'est que cette initialisation dispara�t lors du chargement suivant du module. Voici un truc de Ben Galliart bgailla@luc.edu :

Il faut installer le paquetage setmix-0.1 ( ftp://sunsite.unc.edu/pub/Linux/apps/sound/mixers/setmix-0.1.tar.gz)

et ensuite ajouter les lignes suivantes au fichier /etc/conf.modules :

      post-install sound /usr/local/bin/setmix -f /etc/volume.conf
      
Ainsi kerneld ex�cute la commande indiqu�e par l'entr�e post-install sound apr�s que le module son ait �t� charg�. Donc, le module son est configur� par la commande /usr/local/bin/setmix -f /etc/volume.conf.

Cela peut s'av�rer tr�s utile pour d'autres modules, par exemple le module lp peut �tre configur� par le programme tunelp en ajoutant :

      post-install lp tunelp <options>
      
Pour que kerneldreconnaisse ces options, vous devez avoir une version 1.3.69 de kerneld ou sup�rieure.

Note : une version pr�c�dente de ce mini-HOWTO mentionne une option pre-remove qui peut �tre utilis�e pour exc�cuter une commande juste avant que kerneld ne d�charge un module. Toutefois, cela n'a jamais march� et son utilisation est d�conseill�e. Heureusement, cette options disparaitra dans une future version de kerneld. L'ensemble des op�rations d'initialisation des modules est en cours de modification en ce moment, et peut diff�rer sur votre syst�me au moment o� vous lirez ceci.

10. Espionner kerneld

Si vous avez tout essay� et que vous ne comprenez pas ce que le noyau demande � kerneld, il y a une solution pour voir les requ�tes que re�oit kerneld et par cons�quent comprendre ce qu'il faut mettre dans /etc/conf.modules. Pour cela, il faut utiliser l'utilitaire kdstat.

Ce petit programme est livr� avec le paquetage modules, mais il n'est ni compil�, ni install� par d�faut. Pour le compiler :

      cd /usr/src/modules-2.0.0/kerneld
      make kdstat
      

Ensuite, pour que kerneld affiche les informations sur ce qu'il est en train de faire, il faut lancer :

      kdstat debug
      
et kerneld commencera � envoyer des messages � la console sur son activit�. Si vous essayez de lancer la commande que vous voulez utiliser, vous verrez les requ�tes adress�es � kerneld. Elles peuvent �tre copi�es dans le fichier /etc/conf.modules et mises en alias du module demand� pour r�aliser la t�che.

Pour arr�ter le debuggage, lancez :

      /sbin/kdstat nodebug
      

11. Utilisations sp�ciales de kerneld

Je savais bien que vous me demanderiez comment configurer le module d'�conomiseur d'�cran...

Le r�pertoire kerneld/GOODIES dans le paquetage modules a un certain nombre de patches noyau pour la gestion de l'�conomiseur d'�cran ainsi que le beep de la console par kerneld. Ils ne font pas partie du noyau officiel. Vous devrez donc installer les patches noyau et le recompiler.

Pour installer un patch, utilisez la commande ``patch'' :

      cd /usr/src/linux
      patch -s -p1 </usr/src/modules-2.0.0/kerneld/GOODIES/blanker_patch
      
Ensuite recompilez et installez le nouveau noyau.

Quand il sera temps de lancer l'�conomiseur d'�cran, kerneld ex�cutera la commande /sbin/screenblanker (il peut s'agir d'un script shell qui lance votre �conomiseur d'�cran favorixt.

Quand le noyau veut l'arr�ter, il envoie un signal SIGQUIT au processus ex�cutant /sbin/screenblanker. Votre script shell ou �conomiseur d'�cran doit le capter et se terminer. Pensez � restaurer l'�cran dans le mode texte initial !

12. Probl�mes courants

12.1 Pourquoi est-ce que j'ai des messages ``Cannot locate module for net-pf-X'' quand j'exc�cute ifconfig ?

Le code du noyau a �t� modifi� pour permettre le chargement des familles de protocoles r�seau (comme IPX, AX25 et AppelTalk) comme modules vers la version 1.3.80. Cela a eu pour effet d'ajouter une nouvelle requ�te pour kerneld, net-pf-X, o� X est un nombre identifiant le protocole (voir le fichier /usr/src/linux/include/linux/socket.h pour la signification de ces nombres).

Malheureusement, ifconfig envoie ces messages, donc un bon nombre de personnes recoivent ces messages lors le syst�me se lance et qu'il ex�cute ifconfig pour initialiser le p�riph�rique loopback. Ces messages sont sans danger et vous pouvez les retirer en ajoutant les lignes suivantes :

      alias net-pf-3 off  # oubliez AX.25
      alias net-pf-4 off  # oubliez IPX
      aliad net-pf-5 off  # oubliez AppleTalk
      
au fichier /etc/conf.modules. Biens�r, si vous utilisez IPX comme module, n'ajoutez pas la ligne qui retire IPX.

12.2 Apr�s voir lancer kerneld, mon syst�me ralentit quand j'active ma connexion PPP

Il y a bon nombre de messages � ce sujet. Il semble qu'il y ait une malheureuse interaction entre kerneld et le script tkPPP qui est utilis� sur certains syst�mes pour configurer et surveiller la connexion PPP. Le script ex�cute apparemment des boucles quand il lance ifconfig. Celui-ci d�clenche kerneld pour rechercher les modules net-pf-X (voir ci-dessous), ce qui provoque une surcharge du syst�me et l'envoi possible de messages ``Cannot locate module for net-pf-X''. Il n'y a pas d'autres solutions que de ne pas utiliser tkPPP ou de changer sa fa�on de surveiller la connexion.

12.3 kerneldne charge pas mon gestionnaire SCSI

Ajoutez une entr�e pour la carte SCSI au fichier /etc/conf.modules. Regardez la description de l'entr�e scsi_hostadapter plus haut.

12.4 modprobe se plaint que gcc2_compiled n'est pas d�fini

Ceci est une erreur dans module-utilities qui ne se voit qu'avec binutils 2.6.0.9 ou sup�rieur et elle est aussi document�e dans les notes de mises � jour du paquetage binutils. Lisez-le donc ou mettez � jour le paquetage des modules par un qui corrige ce probl�me, par exemple le modules-2.0.0.

12.5 Le volume de ma carte son n'est pas initialis� etc.

Les options de configuration d'un modules sont stock�es dans le module lui-m�me quand il est charg�. Donc, quand kerneld d�charge un module, la configuration que vous aviez faite est perdue et la prochaine fois que le module sera charg�, il h�ritera de la configuration par d�faut.

Vous pouvez indiquer � kerneld de configurer un module en ex�cutant un programme apr�s son chargement automatique. Voir la section sur l'entr�e post-install.

12.6 DOSEMU a besoin de modules, comment kerneld peut-il les charger ?

Vous ne pouvez pas. Aucune des versions de dosemu (officielles ou de d�veloppement) ne g�rent le chargement des modules � travers kerneld. Cependant, if vous avez un noyau 2.0.26 ou sup�rieur, vous n'avez pas besoin de modules dosemu particuliers. Installez juste dosemu 0.66.1.

12.7 Pourquoi ai-je des messages ``Ouch, kerneld time out, message failed'' ?

Quand le noyau envoit une requ�te � kerneld, il s'attend � recevoir un acquittement dans un d�lai d'une seconde. Si kerneld n'envoie pas cet acquittement, ce message est diffus�. La requ�te est retransmise et peut �ventuellement r�ussir

Cela arrive couramment sur des syst�mes lourdement charg�s. kerneld �tant un processus en mode utilisateur, il est ordonnanc� comme tout processus du syst�me. Sous de fortes charges, il peut ne pas s'ex�cuter pour envoyer l'acquittement avant l'expiration du d�lai.

Si cela se produit quand la charge est faible, essayez de red�marrer kerneld. Tuez le processus kerneld et red�marrez-le avec la commande /usr/sbin/kerneld. Si le probl�me persiste, vous devrez envoyer un message d'erreur � linux-kernel@vger.rutgers.edu mais, s'il vous pla�t soyez s�r que votre version du noyau et de kerneld soient � jour avant d'envoyer un message sur ce probl�me.

12.8 mount n'attend pas que kerneld charge le module du syst�me de fichier

Il existe un certain nombre de messages sur le fait que la commande mount(8) n'attende pas que kerneld ait charg� le module du syst�me de fichiers. lsmod montre que kerneld a charg� le module et si vous r�p�tez la commande mount imm�diatement, le montage sera r�ussi. Cela semble �tre une erreur dans le paquetage modules version 1.3.69f qui affecte des utilisateurs de Debian (elle peut �tre corrig�e en installant la derni�re version de ce paquetage).

12.9 kerneld n'arrive pas � charger le module ncpfs

Vous devez compiler les utilitaires ncpfs avec l'option -DHAVE_KERNELD. Voir le fichier Makefile de ncpfs.

12.10 kerneld n'arrive pas � charger le module smbfs

Vous utilisez une vieille version des utilitaires smbmount. Prenez la derni�re version (0.10 ou sup�rieure) � ftp://tsx-11.mit.edu/pub/linux/filesystems/smbfs/.

12.11 J'ai tout recompil� sous forme de modules et maintenant, mon syst�me ne peut plus d�marrer : kerneld n'arrive pas � charger le module du syst�me de fichier racine.

Vous ne pouvez pas tout mettre sous forme de modules : le noyau doit avoir assez de gestionnaires pour monter votre syst�me de fichiers racine et ex�cuter les programmes n�cessaires au d�marrage de kerneld. Donc vous ne pouvez pas mettre sous forme de modules :

En fait ce n'est pas vrai. Les derni�res version 1.3.x et toutes les 2.x du noyau, supportent l'utilisation d'un disque ram qui est charg� par lilo ou loadlin et il est possible de charger des modules de ce ``disque'' tr�s t�t dans le processus de d�marrage. La marche � suivre est d�crite dans le fichier Documentation/initrd.txt dans l'arborescence des sources du noyau.

12.12 kerneldne se lance pas lors de l'amor�age de la machine : il veut libgdbm

Les nouvelles versions de kerneld ont besoin de la librairie GNU dbm, libgdbm.so pour fonctionner. La plupart des installations ont ce fichier dans /usr/lib mais vous avez probablement lanc� kerneld avant que le syst�me de fichiers de /usr ne soit mont�. Un des symptomes de ceci est que kerneld ne marche pas lors du d�marrage du syst�me et de l'ex�cution des script rc, mais fonctionne parfaitement si vous le lancez � la main apr�s. La solution est soit de d�placer le lancement de kerneld apr�s que /usr ne soit mont�, soit de mettre la librairie gdbm dans le syst�me de fichiers racine (par exemple dans /lib).

12.13 J'ai ``Cannot load module xxx'' mais j'ai reconfigur� mon noyau sans la gestion de xxx !

L'installation de la Slackware (et peut-�tre d'autres) cr�e un fichier /etc/rc.d/rc.modules par d�faut qui fait un modprobe explicite sur une grande vari�t� de modules. Quels modules exactement sont ``modprob�s'' ?, cela d�pend de la configuration initiale du noyau. Vous avez probablement reconfigur� votre noyau pour enlever un ou plusieurs modules qui est modprob� dans rc.modules, d'o� les messages d'erreur. Mettez � jour votre fichier rc.modules en commentant tout module que vous n'utilisez plus, ou enlevez enti�rement ce fichier et laissez kerneld charger les modules quand on en a besoin.

12.14 J'ai recompil� mon noyau et les modules et j'ai toujours des messages sur des symboles non r�solus au d�marrage

Vous avez probablement reconfigur� et recompil� votre noyau et exclu des modules. Vous avez d'anciens modules que vous n'utilisez pas dans le r�pertoire /lib/modules. La solution la plus simple est d'effacer le r�pertoire /lib/modules/x.y.z et de retaper make modules_install depuis le r�pertoire des sources du noyau. Notez que ce probl�me arrive seulement quand vous reconfigurez le noyau sans changer de version. Si vous voyez cette erreur quand vous passer � une nouvelle version du noyau, vous avez un autre probl�me.

12.15 J'ai install� Linux 2.1 et aucun module ne se charge

Linux 2.1 est un noyau de d�veloppement. Pour cette raison, il se peut que certaines choses ne fonctionnent pas de temps en temps. La fa�on dont les modules sont manipul�s a chang� de fa�on significative. Richard Henderson a la charge du d�veloppement du noyau des modules.

En bref, si vous voulez utiliser les modules avec un noyau 2.1, vous devez :

Je recommande le noyau 2.1.29, si vous voulez utiliser les modules avec un noyau 2.1.

12.16 Que dire d'un r�seau utilisant la ligne t�l�phonique ?

kerneld peut � l'origine g�rer l'�tablissement de connexions r�seau � travers le r�seau t�l�phonique � la demande : essayer d'envoyer des paquets � un r�seau sans �tre connect�, peut entra�ner kerneld � lancer le script /sbin/request_route pour initialiser une connexion PPP ou SLIP.

Il s'est av�r� que c'�tait une mauvaise id�e. Alan Cox, bien connu pour ses travaux sur le r�seau dans Linux a �crit sur la liste de diffusion linux-kernel que :

``Le truc request-route est obsol�te, cass� et non requis... Il est aussi enlev� des versions 2.1.x.''

A la place d'utiliser le script request-route et kerneld, je vous encourage vivement � installer le paquetage diald d'Eric Schenk, disponible � l'url http://www.dna.lth.se/~erics/diald.html

13. Copyright

Ce document est copyright� (c) Henrik Storner, 1996, 1997.

Sauf contre-ordre, les documents HowTo pour Linux sont copyright�s pas leurs auteurs respectifs. Ces documents peuvent �tre reprodruits et distribu�s dans leur ensemble ou en partie, sur n'importe quel type de support physique ou �lectronique, du moment que cette notice l�gale se trouve sur toutes les copies. Les redistributions commerciales sont autoris�es et encourag�es. Toutefois, l'auteur aimerait bien �tre avis� de toute distribution de ce genre.

Toute traduction, travail d�riv� ou compl�mentaire incluant tout ou partie de document HowTo Linux doit �tre couvert par ce copyriht. De cette mani�re, vous ne pouvez cr�er un document qui s'inspire de ce document et imposer des restrictions suppl�mentaires � sa diffusion. Des exceptions � ces conditions peuvent �tre donn�es sous certaines conditions. Contactez le coordonnateur des HowTo Linux � l'adresse donn�e un peu plus bas.

En r�sum�, nous souhaitons promouvoir la diffusion de ces informations � travers un maximum de moyens de communication. Toutefois, nous souhaitions conserver un copyright sur les documents HowTo et nous souhaitons �tre avertis de leur redistribution.

Si vous avez des questions, vous pouvez contacter Greg Hankins, le coordonnateur des HowTo Linux par courrier �lectronique � gregh@sunsite.unc.edu