  Kerneld mini-HOWTO
  par Henrik Storner storner@osiris.ping.dk

  Version 1.7 19 juillet 1997

  (Adaptation franaise par Alexandre Devaure adevaure@mail.dotcom.fr,
  14 janvier 1999).

  ______________________________________________________________________

  Table des matires























































  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 ncessaires ?

  6. Comment le configure-t-on ?

  7. Tester kerneld

  8. Comment

     8.1 Les priphriques bloc
     8.2 Les priphriques caractres
     8.3 Les priphriques rseau
     8.4 Les formats binaires
     8.5 Les disciplines de ligne (slip, cslip et ppp)
     8.6 Les familles de protocoles rseau (IPX, AppleTalk, AX.25)
     8.7 Les systmes de fichiers

  9. Priphriques demandant une configuration spciale

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

  10. Espionner kerneld

  11. Utilisations spciales de kerneld

  12. Problmes courants

     12.1 Pourquoi est-ce que j'ai des messages ``Cannot locate       module for net-pf-X'' quand j'exccute
     12.2 Aprs 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 systme ne peut plus dmarrer :
     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 rsolus au dmarrage
     12.15 J'ai install Linux 2.1 et aucun module ne se charge
     12.16 Que dire d'un rseau utilisant la ligne tlphonique ?

  13. Copyright



  ______________________________________________________________________

  11..

  IInnttrroodduuccttiioonn

  Ce document explique comment utiliser la fonction kerneld avec les
  noyaux Linux. Il dcrit :

    ce qu'est kerneld ;

    pourquoi l'utiliser ;

    comment avoir les outils ncessaires ;

    comment les configurer ;

    comment faire fonctionner kerneld avec des modules qu'il ne connat
     pas ;

    comment espionner kerneld (peut s'avrer trs utile lors de la mise
     au point) ;

    les utilisations spciales de kerneld ;

    les problmes courants et les dysfonctionnements.

  La dernire version de ce document peut tre trouve  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 trie des modifications 
  http://eolicom.olicom.dk/~storner/kern.html

  La dernire version franaise se trouve  l'adresse
  http://www.freenix.fr/linux/HOWTO/mini/.

  22..

  CCoonnttrriibbuutteeuurrss

  Si vous dcouvrez 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 bjorn@blox.se

    Ben Gaillart bgalliac@luc.edu

    Cedric Tefft cedric@earthling.net

    Brian Miller bmiller@netspace.net.au

    James C. Tsiao jtsiao@madoka.jpl.nasa.gov

  J'apprcierai les encouragements et les suggestions des lecteurs de ce
  mini-HOWTO.

  33..

  QQuu''eesstt--ccee qquuee kkeerrnneelldd  ??

  kerneld est li  une fonctionnalit introduite lors du dveloppement
  des noyaux de la srie 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 priphriques, de rseaux, les systmes de fichiers...)
  d'tre chargs 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 ?)
  intgrs dans le noyau standard :

    on peut configurer kerneld pour qu'il excute un programme
     utilisateur  la place de l'conomiseur d'cran, ce qui vous permet
     d'utiliser n'importe quel programme.
    dans le mme genre que l'conomiseur d'cran, vous pouvez aussi
     changer le traditionel ``beep'' en quelque chose de compltement
     diffrent...

  kerneld est compos de deux entits spares :

    gestion dans le noyau de Linux afin d'envoyer des requtes au dmon
     afin de savoir si un module doit tre utilis pour certaines tches
     ;

    un dmon au niveau utilisateur qui peut montrer quels modules
     doivent tre chargs pour accomplir la requte du noyau.

  Ces deux parties doivent fonctionner pour que  kerneld soit
  oprationnel. Le fait qu'une des deux soit initialise ne suffit pas.

  44..

  PPoouurrqquuooii eesstt--ccee qquuee jjee vveeuuxx ll''uuttiilliisseerr ??

  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 systmes qui
     diffrent peu (par exemple, une marque diffrente de carte rseau),
     alors vous pouvez construire un seul noyau et des modules,  la
     place d'avoir  construire un noyau par systme.

    Les modules sont plus faciles  tester pour les dveloppeurs : il
     ne faut pas relancer le systme pour charger et enlever le pilote.
     Ceci s'applique pour tous les modules et non juste pour ceux qui
     sont monts par kerneld.

    Il rduit l'usage de la mmoire du noyau, ce qui donne plus de
     mmoire pour les applications. La mmoire utilise par le noyau
     n'est jamais ``swappe'' sur disque, donc si vous avez 100Ko de
     pilotes non utiliss compils 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'embter avec leur chargement et leur dchargement  chaque
     fois que j'en ai besoin.

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

  Bien sr, il y a aussi des raisons pour que vous ne vouliez pas
  l'utiliser : vous prfreriez avoir juste un fichier image de votre
  noyau avec tous vos pilotes  l'intrieur. Dans ce cas, vous lisez le
  mauvais document.

  55..

  OO ppuuiiss--jjee ttrroouuvveerr lleess oouuttiillss nncceessssaaiirreess ??

  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 dernire 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 franais, il vaut mieux utiliser le miroir
  francais
  ftp://ftp.lip6.fr/pub2/linux/kernel/sources/v2.0/linux-2.0.36.tar.gz

  Le dmon 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 mme 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 franais :
  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 (dveloppement), vous devrez utiliser le dernier
  paquetage modutils- (PAS modules-).  Mais regardez plus bas au sujet
  des problmes avec les modules et les noyaux 2.1.

  66..

  CCoommmmeenntt llee ccoonnffiigguurree--tt--oonn ??

  D'abord, ayez les parties ncessaires : un noyau et les derniers
  modules-utilities. Ensuite, vous devez installer les modules-
  utilities. C'est trs simple : il faut juste dsempaqueter 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 dmarrage pour faire les initialisations ncessaires lors
  du dmarrage 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 systmes de fichiers qui ont besoins que les
        # pilotes de disque soient chargs automatiquement
        if [ -x /sbin/kerneld ]
        then
            /sbin/kerneld
        fi

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

        # Mettez  jour le fichier de dpendance des modules du noyau
        # Votre systme de fichier racine doit tre mont en
        # lecture-criture  partir de maintenant
        if [ -x /sbin/depmod ]
        then
            /sbin/depmod -a
        fi



  La premire partie lance kerneld lui-mme.

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

  NOTE : Les versions rcentes 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 spare et que vous lanciez kerneldavant que
  /usr ne soit monte. La solution recommande est de dplacer libgdm de
  /usr/lib vers /lib ou de faire un lien statique de kerneld.

  Ensuite, dfates 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 dbut :

        Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y



  Vous devez slectioner la gestion des modules chargeables, sinon, il
  n'y aura pas de modules  charger pour kerneld.  Rpondez seulement
  oui (Y).

        Kernel daemon support (CONFIG_KERNELD) [Y/n/?] Y



  Ceci est aussi ncessaire. 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 rpondre M pour Module. Gnralement, seuls les pilotes
  ncessaires lors du dmarrage de votre systme (le pilote du disque
  dur, le pilote du systme 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 cre 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
  rgulirement au comp.os.linux.answers et disponible sur le site
  sunsite.unc.edu  /pub/Linux/docs/HOWTO. La version franaise est
  disponible  www.freenix.fr/linux

  77..

  TTeesstteerr kkeerrnneelldd

  Maintenant, relancez le systme avec le nouveau noyau. Quand le
  systme est prt, vous pouvez excuter 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 intressantes de kerneld est qu'une fois le noyau et le
  dmon installs, seule une trs petite initialisation est ncessaire.
  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 chargs  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 mmoire (soit 44ko, une page faisant 4ko)
  seront donc seulement utilises quand j'accderai au lecteur de dis
  quette ; si je n'utilise pas la disquette pendant plus d'une minute,
  elles seront libres. Trs intressant si vous tes  court de
  mmoire pour vos applications !

  88..

  CCoommmmeenntt kkeerrnneelldd  ssaaiitt--iill qquueell mmoodduullee cchhaarrggeerr ??

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

  Les requtes que le dmon de kerneld reoit du noyau viennent d'un des
  lments suivants :

    un pilote de priphrique bloc ;

    un pilote de priphrique caractre ;

    un format binaire ;

    une discipline de ligne tty ;

    un systme de fichier ;

    un priphrique rseau ;

    un service rseau (par exemple rarp) ;

    un protocole rseau (par exemple IPX).

  kerneld dtermine quel module doit tre charg regardant le fichier de
  configuration /etc/conf.modules. Il y a deux types d'entre dans ce
  fichier : les chemins (o les fichiers des modules sont stocks) et
  les alias (quel module doit tre charg). Si vous n'avez pas dj ce
  fichier, vous devrez le crer en lanant /sbin/modprobe -c | grep -v
  '^path' > /etc/conf.modules

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

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

  D'un autre ct, si vous voulez juste ajouter un alias ou une
  directive d'option, vos nouvelles entres dans /etc/conf.modules
  seront ajoutes  celles que modprobe connat dj. Si vous deviez
  redfinir un alias ou une option, vos nouvelles entres dans
  /etc/conf.modules remplaceront celles dj prsentes.

  88..11..

  LLeess pprriipphhrriiqquueess bblloocc

  Si vous lancez /sbin/modprobe -c, vous aurez la liste des modules
  connus par  kerneld et  quelles requtes ils correspondent. Par
  exemple, la requte qui termine le chargement du gestionnaire de
  disquettes correspond au priphrique bloc dont le numro 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 numro 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8..22..

  LLeess pprriipphhrriiqquueess ccaarraaccttrreess

  Les priphriques de type caractre sont utiliss de la mme manire.
  Par exemple, le lecteur de bande correspond au numro majeur 27 :




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




  Toutefois, kerneld ne le connat pas par dfaut : il n'est pas list
  dans le rsultat de /sbin/modprobe -c.

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

        alias char-major-27 ftape




  88..33..

  LLeess pprriipphhrriiqquueess rrsseeaauu

  Vous pouvez aussi utiliser le nom du priphrique  la place de char-
  major-xxx ou block-major-yyy. Ceci est particulirement utilis pour
  les gestionnaires rseaux. Par exemple, un pilote pour une carte
  rseau ne2000 utilise 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 rseau 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 sr, les options disponibles sont spcifiques aux modules que
  vous chargez.

  88..44..

  LLeess ffoorrmmaattss bbiinnaaiirreess

  Les formats binaires sont grs de la mme faon. A chaque fois que
  vous essayez de lancer un programme que le noyau ne sait pas comment
  excuter, kerneld lance une requte pour binfmt-xxx, ou xxx est le
  nombre dtermin  partir des tous premiers octets de l'excutable.
  Donc la configuration de kerneld pour la gestion du chargement du
  module binfmt_aout pour les excutable 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 dcimaux ( 413 en octal correspond  267 en dcimal ). Il
  y a en ralit trois variantes des excutables a.out peu diffrentes
  (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8..55..

  LLeess ddiisscciipplliinneess ddee lliiggnnee ((sslliipp,, ccsslliipp eett pppppp))

  Les disciplines de lignes sont demandes avec _t_y_y_-_l_d_i_s_c_-_x o _x est
  gnralement 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 donnes 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8..66..

  LLeess ffaammiilllleess ddee pprroottooccoolleess rrsseeaauu ((IIPPXX,, AApppplleeTTaallkk,, AAXX..2255))

  Certains protocoles rseau peuvent tre aussi chargs sous la forme de
  modules. Le noyau demande  kerneld une famille de protocole (par
  exemple IPX) avec une requte 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 dtermins
  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 entre dans /etc/conf.modules :

        alias net-pf-4 ipx




  Consultez galement la section traitant des problmes courants pour
  viter des messages d'avertissment lors de l'amorage relatifs  des
  familles de protocoles indfinies.

  88..77..

  LLeess ssyyssttmmeess ddee ffiicchhiieerrss

  Les requtes soumises  kerneld pour les systmes de fichiers sont
  simplement constitues par le type du systme de fichiers. Un usage
  courant est de charger le module _i_s_o_f_s pour les systmes de fichiers
  des CD-ROM, c'est--dire les systmes de fichiers de type _i_s_o_9_6_6_0 :
        alias iso9660 isofs




  99..

  PPrriipphhrriiqquueess ddeemmaannddaanntt uunnee ccoonnffiigguurraattiioonn ssppcciiaallee

  Certains priphriques demandent un peu plus de configuration que le
  simple alias d'un priphrique et d'un module.

    les priphriques de type caractre de numro majeur 10 : divers
     priphriques ;

    les priphriques SCSI :

    les priphriques qui demandent une initialisation spciale.

  99..11..

  cchhaarr--mmaajjoorr--1100 :: ssoouurriiss,, wwaattcchhddooggss,, eett rraannddoomm

  Les priphriques sont habituellement identifis par leur nombre
  majeur, par exemple 27 pour ftape. Toutefois, si vous regardez les
  entres de /dev pour le nombre majeur 10, vous verrez un certain
  nombre de priphriques trs diffrents. Parmi ceux-ci :

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

    les chiens de garde (watchdog) ;

    le priphrique noyau _r_a_n_d_o_m ;

    l'interface APM (Advanced Power Management).

  De faon vidente, ces priphriques sont contrls par diffrents
  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 suprieure 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9..22..  ssccssii__hhoossttaaddaapptteerr

  CChhaarrggeerr lleess ggeessttiioonnnnaaiirreess SSCCSSII :: ll''eennttrree

  Les gestionnaires de priphriques SCSI sont constitus d'un
  adaptateur pour la carte SCSI (par exemple pour une Adaptec 1542) et
  d'un gestionnaire pour le type de priphrique SCSI que vous utilisez,
  comme un disque dur, un lecteur de CD-ROM ou un lecteur de cartouche.
  Tous peuvent tre chargs sous forme de modules. Cependant, lorsque
  vous voulez accder  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 grer le CD-ROM SCSI, mais ils ignorent  quel
  contrleur SCSI il est connect, donc quel module charger pour grer
  le contrleur SCSI.

  Pour rsoudre cela, vous pouvez ajouter une entre pour le module du
  contrleur SCSI au fichier /etc/conf.modules qui indiquera  kerneld
  quel module charger parmi toutes les possibilits :

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

  Cela marche si vous n'avez qu'une carte SCSI, sinon, c'est un peu plus
  difficile. En gnral, vous ne pouvez pas avoir kerneld qui charge le
  pilote d'une carte SCSI si le gestionnaire d'un autre contrleur est
  dj 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 ide : vous pouvez avoir kerneld qui
  charge le second controleur SCSI en mettant la dpendance dans le
  fichier modules.dep  la main. Vous avez juste besoin d'une entre
  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 configure exactement comme au-dessus et fonc
  tionne trs bien pour tous les priphrique de mon second contrleur
  SCSI, incluant lecteurs de cartouche, CD-ROM et des priphriques SCSI
  gnriques. L'inconvniant est que depmod -a ne peut pas dtecter ces
  dpendances. Donc, l'utilisateur doit les ajouter  la main et ne pas
  lancer depmod -a au dmarrage. 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 diffrents types de priphriques sur deux contrleurs. Par
  exemple les disques durs sur un contrleur et les lecteurs de CD-ROM,
  de cartouches et les priphriques gnriques sur l'autres.

  99..33..  ppoosstt--iinnssttaallll

  QQuuaanndd cchhaarrggeerr uunn mmoodduullee nn''eesstt ppaass ssuuffffiissaanntt :: ll''eennttrree

  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 rgler
  pour un certain volume sonore. Le seul problme, c'est que cette
  initialisation disparat 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 excute la commande indique par l'entre post-install
  sound aprs 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'avrer trs 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 suprieure.

  Note : une version prcdente de ce mini-HOWTO mentionne une option
  pre-remove qui peut tre utilise pour exccuter une commande juste
  avant que kerneld ne dcharge un module. Toutefois, cela n'a jamais
  march et son utilisation est dconseille. Heureusement, cette
  options disparaitra dans une future version de kerneld. L'ensemble des
  oprations d'initialisation des modules est en cours de modification
  en ce moment, et peut diffrer sur votre systme au moment o vous
  lirez ceci.

  1100..

  EEssppiioonnnneerr kkeerrnneelldd

  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 requtes que
  reoit kerneld et par consquent 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 dfaut. 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 requtes adresses  kerneld. Elles peuvent
  tre copies dans le fichier /etc/conf.modules et mises en alias du
  module demand pour raliser la tche.

  Pour arrter le debuggage, lancez :

        /sbin/kdstat nodebug




  1111..

  UUttiilliissaattiioonnss ssppcciiaalleess ddee kkeerrnneelldd

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

  Le rpertoire 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 excutera
  la commande /sbin/screenblanker (il peut s'agir d'un script shell qui
  lance votre conomiseur d'cran favorixt.

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

  1122..

  PPrroobbllmmeess ccoouurraannttss

  1122..11..  mmoodduullee ffoorr nneett--ppff--XX'''' qquuaanndd jj''eexxccccuuttee iiffccoonnffiigg  ??

  PPoouurrqquuooii eesstt--ccee qquuee jj''aaii ddeess mmeessssaaggeess ````CCaannnnoott llooccaattee

  Le code du noyau a t modifi pour permettre le chargement des
  familles de protocoles rseau (comme IPX, AX25 et AppelTalk) comme
  modules vers la version 1.3.80. Cela a eu pour effet d'ajouter une
  nouvelle requte 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 systme se lance et qu'il
  excute ifconfig pour initialiser le priphrique 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. Biensr, si vous utilisez IPX comme mod
  ule, n'ajoutez pas la ligne qui retire IPX.

  1122..22..  qquuaanndd jj''aaccttiivvee mmaa ccoonnnneexxiioonn PPPPPP

  AApprrss vvooiirr llaanncceerr kkeerrnneelldd ,, mmoonn ssyyssttmmee rraalleennttiitt

  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 systmes pour configurer et surveiller la
  connexion PPP. Le script excute apparemment des boucles quand il
  lance ifconfig.  Celui-ci dclenche kerneld pour rechercher les
  modules _n_e_t_-_p_f_-_X (voir ci-dessous), ce qui provoque une surcharge du
  systme 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 faon de surveiller la connexion.

  1122..33..

  kkeerrnneelldd nnee cchhaarrggee ppaass mmoonn ggeessttiioonnnnaaiirree SSCCSSII

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

  1122..44..  nn''eesstt ppaass ddffiinnii

  mmooddpprroobbee  ssee ppllaaiinntt qquuee ggcccc22__ccoommppiilleedd

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

  1122..55..

  LLee vvoolluummee ddee mmaa ccaarrttee ssoonn nn''eesstt ppaass iinniittiiaalliiss eettcc..

  Les options de configuration d'un modules sont stockes dans le module
  lui-mme quand il est charg. Donc, quand kerneld dcharge un module,
  la configuration que vous aviez faite est perdue et la prochaine fois
  que le module sera charg, il hritera de la configuration par dfaut.

  Vous pouvez indiquer  kerneld de configurer un module en excutant un
  programme aprs son chargement automatique. Voir la section sur
  l'entre post-install.

  1122..66..  ppeeuutt--iill lleess cchhaarrggeerr ??

  DDOOSSEEMMUU aa bbeessooiinn ddee mmoodduulleess,, ccoommmmeenntt kkeerrnneelldd

  Vous ne pouvez pas. Aucune des versions de dosemu (officielles ou de
  dveloppement) ne grent le chargement des modules  travers kerneld.
  Cependant, if vous avez un noyau 2.0.26 ou suprieur, vous n'avez pas
  besoin de modules dosemu particuliers. Installez juste dosemu 0.66.1.

  1122..77..  oouutt,, mmeessssaaggee ffaaiilleedd'''' ??

  PPoouurrqquuooii aaii--jjee ddeess mmeessssaaggeess ````OOuucchh,, kkeerrnneelldd ttiimmee

  Quand le noyau envoit une requte  kerneld, il s'attend  recevoir un
  acquittement dans un dlai d'une seconde. Si kerneld n'envoie pas cet
  acquittement, ce message est diffus. La requte est retransmise et
  peut ventuellement russir

  Cela arrive couramment sur des systmes lourdement chargs.  kerneld
  tant un processus en mode utilisateur, il est ordonnanc comme tout
  processus du systme. Sous de fortes charges, il peut ne pas
  s'excuter pour envoyer l'acquittement avant l'expiration du dlai.

  Si cela se produit quand la charge est faible, essayez de redmarrer
  kerneld. Tuez le processus kerneld et redmarrez-le avec la commande
  /usr/sbin/kerneld. Si le problme persiste, vous devrez envoyer un
  message d'erreur  linux-kernel@vger.rutgers.edu mais, ss''iill vvoouuss ppllaatt
  soyez sr que votre version du noyau et de kerneld soient  jour avant
  d'envoyer un message sur ce problme.




  1122..88..  llee mmoodduullee dduu ssyyssttmmee ddee ffiicchhiieerr

  mmoouunntt  nn''aatttteenndd ppaass qquuee kkeerrnneelldd  cchhaarrggee

  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 systme de
  fichiers. lsmod montre que kerneld a charg le module et si vous
  rptez la commande mount immdiatement, le montage sera russi. Cela
  semble tre une erreur dans le paquetage modules version 1.3.69f qui
  affecte des utilisateurs de Debian (elle peut tre corrige en
  installant la dernire version de ce paquetage).

  1122..99..  nnccppffss

  kkeerrnneelldd  nn''aarrrriivvee ppaass  cchhaarrggeerr llee mmoodduullee

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

  1122..1100..  ssmmbbffss

  kkeerrnneelldd  nn''aarrrriivvee ppaass  cchhaarrggeerr llee mmoodduullee

  Vous utilisez une vieille version des utilitaires smbmount. Prenez la
  dernire version (0.10 ou suprieure) 
  ftp://tsx-11.mit.edu/pub/linux/filesystems/smbfs/.

  1122..1111..  mmoonn ssyyssttmmee nnee ppeeuutt pplluuss ddmmaarrrreerr :: kkeerrnneelldd  nn''aarrrriivvee ppaass 
  cchhaarrggeerr llee mmoodduullee dduu ssyyssttmmee ddee ffiicchhiieerr rraacciinnee..

  JJ''aaii ttoouutt rreeccoommppiill ssoouuss ffoorrmmee ddee mmoodduulleess eett mmaaiinntteennaanntt,,

  Vous ne pouvez pas ttoouutt mettre sous forme de modules : le noyau doit
  avoir assez de gestionnaires pour monter votre systme de fichiers
  racine et excuter les programmes ncessaires au dmarrage de kerneld.
  Donc vous ne pouvez pas mettre sous forme de modules :

    le gestionnaire de votre disque dur o rside votre systme de
     fichiers racine ;

    le gestionnaire du systme de fichiers racine ;

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

  En fait ce n'est pas vrai. Les dernires 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'' trs tt dans le processus de dmarrage. La marche  suivre
  est dcrite dans le fichier Documentation/initrd.txt dans
  l'arborescence des sources du noyau.

  1122..1122..  mmaacchhiinnee :: iill vveeuutt lliibbggddbbmm

  kkeerrnneelldd nnee ssee llaannccee ppaass lloorrss ddee ll''aammoorraaggee ddee llaa

  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 systme de fichiers de /usr ne soit mont. Un des symptomes de
  ceci est que kerneld ne marche pas lors du dmarrage du systme et de
  l'excution des script rc, mais fonctionne parfaitement si vous le
  lancez  la main aprs. La solution est soit de dplacer le lancement
  de kerneld aprs que /usr ne soit mont, soit de mettre la librairie
  _g_d_b_m dans le systme de fichiers racine (par exemple dans /lib).

  1122..1133..  mmoonn nnooyyaauu ssaannss llaa ggeessttiioonn ddee xxxxxx !!

  JJ''aaii ````CCaannnnoott llooaadd mmoodduullee xxxxxx'''' mmaaiiss jj''aaii rreeccoonnffiigguurr

  L'installation de la Slackware (et peut-tre d'autres) cre un fichier
  /etc/rc.d/rc.modules par dfaut qui fait un modprobe explicite sur une
  grande varit de modules.  Quels modules exactement sont
  ``modprobs'' ?, cela dpend 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 entirement ce fichier et
  laissez kerneld charger les modules quand on en a besoin.

  1122..1144..  ddeess mmeessssaaggeess ssuurr ddeess ssyymmbboolleess nnoonn rrssoolluuss aauu ddmmaarrrraaggee

  JJ''aaii rreeccoommppiill mmoonn nnooyyaauu eett lleess mmoodduulleess eett jj''aaii ttoouujjoouurrss

  Vous avez probablement reconfigur et recompil votre noyau et exclu
  des modules. Vous avez d'anciens modules que vous n'utilisez pas dans
  le rpertoire /lib/modules.  La solution la plus simple est d'effacer
  le rpertoire /lib/modules/x.y.z et de retaper make modules_install
  depuis le rpertoire des sources du noyau.  Notez que ce problme
  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 problme.

  1122..1155..

  JJ''aaii iinnssttaallll LLiinnuuxx 22..11 eett aauuccuunn mmoodduullee nnee ssee cchhaarrggee

  Linux 2.1 est un noyau de dveloppement. Pour cette raison, il se peut
  que certaines choses ne fonctionnent pas de temps en temps.  La faon
  dont les modules sont manipuls a chang de faon significative.
  Richard Henderson a la charge du dveloppement 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 systme ;

    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.

  1122..1166..

  QQuuee ddiirree dd''uunn rrsseeaauu uuttiilliissaanntt llaa lliiggnnee ttllpphhoonniiqquuee ??

  kerneld peut  l'origine grer l'tablissement de connexions rseau 
  travers le rseau tlphonique  la demande : essayer d'envoyer des
  paquets  un rseau sans tre connect, peut entraner kerneld 
  lancer le script /sbin/request_route pour initialiser une connexion
  PPP ou SLIP.

  Il s'est avr que c'tait une mauvaise ide. Alan Cox, bien connu
  pour ses travaux sur le rseau dans Linux a crit sur la liste de
  diffusion linux-kernel que :

  ``Le truc request-route est obsolte, 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

  1133..

  CCooppyyrriigghhtt

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

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

  Toute traduction, travail driv ou complmentaire incluant tout ou
  partie de document HowTo Linux doit tre couvert par ce copyriht. De
  cette manire, vous ne pouvez crer un document qui s'inspire de ce
  document et imposer des restrictions supplmentaires  sa diffusion.
  Des exceptions  ces conditions peuvent tre donnes sous certaines
  conditions. Contactez le coordonnateur des HowTo Linux  l'adresse
  donne un peu plus bas.

  En rsum, 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
































