Kerneld mini-HOWTO
 par Henrik Storner [email protected]

 Version 1.7 19 juillet 1997

 (Adaptation fran�aise par Alexandre Devaure [email protected],
 14 janvier 1999).

 ______________________________________________________________________

 Table des mati�res























































 1. Introduction

 2. Contributeurs

 3. Qu'est-ce que

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

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

 6. Comment le configure-t-on ?

 7. Tester kerneld

 8. Comment

    8.1 Les p�riph�riques bloc
    8.2 Les p�riph�riques caract�res
    8.3 Les p�riph�riques r�seau
    8.4 Les formats binaires
    8.5 Les disciplines de ligne (slip, cslip et ppp)
    8.6 Les familles de protocoles r�seau (IPX, AppleTalk, AX.25)
    8.7 Les syst�mes de fichiers

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

    9.1 char-major-10 : souris, watchdogs, et random
    9.2 Charger les gestionnaires SCSI : l'entr�e
    9.3 Quand charger un module n'est pas suffisant : l'entr�e

 10. Espionner kerneld

 11. Utilisations sp�ciales de kerneld

 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
    12.2 Apr�s voir lancer
    12.3 (TT
    12.4 (TT
    12.5 Le volume de ma carte son n'est pas initialis� etc.
    12.6 DOSEMU a besoin de modules, comment
    12.7 Pourquoi ai-je des messages ``Ouch, kerneld time       out, message failed'' ?
    12.8 (TT
    12.9 (TT
    12.10 (TT
    12.11 J'ai tout recompil� sous forme de modules et maintenant,       mon syst�me ne peut plus d�marrer :
    12.12 (TT
    12.13 J'ai ``Cannot load module xxx'' mais j'ai reconfigur�       mon noyau sans la gestion de xxx !
    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
    12.15 J'ai install� Linux 2.1 et aucun module ne se charge
    12.16 Que dire d'un r�seau utilisant la ligne t�l�phonique ?

 13. Copyright



 ______________________________________________________________________

 11..

 IInnttrroodduuccttiioonn

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

 �  ce qu'est kerneld ;

 �  pourquoi l'utiliser ;

 �  comment avoir les outils n�cessaires ;

 �  comment les configurer ;

 �  comment faire fonctionner kerneld avec des modules qu'il ne conna�t
    pas ;

 �  comment espionner kerneld (peut s'av�rer tr�s utile lors de la mise
    au point) ;

 �  les utilisations sp�ciales de kerneld ;

 �  les probl�mes courants et les dysfonctionnements.

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

 22..

 CCoonnttrriibbuutteeuurrss

 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 :


 �  Bjorn Ekwall [email protected]

 �  Ben Gaillart [email protected]

 �  Cedric Tefft [email protected]

 �  Brian Miller [email protected]

 �  James C. Tsiao [email protected]

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

 33..

 QQuu''eesstt--ccee qquuee kkeerrnneelldd  ??

 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 :

 �  on peut configurer kerneld pour qu'il ex�cute un programme
    utilisateur � la place de l'�conomiseur d'�cran, ce qui vous permet
    d'utiliser n'importe quel programme.
 �  dans le m�me genre que l'�conomiseur d'�cran, vous pouvez aussi
    changer le traditionel ``beep'' en quelque chose de compl�tement
    diff�rent...

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

 �  gestion dans le noyau de Linux afin d'envoyer des requ�tes au d�mon
    afin de savoir si un module doit �tre utilis� pour certaines t�ches
    ;

 �  un d�mon au niveau utilisateur qui peut montrer quels modules
    doivent �tre charg�s pour accomplir la requ�te du noyau.

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

 44..

 PPoouurrqquuooii eesstt--ccee qquuee jjee vveeuuxx ll''uuttiilliisseerr ??

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

 �  Si vous devez construire des noyaux pour de nombreux syst�mes qui
    diff�rent peu (par exemple, une marque diff�rente de carte r�seau),
    alors vous pouvez construire un seul noyau et des modules, � la
    place d'avoir � construire un noyau par syst�me.

 �  Les modules sont plus faciles � tester pour les d�veloppeurs : il
    ne faut pas relancer le syst�me pour charger et enlever le pilote.
    Ceci s'applique pour tous les modules et non juste pour ceux qui
    sont mont�s par kerneld.

 �  Il r�duit l'usage de la m�moire du noyau, ce qui donne plus de
    m�moire pour les applications. La m�moire utilis�e par le noyau
    n'est jamais ``swapp�e'' sur disque, donc si vous avez 100Ko de
    pilotes non utilis�s compil�s dans le noyau, ils occasionnent
    simplement une perte de RAM.

 �  Certaines choses que j'utilise, le pilote ftape, par exemple ou
    iBCS, ne sont valables que sous forme de modules. Mais je ne veux
    pas m'emb�ter avec leur chargement et leur d�chargement � chaque
    fois que j'en ai besoin.

 �  Les personnes qui font des distributions Linux ne veulent pas
    construire 284 images de boot diff�rentes, chaque utilisateur
    charge les pilotes dont il a besoin pour sa configuration. C'est la
    m�thode retenue par la RedHat 4.0 dans son installation.

 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.

 55..

 OO�� ppuuiiss--jjee ttrroouuvveerr lleess oouuttiillss nn��cceessssaaiirreess ??

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

 �  ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/linux-2.0.36.tar.gz

 �  ftp://tsx-11.mit.edu/pub/linux/sources/system/v2.0/linux-2.0.36.tar.gz

 �  ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/v2.0/linux-2.0.36.tar.gz

 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 :

 �  ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/modules-2.0.0.tar.gz

 �  ftp://tsx-11.mit.edu/pub/linux/sources/sbin/modules-2.0.0.tar.gz

 �  ftp://ftp.funet.fi/pub/Linux/tools/modules-2.0.0.tar.gz

 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.

 66..

 CCoommmmeenntt llee ccoonnffiigguurree--tt--oonn ??

 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

 77..

 TTeesstteerr kkeerrnneelldd

 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 dis�
 quette ; 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 !

 88..

 CCoommmmeenntt kkeerrnneelldd  ssaaiitt--iill qquueell mmoodduullee cchhaarrggeerr ??

 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 :

 �  un pilote de p�riph�rique bloc ;

 �  un pilote de p�riph�rique caract�re ;

 �  un format binaire ;

 �  une discipline de ligne tty ;

 �  un syst�me de fichier ;

 �  un p�riph�rique r�seau ;

 �  un service r�seau (par exemple rarp) ;

 �  un protocole r�seau (par exemple IPX).

 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.

 88..11..

 LLeess pp��rriipphh��rriiqquueess bblloocc

 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




 88..22..

 LLeess pp��rriipphh��rriiqquueess ccaarraacctt��rreess

 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




 88..33..

 LLeess pp��rriipphh��rriiqquueess rr��sseeaauu

 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.

 88..44..

 LLeess ffoorrmmaattss bbiinnaaiirreess

 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.

 88..55..

 LLeess ddiisscciipplliinneess ddee lliiggnnee ((sslliipp,, ccsslliipp eett pppppp))

 Les disciplines de lignes sont demand�es avec _t_y_y_-_l_d_i_s_c_-_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




 88..66..

 LLeess ffaammiilllleess ddee pprroottooccoolleess rr��sseeaauu ((IIPPXX,, AApppplleeTTaallkk,, AAXX..2255))

 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 _n_e_t_-_p_f_-_X o� _X est un nombre
 indiquant la famille voulue. Par exemple, _n_e_t_p_f_-_3 correspond � AX.25,
 _n_e_t_-_p_f_-_4 � IPX et _n_e_t_-_p_f_-_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.

 88..77..

 LLeess ssyysstt��mmeess ddee ffiicchhiieerrss

 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 _i_s_o_f_s pour les syst�mes de fichiers
 des CD-ROM, c'est-�-dire les syst�mes de fichiers de type _i_s_o_9_6_6_0 :
       alias iso9660 isofs




 99..

 PP��rriipphh��rriiqquueess ddeemmaannddaanntt uunnee ccoonnffiigguurraattiioonn sspp��cciiaallee

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

 �  les p�riph�riques de type caract�re de num�ro majeur 10 : divers
    p�riph�riques ;

 �  les p�riph�riques SCSI :

 �  les p�riph�riques qui demandent une initialisation sp�ciale.

 99..11..

 cchhaarr--mmaajjoorr--1100 :: ssoouurriiss,, wwaattcchhddooggss,, eett rraannddoomm

 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 :

 �  des souris de toutes sortes (souris bus, PS/2,...) ;

 �  les chiens de garde (watchdog) ;

 �  le p�riph�rique noyau _r_a_n_d_o_m ;

 �  l'interface APM (Advanced Power Management).

 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.

 99..22..  ssccssii__hhoossttaaddaapptteerr

 CChhaarrggeerr lleess ggeessttiioonnnnaaiirreess SSCCSSII :: ll''eennttrr��ee

 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 _s_r___m_o_d 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 _a_h_a_1_5_4_2_._o avant qu'il charge _s_t_._o. Ma
 machine � la maison est configur�e exactement comme au-dessus et fonc�
 tionne 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 _a_h_a_1_5_4_2_._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.

 99..33..  ppoosstt--iinnssttaallll

 QQuuaanndd cchhaarrggeerr uunn mmoodduullee nn''eesstt ppaass ssuuffffiissaanntt :: ll''eennttrr��ee

 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 [email protected] :

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

 1100..

 EEssppiioonnnneerr kkeerrnneelldd

 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




 1111..

 UUttiilliissaattiioonnss sspp��cciiaalleess ddee kkeerrnneelldd

 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 !

 1122..

 PPrroobbll��mmeess ccoouurraannttss

 1122..11..  mmoodduullee ffoorr nneett--ppff--XX'''' qquuaanndd jj''eexxcc��ccuuttee iiffccoonnffiigg  ??

 PPoouurrqquuooii eesstt--ccee qquuee jj''aaii ddeess mmeessssaaggeess ````CCaannnnoott llooccaattee

 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, _n_e_t_-_p_f_-_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 mod�
 ule, n'ajoutez pas la ligne qui retire IPX.

 1122..22..  qquuaanndd jj''aaccttiivvee mmaa ccoonnnneexxiioonn PPPPPP

 AApprr��ss vvooiirr llaanncceerr kkeerrnneelldd ,, mmoonn ssyysstt��mmee rraalleennttiitt

 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 _n_e_t_-_p_f_-_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.

 1122..33..

 kkeerrnneelldd nnee cchhaarrggee ppaass mmoonn ggeessttiioonnnnaaiirree SSCCSSII

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

 1122..44..  nn''eesstt ppaass dd��ffiinnii

 mmooddpprroobbee  ssee ppllaaiinntt qquuee ggcccc22__ccoommppiilleedd

 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.

 1122..55..

 LLee vvoolluummee ddee mmaa ccaarrttee ssoonn nn''eesstt ppaass iinniittiiaalliiss�� eettcc..

 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.

 1122..66..  ppeeuutt--iill lleess cchhaarrggeerr ??

 DDOOSSEEMMUU aa bbeessooiinn ddee mmoodduulleess,, ccoommmmeenntt kkeerrnneelldd

 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.

 1122..77..  oouutt,, mmeessssaaggee ffaaiilleedd'''' ??

 PPoouurrqquuooii aaii--jjee ddeess mmeessssaaggeess ````OOuucchh,, kkeerrnneelldd ttiimmee

 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 � [email protected] mais, ss''iill vvoouuss ppllaa��tt
 soyez s�r que votre version du noyau et de kerneld soient � jour avant
 d'envoyer un message sur ce probl�me.




 1122..88..  llee mmoodduullee dduu ssyysstt��mmee ddee ffiicchhiieerr

 mmoouunntt  nn''aatttteenndd ppaass qquuee kkeerrnneelldd  cchhaarrggee

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

 1122..99..  nnccppffss

 kkeerrnneelldd  nn''aarrrriivvee ppaass �� cchhaarrggeerr llee mmoodduullee

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

 1122..1100..  ssmmbbffss

 kkeerrnneelldd  nn''aarrrriivvee ppaass �� cchhaarrggeerr llee mmoodduullee

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

 1122..1111..  mmoonn ssyysstt��mmee nnee ppeeuutt pplluuss dd��mmaarrrreerr :: kkeerrnneelldd  nn''aarrrriivvee ppaass ��
 cchhaarrggeerr llee mmoodduullee dduu ssyysstt��mmee ddee ffiicchhiieerr rraacciinnee..

 JJ''aaii ttoouutt rreeccoommppiill�� ssoouuss ffoorrmmee ddee mmoodduulleess eett mmaaiinntteennaanntt,,

 Vous ne pouvez pas ttoouutt 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 :

 �  le gestionnaire de votre disque dur o� r�side votre syst�me de
    fichiers racine ;

 �  le gestionnaire du syst�me de fichiers racine ;

 �  le chargeur du format de binaire pour init, kerneld et d'autres
    prgrammes.

 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.

 1122..1122..  mmaacchhiinnee :: iill vveeuutt lliibbggddbbmm

 kkeerrnneelldd nnee ssee llaannccee ppaass lloorrss ddee ll''aammoorr��aaggee ddee llaa

 Les nouvelles versions de kerneld ont besoin de la librairie GNU dbm,
 _l_i_b_g_d_b_m_._s_o 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
 _g_d_b_m dans le syst�me de fichiers racine (par exemple dans /lib).

 1122..1133..  mmoonn nnooyyaauu ssaannss llaa ggeessttiioonn ddee xxxxxx !!

 JJ''aaii ````CCaannnnoott llooaadd mmoodduullee xxxxxx'''' mmaaiiss jj''aaii rreeccoonnffiigguurr��

 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.

 1122..1144..  ddeess mmeessssaaggeess ssuurr ddeess ssyymmbboolleess nnoonn rr��ssoolluuss aauu dd��mmaarrrraaggee

 JJ''aaii rreeccoommppiill�� mmoonn nnooyyaauu eett lleess mmoodduulleess eett jj''aaii ttoouujjoouurrss

 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.

 1122..1155..

 JJ''aaii iinnssttaallll�� LLiinnuuxx 22..11 eett aauuccuunn mmoodduullee nnee ssee cchhaarrggee

 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 :

 �  lire le fichier Documentation/Changes et voir quels paquetages
    doivent �tre mis � jour sur votre syst�me ;

 �  utiliser le dernier paquetage modutils, disponible sur
    ftp://ftp.redhat.com/pub/alphabits/ ou sur le site mirroir
    ftp://tsx-11.mit.edu/pub/linux/packages/alphabits/

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

 1122..1166..

 QQuuee ddiirree dd''uunn rr��sseeaauu uuttiilliissaanntt llaa lliiggnnee tt��ll��pphhoonniiqquuee ??

 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

 1133..

 CCooppyyrriigghhtt

 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 �
 [email protected]