This file is indexed.

/usr/share/doc/HOWTO/fr-html/Kerneld.html is in doc-linux-fr-html 2013.01-3ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.72">
<title>Kerneld mini-HOWTO</title>
</head>
<body>
<h1>Kerneld mini-HOWTO</h1>
<h2>par Henrik Storner <a href=
"mailto:storner@osiris.ping.dk">storner@osiris.ping.dk</a></h2>
Version 1.7 19 juillet 1997
<hr>
<em>(Adaptation française par Alexandre Devaure <a href=
"mailto:adevaure@mail.dotcom.fr">adevaure@mail.dotcom.fr</a>, 14
janvier 1999).</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<p>Ce document explique comment utiliser la fonction
<code>kerneld</code> avec les noyaux Linux. Il décrit :</p>
<ul>
<li>ce qu'est <code>kerneld</code> ;</li>
<li>pourquoi l'utiliser ;</li>
<li>comment avoir les outils nécessaires ;</li>
<li>comment les configurer ;</li>
<li>comment faire fonctionner <code>kerneld</code> avec des modules
qu'il ne connaît pas ;</li>
<li>comment espionner <code>kerneld</code> (peut s'avérer très
utile lors de la mise au point) ;</li>
<li>les utilisations spéciales de <code>kerneld</code> ;</li>
<li>les problèmes courants et les dysfonctionnements.</li>
</ul>
<p>La dernière version de ce document peut être trouvée à l'adresse
<a href=
"http://eolicom.olicom.dk/~storner/kerneld-mini-HOWTO.html">http://eolicom.olicom.dk/~storner/kerneld-mini-HOWTO.html</a>.
Entre les versions du mini-HOWTO, vous pouvez trouver des mises à
jour sur ma liste non triée des modifications à <a href=
"http://eolicom.olicom.dk/~storner/kern.html">http://eolicom.olicom.dk/~storner/kern.html</a></p>
<p>La dernière version française se trouve à l'adresse <a href=
"http://www.freenix.fr/linux/HOWTO/mini/">http://www.freenix.fr/linux/HOWTO/mini/</a>.</p>
<h2><a name="s2">2. Contributeurs</a></h2>
<p>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 :</p>
<ul>
<li>Bjorn Ekwall <a href=
"mailto:bjorn@blox.se">bjorn@blox.se</a></li>
<li>Ben Gaillart <a href=
"mailto:bgallia@luc.edu">bgalliac@luc.edu</a></li>
<li>Cedric Tefft <a href=
"mailto:cedric@earthling.net">cedric@earthling.net</a></li>
<li>Brian Miller <a href=
"mailto:bmiller@netspace.net.au">bmiller@netspace.net.au</a></li>
<li>James C. Tsiao <a href=
"mailto:jtsiao@madoka.jpl.nasa.gov">jtsiao@madoka.jpl.nasa.gov</a></li>
</ul>
<p>J'apprécierai les encouragements et les suggestions des lecteurs
de ce mini-HOWTO.</p>
<h2><a name="s3">3. Qu'est-ce que <code>kerneld</code> ?</a></h2>
<p><code>kerneld</code> 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
<code>modprobe</code> ou <code>insmod</code>.</p>
<p>Des aspects plus amusants, bien que ceux-ci ne soient pas
(encore ?) intégrés dans le noyau standard :</p>
<ul>
<li>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.</li>
<li>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...</li>
</ul>
<p><code>kerneld</code> est composé de deux entités séparées :</p>
<ul>
<li>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 ;</li>
<li>un démon au niveau utilisateur qui peut montrer quels modules
doivent être chargés pour accomplir la requète du noyau.</li>
</ul>
<p>Ces deux parties doivent fonctionner pour que
<code>kerneld</code> soit opérationnel. Le fait qu'une des deux
soit initialisée ne suffit pas.</p>
<h2><a name="s4">4. Pourquoi est-ce que je veux l'utiliser
?</a></h2>
<p>Il y a de bonnes raisons pour utiliser <code>kerneld</code>.
Voici les miennes. D'autres peuvent l'utiliser pour d'autres
raisons.</p>
<ul>
<li>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.</li>
<li>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 <code>kerneld</code>.</li>
<li>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.</li>
<li>Certaines choses que j'utilise, le pilote <code>ftape</code>,
par exemple ou <code>iBCS</code>, 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.</li>
<li>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.</li>
</ul>
<p>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.</p>
<h2><a name="s5">5. Où puis-je trouver les outils nécessaires
?</a></h2>
<p>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 <code>kerneld</code>.
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) :</p>
<ul>
<li><a href=
"ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/linux-2.0.36.tar.gz">ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/linux-2.0.36.tar.gz</a></li>
<li><a href=
"ftp://tsx-11.mit.edu/pub/linux/sources/system/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</a></li>
<li><a href=
"ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/v2.0/linux-2.0.36.tar.gz">
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/v2.0/linux-2.0.36.tar.gz</a></li>
</ul>
<p>Pour les utilisateurs français, il vaut mieux utiliser le miroir
francais <a href=
"ftp://ftp.lip6.fr/pub2/linux/kernel/sources/v2.0/linux-2.0.36.tar.gz">
ftp://ftp.lip6.fr/pub2/linux/kernel/sources/v2.0/linux-2.0.36.tar.gz</a></p>
<p>Le démon en mode utilisateur a été introduit avec le paquetage
<code>modules-1.2.8</code> et avec le nouveau paquetage
<code>modules-2.0</code>. Ils sont normalement trouvables à la même
place que les sources des noyaux mais les sites officiels sont
:</p>
<ul>
<li><a href=
"ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/modules-2.0.0.tar.gz">ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/modules-2.0.0.tar.gz</a></li>
<li><a href=
"ftp://tsx-11.mit.edu/pub/linux/sources/sbin/modules-2.0.0.tar.gz">ftp://tsx-11.mit.edu/pub/linux/sources/sbin/modules-2.0.0.tar.gz</a></li>
<li><a href=
"ftp://ftp.funet.fi/pub/Linux/tools/modules-2.0.0.tar.gz">ftp://ftp.funet.fi/pub/Linux/tools/modules-2.0.0.tar.gz</a></li>
</ul>
<p>Pour les utilisateurs français : <a href=
"ftp://ftp.lip6.fr/pub2/linux/kernel/sources/v2.0/modules-2.0.0.tar.gz">
ftp://ftp.lip6.fr/pub2/linux/kernel/sources/v2.0/modules-2.0.0.tar.gz</a></p>
<p>AVERTISSEMENT : si vous voulez essayer de charger des modules
avec les derniers noyaux 2.1 (développement), vous devrez utiliser
le dernier paquetage <code>modutils-</code> (PAS
<code>modules-</code>). Mais regardez plus bas au sujet des
problèmes avec les modules et les noyaux 2.1.</p>
<h2><a name="s6">6. Comment le configure-t-on ?</a></h2>
<p>D'abord, ayez les parties nécessaires : un noyau et les derniers
<code>modules-utilities</code>. Ensuite, vous devez installer les
<code>modules-utilities</code>. C'est très simple : il faut juste
désempaqueter les sources et lancer <code>make install</code>. Ceci
compile et installe les programmes suivants dans <code>/sbin</code>
: <code>genkym</code>, <code>insmod</code>, <code>lsmod</code>,
<code>modprobe</code>, <code>depmod</code>, <code>kerneld</code>.
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
<code>/etc/rc/rc.d/rc.sysinit</code> (si vous utilisez la
Slackware) ou à <code>/etc/rc.d/rc.sysinit</code> (si vous utilisez
SysVinit, c'est-à-dire les distributions Debian, RedHat, Caldera)
:</p>
<pre>
      # 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
      
</pre>
La première partie lance <code>kerneld</code> lui-même.
<p>La second appelle <code>depmod -a</code> au démarrage. Le
programme <code>depmod</code> 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.</p>
<p>NOTE : Les versions récentes de <code>kerneld</code> ont une
option pour utiliser la librairie GNU dbm : <code>libgdbm</code>.
Si vous l'activez quand vous construisez les
<code>modules-utilities</code>, <code>kerneld</code> ne se lancera
pas si <code>lidgdbm</code> n'est pas disponible, ce qui pourrait
être le cas si vous avez <code>/usr</code> sur une partition
séparée et que vous lanciez <code>kerneld</code>avant que
<code>/usr</code> ne soit montée. La solution recommandée est de
déplacer <code>libgdm</code> de <code>/usr/lib</code> vers
<code>/lib</code> ou de faire un lien statique de
<code>kerneld</code>.</p>
<p>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 <code>make config</code> pour
configurer le noyau, vous devrez faire attention à des questions
qui apparaissent au début :</p>
<pre>
      Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y
      
</pre>
Vous devez sélectioner la gestion des modules chargeables, sinon,
il n'y aura pas de modules à charger pour <code>kerneld</code>.
Répondez seulement oui (Y).
<pre>
      Kernel daemon support (CONFIG_KERNELD) [Y/n/?] Y
      
</pre>
Ceci est aussi nécessaire. Ensuite, de nombreuses choses peuvent
être mises sous forme de modules. Vous verrez des questions du
genre :
<pre>
      Normal floppy disk support (CONFIG_BLK_DEV_FD) [M/n/y/?]
      
</pre>
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.
<p>Quand vous avez fini avec <code>make config</code>, lancez
<code>make dep</code>, <code>make clean</code>, <code>make
zImage</code> ou <code>make modules</code>, <code>make
modules</code> et <code>make modules_install</code>.</p>
<p>Ouf !</p>
<p>La commande <code>make zImage</code> crée la nouvelle image du
noyau dans le fichier <code>arch/i386/boot/zImage</code>. Vous
devrez le copier où vous mettez votre image de boot. N'oubliez pas
de relancer LILO.</p>
<p>Pour plus d'informations sur la configuration, la construction
et l'installation de votre propre noyau, regardez le
<code>Kerneld-HOWTO</code> posté régulièrement au
<code>comp.os.linux.answers</code> et disponible sur le site
<code>sunsite.unc.edu</code> à <code>/pub/Linux/docs/HOWTO</code>.
La version française est disponible à <a href=
"http://www.freenix.fr/linux">www.freenix.fr/linux</a></p>
<h2><a name="s7">7. Tester kerneld</a></h2>
<p>Maintenant, relancez le système avec le nouveau noyau. Quand le
système est prêt, vous pouvez exécuter un <code>ps ax</code> et
vous devriez voir une ligne pour <code>kerneld</code> :</p>
<pre>
      PID TTY STAT  TIME COMMAND
      59  ?  S     0:01 /sbin/kerneld
      
</pre>
<p>Une des choses intéressantes de <code>kerneld</code> 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 :</p>
<pre>
      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
      
</pre>
le pilote de disquette fonctionne : il a été chargé automatiquement
par <code>kerneld</code> quand j'ai voulu utiliser la disquette.
<p>Pour voir que le module <code>floppy</code> est en effet chargé,
vous pouvez lancer <code>/sbin/lsmod</code> qui listera tous les
modules chargés à l'instant :</p>
<pre>
      osiris:~ $ /sbin/lsmod
      Module:        #pages:  Used by:
      floppy            11    0 (autoclean)
      
</pre>
Le mot ``autoclean'' signifie que le module sera automatiquement
enlevé par <code>kerneld</code> 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 !
<h2><a name="s8">8. Comment <code>kerneld</code> sait-il quel
module charger ?</a></h2>
<p>Bien que <code>kerneld</code> connaisse déjà les types les plus
communs de modules, il y a des situations dans lesquelles
<code>kerneld</code> 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é.</p>
<p>Les requêtes que le démon de <code>kerneld</code> reçoit du
noyau viennent d'un des éléments suivants :</p>
<ul>
<li>un pilote de périphérique bloc ;</li>
<li>un pilote de périphérique caractère ;</li>
<li>un format binaire ;</li>
<li>une discipline de ligne tty ;</li>
<li>un système de fichier ;</li>
<li>un périphérique réseau ;</li>
<li>un service réseau (par exemple rarp) ;</li>
<li>un protocole réseau (par exemple IPX).</li>
</ul>
<p><code>kerneld</code> détermine quel module doit être chargé
regardant le fichier de configuration
<code>/etc/conf.modules</code>. 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 <code>/sbin/modprobe -c
| grep -v '^path' &gt; /etc/conf.modules</code></p>
<p>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 <code>path</code> dans
<code>/etc/conf.modules</code> remplacera toutes celles que
<code>modprobe</code> connaît par défaut.</p>
<p>Normalement, vous ne voudrez pas ajouter de <code>path</code>
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 !</p>
<p>D'un autre côté, si vous voulez juste ajouter un alias ou une
directive d'option, vos nouvelles entrées dans
<code>/etc/conf.modules</code> seront ajoutées à celles que
<code>modprobe</code> connaît déjà. Si vous deviez redéfinir un
alias ou une option, vos nouvelles entrées dans
<code>/etc/conf.modules</code> remplaceront celles déjà
présentes.</p>
<h2><a name="ss8.1">8.1 Les périphériques bloc</a></h2>
<p>Si vous lancez <code>/sbin/modprobe -c</code>, vous aurez la
liste des modules connus par <code>kerneld</code> 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 :</p>
<pre>
      osiris:~ $ /sbin/modprobe -c | grep floppy
      alias block-major-2 floppy
      
</pre>
<p>Pourquoi <code>block-major-2</code> ? Parce que les lecteurs de
disquettes <code>/dev/fd*</code> utilisent un numéro majeur égal à
2 et sont de type bloc :</p>
<pre>
      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
      
</pre>
<h2><a name="ss8.2">8.2 Les périphériques caractères</a></h2>
<p>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 :</p>
<pre>
      osiris:~ $ ls -lL /dev/ftape
      crw-rw----   1 root     disk      27,   0 Jul 18  1994 /dev/ftape
      
</pre>
<p>Toutefois, <code>kerneld</code> ne le connaît pas par défaut :
il n'est pas listé dans le résultat de <code>/sbin/modprobe
-c</code>.</p>
<p>Donc, pour configurer <code>kerneld</code> de manière à charger
le gestionnaire <code>ftape</code>, je dois ajouter une ligne au
fichier de configuration <code>/etc/conf.modules</code> :</p>
<pre>
      alias char-major-27 ftape
      
</pre>
<h2><a name="ss8.3">8.3 Les périphériques réseau</a></h2>
<p>Vous pouvez aussi utiliser le nom du périphérique à la place de
<code>char-major-xxx</code> ou <code>block-major-yyy</code>. Ceci
est particulièrement utilisé pour les gestionnaires réseaux. Par
exemple, un pilote pour une carte réseau ne2000 utilisée comme
<code>eth0</code> pourrait être chargé avec :</p>
<pre>
      alias eth0 ne
      
</pre>
<p>Si vous devez passer des options au gestionnaire (comme de dire
au module quelle IRQ la carte réseau utilise), vous ajoutez une
ligne <code>options</code> :</p>
<pre>
      options ne irq=5
      
</pre>
<p>Ainsi <code>kerneld</code> lancera le gestionnaire NE2000 avec
la commande :</p>
<pre>
      /sbin/modprobe ne irq=5
      
</pre>
<p>Bien sûr, les options disponibles sont spécifiques aux modules
que vous chargez.</p>
<h2><a name="ss8.4">8.4 Les formats binaires</a></h2>
<p>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, <code>kerneld</code> lance une requête pour
<code>binfmt-xxx</code>, ou <code>xxx</code> est le nombre
déterminé à partir des tous premiers octets de l'exécutable. Donc
la configuration de <code>kerneld</code> pour la gestion du
chargement du module binfmt_aout pour les exécutable ZMAGIC (a.out)
est :</p>
<pre>
      alias binfmt-267 binfmt_aout
      
</pre>
vu que le nombre magique pour les fichiers ZMAGIC est 267 (voir
<code>/etc/magic</code>). Si vous regardez <code>/etc/magic</code>,
vous verrez le nombre 0413, ceci parce que ce fichier utilise des
nombres octaux alors que <code>kerneld</code> 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 :
<pre>
      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)
      
</pre>
<p>Les formats binaires a.out, Jave et iBCS sont reconnus
automatiquement par <code>kerneld</code> sans la moindre
configuration.</p>
<h2><a name="ss8.5">8.5 Les disciplines de ligne (slip, cslip et
ppp)</a></h2>
<p>Les disciplines de lignes sont demandées avec <i>tyy-ldisc-x</i><i>x</i> est généralement 1 (pour SLIP) ou 3 (pour PPP). Ces
deux sont reconnus automatiquement par <code>kerneld</code>.</p>
<p>Concernant PPP, si vous voulez que <code>kerneld</code> charge
le module de compression de données pour PPP <code>bsd_comp</code>,
vous devez ajouter les deux lignes suivantes au fichier
<code>/etc/conf.modules</code> :</p>
<pre>
      alias tty-ldisc-3 bsd_comp
      alias ppp0 bsd_comp
      
</pre>
<h2><a name="ss8.6">8.6 Les familles de protocoles réseau (IPX,
AppleTalk, AX.25)</a></h2>
<p>Certains protocoles réseau peuvent être aussi chargés sous la
forme de modules. Le noyau demande à <code>kerneld</code> une
famille de protocole (par exemple IPX) avec une requête pour
<i>net-pf-X</i><i>X</i> est un nombre indiquant la famille
voulue. Par exemple, <i>netpf-3</i> correspond à AX.25,
<i>net-pf-4</i> à IPX et <i>net-pf-5</i> à AppleTalk. (Ces nombres
sont déterminés par les macros <code>AF_AX25</code>,
<code>AF_IPX</code> etc., que l'on trouve dans le fichier source
<code>include/linux/socket.h</code>. Donc, pour charger
automatiquement le module IPX, vous devrez ajouter une entrée dans
<code>/etc/conf.modules</code> :</p>
<pre>
      alias net-pf-4 ipx
      
</pre>
<p>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.</p>
<h2><a name="ss8.7">8.7 Les systèmes de fichiers</a></h2>
<p>Les requêtes soumises à <code>kerneld</code> 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>isofs</i>
pour les systèmes de fichiers des CD-ROM, c'est-à-dire les systèmes
de fichiers de type <i>iso9660</i> :</p>
<pre>
      alias iso9660 isofs
      
</pre>
<h2><a name="s9">9. Périphériques demandant une configuration
spéciale</a></h2>
<p>Certains périphériques demandent un peu plus de configuration
que le simple alias d'un périphérique et d'un module.</p>
<ul>
<li>les périphériques de type caractère de numéro majeur 10 :
divers périphériques ;</li>
<li>les périphériques SCSI :</li>
<li>les périphériques qui demandent une initialisation
spéciale.</li>
</ul>
<h2><a name="ss9.1">9.1 char-major-10 : souris, watchdogs, et
random</a></h2>
<p>Les périphériques sont habituellement identifiés par leur nombre
majeur, par exemple 27 pour <code>ftape</code>. Toutefois, si vous
regardez les entrées de <code>/dev</code> pour le nombre majeur 10,
vous verrez un certain nombre de périphériques très différents.
Parmi ceux-ci :</p>
<ul>
<li>des souris de toutes sortes (souris bus, PS/2,...) ;</li>
<li>les chiens de garde (watchdog) ;</li>
<li>le périphérique noyau <i>random</i> ;</li>
<li>l'interface APM (Advanced Power Management).</li>
</ul>
<p>De façon évidente, ces périphériques sont contrôlés par
différents modules et non un seul. Pour cela, <code>kerneld</code>
utilise le nombre majeur et le nombre mineur :</p>
<pre>
      alias char-major-10-1 psaux     # For PS/2 mouse
      alias char-major-10-130 wdt     # For WDT watchdog
      
</pre>
<p>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 à <code>kerneld</code>, ce qui ne permettait pas à
<code>kerneld</code> de savoir quel module il fallait charger.</p>
<h2><a name="ss9.2">9.2 Charger les gestionnaires SCSI : l'entrée
<i>scsi_hostadapter</i></a></h2>
<p>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 <code>kerneld</code>
savent seulement qu'il faut charger le module <i>sr_mod</i> 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.</p>
<p>Pour résoudre cela, vous pouvez ajouter une entrée pour le
module du contrôleur SCSI au fichier <code>/etc/conf.modules</code>
qui indiquera à <code>kerneld</code> quel module charger parmi
toutes les possibilités :</p>
<pre>
      alias scd0 sr_mod               # sr_mod pour SCSI CD-ROM's ...
      alias scsi_hostadapter aha1542  # ... doit utiliser le pilote
                                      # Adaptec 1542
      
</pre>
<p>Cela ne fonctionne que pour un noyau de version 1.3.82 ou
supérieure.</p>
<p>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
<code>kerneld</code> 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.</p>
<p>Il y a une possibilité pour que <code>kerneld</code>charge
plusieurs gestionnaires SCSI. James Tsiao a eu cette idée : vous
pouvez avoir <code>kerneld</code> qui charge le second controleur
SCSI en mettant la dépendance dans le fichier
<code>modules.dep</code> à la main. Vous avez juste besoin d'une
entrée comme :</p>
<pre>
      /lib/modules/2.0.30/scsi/st.o: /lib/modules/2.0.30/scsi/aha1542.o
      
</pre>
Pour que <code>kerneld</code>charge le module <i>aha1542.o</i>
avant qu'il charge <i>st.o</i>. 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 <code>depmod -a</code> ne peut pas détecter
ces dépendances. Donc, l'utilisateur doit les ajouter à la main et
ne pas lancer <code>depmod -a</code> au démarrage. Une fois
configuré, <code>kerneld</code> chargera automatiquement
<i>aha1542.o</i> comme il faut.
<p>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.</p>
<h2><a name="ss9.3">9.3 Quand charger un module n'est pas suffisant
: l'entrée <code>post-install</code></a></h2>
<p>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
<a href="malto:bgallia@luc.edu">bgailla@luc.edu</a> :</p>
<p>Il faut installer le paquetage <code>setmix-0.1</code> (
<a href="ftp://sunsite.unc.edu/pub/Linux/apps/sound/mixers/setmix-0.1.tar.gz">
ftp://sunsite.unc.edu/pub/Linux/apps/sound/mixers/setmix-0.1.tar.gz</a>)</p>
<p>et ensuite ajouter les lignes suivantes au fichier
<code>/etc/conf.modules</code> :</p>
<pre>
      post-install sound /usr/local/bin/setmix -f /etc/volume.conf
      
</pre>
Ainsi <code>kerneld</code> exécute la commande indiquée par
l'entrée <code>post-install sound</code> après que le module son
ait été chargé. Donc, le module son est configuré par la commande
<code>/usr/local/bin/setmix -f /etc/volume.conf</code>.
<p>Cela peut s'avérer très utile pour d'autres modules, par exemple
le module <i>lp</i> peut être configuré par le programme
<code>tunelp</code> en ajoutant :</p>
<pre>
      post-install lp tunelp &lt;options&gt;
      
</pre>
Pour que <code>kerneld</code>reconnaisse ces options, vous devez
avoir une version 1.3.69 de <code>kerneld</code> ou supérieure.
<p>Note : une version précédente de ce mini-HOWTO mentionne une
option <code>pre-remove</code> qui peut être utilisée pour
excécuter une commande juste avant que <code>kerneld</code> 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 <code>kerneld</code>.
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.</p>
<h2><a name="s10">10. Espionner kerneld</a></h2>
<p>Si vous avez tout essayé et que vous ne comprenez pas ce que le
noyau demande à <code>kerneld</code>, il y a une solution pour voir
les requêtes que reçoit <code>kerneld</code> et par conséquent
comprendre ce qu'il faut mettre dans
<code>/etc/conf.modules</code>. Pour cela, il faut utiliser
l'utilitaire <code>kdstat</code>.</p>
<p>Ce petit programme est livré avec le paquetage
<code>modules</code>, mais il n'est ni compilé, ni installé par
défaut. Pour le compiler :</p>
<pre>
      cd /usr/src/modules-2.0.0/kerneld
      make kdstat
      
</pre>
<p>Ensuite, pour que <code>kerneld</code> affiche les informations
sur ce qu'il est en train de faire, il faut lancer :</p>
<pre>
      kdstat debug
      
</pre>
et <code>kerneld</code> 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 à
<code>kerneld</code>. Elles peuvent être copiées dans le fichier
<code>/etc/conf.modules</code> et mises en alias du module demandé
pour réaliser la tâche.
<p>Pour arrêter le debuggage, lancez :</p>
<pre>
      /sbin/kdstat nodebug
      
</pre>
<h2><a name="s11">11. Utilisations spéciales de kerneld</a></h2>
<p>Je savais bien que vous me demanderiez comment configurer le
module d'économiseur d'écran...</p>
<p>Le répertoire <code>kerneld/GOODIES</code> dans le paquetage
<code>modules</code> a un certain nombre de patches noyau pour la
gestion de l'économiseur d'écran ainsi que le beep de la console
par <code>kerneld</code>. Ils ne font pas partie du noyau officiel.
Vous devrez donc installer les patches noyau et le recompiler.</p>
<p>Pour installer un patch, utilisez la commande ``patch'' :</p>
<pre>
      cd /usr/src/linux
      patch -s -p1 &lt;/usr/src/modules-2.0.0/kerneld/GOODIES/blanker_patch
      
</pre>
Ensuite recompilez et installez le nouveau noyau.
<p>Quand il sera temps de lancer l'économiseur d'écran,
<code>kerneld</code> exécutera la commande
<code>/sbin/screenblanker</code> (il peut s'agir d'un script shell
qui lance votre économiseur d'écran favorixt.</p>
<p>Quand le noyau veut l'arrêter, il envoie un signal
<code>SIGQUIT</code> au processus exécutant
<code>/sbin/screenblanker</code>. Votre script shell ou économiseur
d'écran doit le capter et se terminer. Pensez à restaurer l'écran
dans le mode texte initial !</p>
<h2><a name="s12">12. Problèmes courants</a></h2>
<h2><a name="ss12.1">12.1 Pourquoi est-ce que j'ai des messages
``Cannot locate module for net-pf-X'' quand j'excécute
<code>ifconfig</code> ?</a></h2>
<p>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 <code>kerneld</code>, <i>net-pf-X</i>, où
<i>X</i> est un nombre identifiant le protocole (voir le fichier
<code>/usr/src/linux/include/linux/socket.h</code> pour la
signification de ces nombres).</p>
<p>Malheureusement, <code>ifconfig</code> envoie ces messages, donc
un bon nombre de personnes recoivent ces messages lors le système
se lance et qu'il exécute <code>ifconfig</code> pour initialiser le
périphérique <code>loopback</code>. Ces messages sont sans danger
et vous pouvez les retirer en ajoutant les lignes suivantes :</p>
<pre>
      alias net-pf-3 off  # oubliez AX.25
      alias net-pf-4 off  # oubliez IPX
      aliad net-pf-5 off  # oubliez AppleTalk
      
</pre>
au fichier <code>/etc/conf.modules</code>. Biensûr, si vous
utilisez IPX comme module, n'ajoutez pas la ligne qui retire IPX.
<h2><a name="ss12.2">12.2 Après voir lancer <code>kerneld</code>,
mon système ralentit quand j'active ma connexion PPP</a></h2>
<p>Il y a bon nombre de messages à ce sujet. Il semble qu'il y ait
une malheureuse interaction entre <code>kerneld</code> et le script
<code>tkPPP</code> qui est utilisé sur certains systèmes pour
configurer et surveiller la connexion PPP. Le script exécute
apparemment des boucles quand il lance <code>ifconfig</code>.
Celui-ci déclenche <code>kerneld</code> pour rechercher les modules
<i>net-pf-X</i> (voir ci-dessous), ce qui provoque une surcharge du
système et l'envoi possible de messages <code>``Cannot locate
module for net-pf-X''</code>. Il n'y a pas d'autres solutions que
de ne pas utiliser <code>tkPPP</code> ou de changer sa façon de
surveiller la connexion.</p>
<h2><a name="ss12.3">12.3 <code>kerneld</code>ne charge pas mon
gestionnaire SCSI</a></h2>
<p>Ajoutez une entrée pour la carte SCSI au fichier
<code>/etc/conf.modules</code>. Regardez la description de l'entrée
<code>scsi_hostadapter</code> plus haut.</p>
<h2><a name="ss12.4">12.4 <code>modprobe</code> se plaint que
<code>gcc2_compiled</code></a> n'est pas défini</h2>
<p>Ceci est une erreur dans <code>module-utilities</code> qui ne se
voit qu'avec <code>binutils 2.6.0.9</code> ou supérieur et elle est
aussi documentée dans les notes de mises à jour du paquetage
<code>binutils</code>. Lisez-le donc ou mettez à jour le paquetage
des modules par un qui corrige ce problème, par exemple le
<code>modules-2.0.0</code>.</p>
<h2><a name="ss12.5">12.5 Le volume de ma carte son n'est pas
initialisé etc.</a></h2>
<p>Les options de configuration d'un modules sont stockées dans le
module lui-même quand il est chargé. Donc, quand
<code>kerneld</code> 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.</p>
<p>Vous pouvez indiquer à <code>kerneld</code> de configurer un
module en exécutant un programme après son chargement automatique.
Voir la section sur l'entrée <code>post-install</code>.</p>
<h2><a name="ss12.6">12.6 DOSEMU a besoin de modules, comment
<code>kerneld</code></a> peut-il les charger ?</h2>
<p>Vous ne pouvez pas. Aucune des versions de <code>dosemu</code>
(officielles ou de développement) ne gèrent le chargement des
modules à travers <code>kerneld</code>. 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.</p>
<h2><a name="ss12.7">12.7 Pourquoi ai-je des messages ``Ouch,
kerneld time out, message failed'' ?</a></h2>
<p>Quand le noyau envoit une requête à <code>kerneld</code>, il
s'attend à recevoir un acquittement dans un délai d'une seconde. Si
<code>kerneld</code> n'envoie pas cet acquittement, ce message est
diffusé. La requête est retransmise et peut éventuellement
réussir</p>
<p>Cela arrive couramment sur des systèmes lourdement chargés.
<code>kerneld</code> é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.</p>
<p>Si cela se produit quand la charge est faible, essayez de
redémarrer <code>kerneld</code>. Tuez le processus
<code>kerneld</code> et redémarrez-le avec la commande
<code>/usr/sbin/kerneld</code>. Si le problème persiste, vous
devrez envoyer un message d'erreur à <a href=
"mailto:linux-kernel@vger.rutgers.edu">linux-kernel@vger.rutgers.edu</a>
mais, <b>s'il vous plaît</b> soyez sûr que votre version du noyau
et de <code>kerneld</code> soient à jour avant d'envoyer un message
sur ce problème.</p>
<h2><a name="ss12.8">12.8 <code>mount</code> n'attend pas que
<code>kerneld</code> charge le module du système de
fichier</a></h2>
<p>Il existe un certain nombre de messages sur le fait que la
commande <code>mount(8)</code> n'attende pas que
<code>kerneld</code> ait chargé le module du système de fichiers.
<code>lsmod</code> montre que <code>kerneld</code> a chargé le
module et si vous répétez la commande <code>mount</code>
immédiatement, le montage sera réussi. Cela semble être une erreur
dans le paquetage <code>modules</code> version 1.3.69f qui affecte
des utilisateurs de Debian (elle peut être corrigée en installant
la dernière version de ce paquetage).</p>
<h2><a name="ss12.9">12.9 <code>kerneld</code> n'arrive pas à
charger le module <i>ncpfs</i></a></h2>
<p>Vous devez compiler les utilitaires <code>ncpfs</code> avec
l'option <code>-DHAVE_KERNELD</code>. Voir le fichier
<code>Makefile</code> de <code>ncpfs</code>.</p>
<h2><a name="ss12.10">12.10 <code>kerneld</code> n'arrive pas à
charger le module <i>smbfs</i></a></h2>
<p>Vous utilisez une vieille version des utilitaires
<code>smbmount</code>. Prenez la dernière version (0.10 ou
supérieure) à <a href=
"ftp://tsx-11.mit.edu/pub/linux/filesystems/smbfs/">ftp://tsx-11.mit.edu/pub/linux/filesystems/smbfs/</a>.</p>
<h2><a name="ss12.11">12.11 J'ai tout recompilé sous forme de
modules et maintenant, mon système ne peut plus démarrer :
<code>kerneld</code> n'arrive pas à charger le module du système de
fichier racine.</a></h2>
<p>Vous ne pouvez pas <b>tout</b> 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 <code>kerneld</code>. Donc vous ne pouvez pas mettre
sous forme de modules :</p>
<ul>
<li>le gestionnaire de votre disque dur où réside votre système de
fichiers racine ;</li>
<li>le gestionnaire du système de fichiers racine ;</li>
<li>le chargeur du format de binaire pour <code>init</code>,
<code>kerneld</code> et d'autres prgrammes.</li>
</ul>
<p>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 <code>lilo</code> ou <code>loadlin</code> 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 <code>Documentation/initrd.txt</code> dans l'arborescence
des sources du noyau.</p>
<h2><a name="ss12.12">12.12 <code>kerneld</code>ne se lance pas
lors de l'amorçage de la machine : il veut <i>libgdbm</i></a></h2>
<p>Les nouvelles versions de <code>kerneld</code> ont besoin de la
librairie GNU dbm, <i>libgdbm.so</i> pour fonctionner. La plupart
des installations ont ce fichier dans <code>/usr/lib</code> mais
vous avez probablement lancé <code>kerneld</code> avant que le
système de fichiers de <code>/usr</code> ne soit monté. Un des
symptomes de ceci est que <code>kerneld</code> 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 <code>kerneld</code>
après que <code>/usr</code> ne soit monté, soit de mettre la
librairie <i>gdbm</i> dans le système de fichiers racine (par
exemple dans <code>/lib</code>).</p>
<h2><a name="ss12.13">12.13 J'ai ``Cannot load module xxx'' mais
j'ai reconfiguré mon noyau sans la gestion de xxx !</a></h2>
<p>L'installation de la Slackware (et peut-être d'autres) crée un
fichier <code>/etc/rc.d/rc.modules</code> par défaut qui fait un
<code>modprobe</code> 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 <code>rc.modules</code>, d'où les messages d'erreur. Mettez à
jour votre fichier <code>rc.modules</code> en commentant tout
module que vous n'utilisez plus, ou enlevez entièrement ce fichier
et laissez <code>kerneld</code> charger les modules quand on en a
besoin.</p>
<h2><a name="ss12.14">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</a></h2>
<p>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 <code>/lib/modules</code>. La solution la
plus simple est d'effacer le répertoire
<code>/lib/modules/x.y.z</code> et de retaper <code>make
modules_install</code> 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.</p>
<h2><a name="ss12.15">12.15 J'ai installé Linux 2.1 et aucun module
ne se charge</a></h2>
<p>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.</p>
<p>En bref, si vous voulez utiliser les modules avec un noyau 2.1,
vous devez :</p>
<ul>
<li>lire le fichier <code>Documentation/Changes</code> et voir
quels paquetages doivent être mis à jour sur votre système ;</li>
<li>utiliser le dernier paquetage <code>modutils</code>, disponible
sur <a href=
"ftp://ftp.redhat.com/pub/alphabits/">ftp://ftp.redhat.com/pub/alphabits/</a>
ou sur le site mirroir <a href=
"ftp://tsx-11.mit.edu/pub/linux/packages/alphabits/">ftp://tsx-11.mit.edu/pub/linux/packages/alphabits/</a></li>
</ul>
<p>Je recommande le noyau 2.1.29, si vous voulez utiliser les
modules avec un noyau 2.1.</p>
<h2><a name="ss12.16">12.16 Que dire d'un réseau utilisant la ligne
téléphonique ?</a></h2>
<p><code>kerneld</code> 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 <code>kerneld</code> à lancer le script
<code>/sbin/request_route</code> pour initialiser une connexion PPP
ou SLIP.</p>
<p>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 :</p>
<p>``Le truc request-route est obsolète, cassé et non requis... Il
est aussi enlevé des versions 2.1.x.''</p>
<p>A la place d'utiliser le script <code>request-route</code> et
<code>kerneld</code>, je vous encourage vivement à installer le
paquetage <code>diald</code> d'Eric Schenk, disponible à l'url
<a href=
"http://www.dna.lth.se/~erics/diald.html">http://www.dna.lth.se/~erics/diald.html</a></p>
<h2><a name="s13">13. Copyright</a></h2>
<p>Ce document est copyrighté (c) Henrik Storner, 1996, 1997.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>Si vous avez des questions, vous pouvez contacter Greg Hankins,
le coordonnateur des HowTo Linux par courrier électronique à
<a href=
"mailto:gregh@sunsite.unc.edu">gregh@sunsite.unc.edu</a></p>
</body>
</html>