This file is indexed.

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

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
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<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&ccedil;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&eacute;crit :</p>
<ul>
<li>ce qu'est <code>kerneld</code> ;</li>
<li>pourquoi l'utiliser ;</li>
<li>comment avoir les outils n&eacute;cessaires ;</li>
<li>comment les configurer ;</li>
<li>comment faire fonctionner <code>kerneld</code> avec des modules
qu'il ne conna&icirc;t pas ;</li>
<li>comment espionner <code>kerneld</code> (peut s'av&eacute;rer
tr&egrave;s utile lors de la mise au point) ;</li>
<li>les utilisations sp&eacute;ciales de <code>kerneld</code>
;</li>
<li>les probl&egrave;mes courants et les dysfonctionnements.</li>
</ul>
<p>La derni&egrave;re version de ce document peut &ecirc;tre
trouv&eacute;e &agrave; 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
&agrave; jour sur ma liste non tri&eacute;e des modifications
&agrave; <a href=
"http://eolicom.olicom.dk/~storner/kern.html">http://eolicom.olicom.dk/~storner/kern.html</a></p>
<p>La derni&egrave;re version fran&ccedil;aise se trouve &agrave;
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&eacute;couvrez dans ce document des choses fausses,
envoyez-moi un mot &agrave; ce sujet. Les personnes suivantes ont
contribu&eacute; &agrave; 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&eacute;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&eacute; &agrave; une
fonctionnalit&eacute; introduite lors du d&eacute;veloppement des
noyaux de la s&eacute;rie 1.3 par Bjorn Ekwall. Il perdure avec les
noyaux 2.0 et 2.1. Il permet aux modules du noyau
(c'est-&agrave;-dire les pilotes de p&eacute;riph&eacute;riques, de
r&eacute;seaux, les syst&egrave;mes de fichiers...) d'&ecirc;tre
charg&eacute;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&eacute;gr&eacute;s dans le noyau standard :</p>
<ul>
<li>on peut configurer kerneld pour qu'il ex&eacute;cute un
programme utilisateur &agrave; la place de l'&eacute;conomiseur
d'&eacute;cran, ce qui vous permet d'utiliser n'importe quel
programme.</li>
<li>dans le m&ecirc;me genre que l'&eacute;conomiseur
d'&eacute;cran, vous pouvez aussi changer le traditionel ``beep''
en quelque chose de compl&egrave;tement diff&eacute;rent...</li>
</ul>
<p><code>kerneld</code> est compos&eacute; de deux entit&eacute;s
s&eacute;par&eacute;es :</p>
<ul>
<li>gestion dans le noyau de Linux afin d'envoyer des
requ&ecirc;tes au d&eacute;mon afin de savoir si un module doit
&ecirc;tre utilis&eacute; pour certaines t&acirc;ches ;</li>
<li>un d&eacute;mon au niveau utilisateur qui peut montrer quels
modules doivent &ecirc;tre charg&eacute;s pour accomplir la
requ&egrave;te du noyau.</li>
</ul>
<p>Ces deux parties doivent fonctionner pour que
<code>kerneld</code> soit op&eacute;rationnel. Le fait qu'une des
deux soit initialis&eacute;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&egrave;mes qui diff&egrave;rent peu (par exemple, une marque
diff&eacute;rente de carte r&eacute;seau), alors vous pouvez
construire un seul noyau et des modules, &agrave; la place d'avoir
&agrave; construire un noyau par syst&egrave;me.</li>
<li>Les modules sont plus faciles &agrave; tester pour les
d&eacute;veloppeurs : il ne faut pas relancer le syst&egrave;me
pour charger et enlever le pilote. Ceci s'applique pour tous les
modules et non juste pour ceux qui sont mont&eacute;s par
<code>kerneld</code>.</li>
<li>Il r&eacute;duit l'usage de la m&eacute;moire du noyau, ce qui
donne plus de m&eacute;moire pour les applications. La
m&eacute;moire utilis&eacute;e par le noyau n'est jamais
``swapp&eacute;e'' sur disque, donc si vous avez 100Ko de pilotes
non utilis&eacute;s compil&eacute;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&ecirc;ter avec leur
chargement et leur d&eacute;chargement &agrave; 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&eacute;rentes, chaque
utilisateur charge les pilotes dont il a besoin pour sa
configuration. C'est la m&eacute;thode retenue par la RedHat 4.0
dans son installation.</li>
</ul>
<p>Bien s&ucirc;r, il y a aussi des raisons pour que vous ne
vouliez pas l'utiliser : vous pr&eacute;f&egrave;reriez avoir juste
un fichier image de votre noyau avec tous vos pilotes &agrave;
l'int&eacute;rieur. Dans ce cas, vous lisez le mauvais
document.</p>
<h2><a name="s5">5. O&ugrave; puis-je trouver les outils
n&eacute;cessaires ?</a></h2>
<p>Le support dans le noyau de Linux a &eacute;t&eacute; introduit
avec Linux 1.3.57. Si vous avez une version plus ancienne, vous
devrez la mettre &agrave; 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 &agrave;
jour avec la derni&egrave;re version 2.0 (actuellement la 2.0.36)
:</p>
<ul>
<li><a href=
"%20ftp://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=
"%20ftp://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&ccedil;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&eacute;mon en mode utilisateur a &eacute;t&eacute;
introduit avec le paquetage <code>modules-1.2.8</code> et avec le
nouveau paquetage <code>modules-2.0</code>. Ils sont normalement
trouvables &agrave; la m&ecirc;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&ccedil;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&eacute;veloppement), vous devrez
utiliser le dernier paquetage <code>modutils-</code> (PAS
<code>modules-</code>). Mais regardez plus bas au sujet des
probl&egrave;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&eacute;cessaires : un noyau et les
derniers <code>modules-utilities</code>. Ensuite, vous devez
installer les <code>modules-utilities</code>. C'est tr&egrave;s
simple : il faut juste d&eacute;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&eacute;marrage pour
faire les initialisations n&eacute;cessaires lors du
d&eacute;marrage de Linux. Ajoutez les lignes suivantes &agrave;
votre fichier <code>/etc/rc/rc.d/rc.sysinit</code> (si vous
utilisez la Slackware) ou &agrave;
<code>/etc/rc.d/rc.sysinit</code> (si vous utilisez SysVinit,
c'est-&agrave;-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&egrave;mes de fichiers qui ont besoins que les
      # pilotes de disque soient charg&eacute;s automatiquement
      if [ -x /sbin/kerneld ]
      then
          /sbin/kerneld
      fi

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

      # Mettez &agrave; jour le fichier de d&eacute;pendance des modules du noyau
      # Votre syst&egrave;me de fichier racine doit &ecirc;tre mont&eacute; en
      # lecture-&eacute;criture &agrave; partir de maintenant
      if [ -x /sbin/depmod ]
      then
          /sbin/depmod -a
      fi
      
</pre>
La premi&egrave;re partie lance <code>kerneld</code>
lui-m&ecirc;me.
<p>La second appelle <code>depmod -a</code> au d&eacute;marrage. Le
programme <code>depmod</code> construit une liste de tous les
modules disponibles et analyse leurs inter d&eacute;pendances. Donc
il sait si un module a besoin qu'un autre soit charg&eacute; avant
lui.</p>
<p>NOTE : Les versions r&eacute;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
&ecirc;tre le cas si vous avez <code>/usr</code> sur une partition
s&eacute;par&eacute;e et que vous lanciez <code>kerneld</code>avant
que <code>/usr</code> ne soit mont&eacute;e. La solution
recommand&eacute;e est de d&eacute;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&eacute;fa&icirc;tes les sources du noyau, configurez
et construisez un noyau &agrave; votre convenance. Si vous ne
l'avez jamais fait avant, vous devriez lire le fichire README
&agrave; la racine des sources du noyau. Quand vous lancez
<code>make config</code> pour configurer le noyau, vous devrez
faire attention &agrave; des questions qui apparaissent au
d&eacute;but :</p>
<pre>
      Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y
      
</pre>
Vous devez s&eacute;lectioner la gestion des modules chargeables,
sinon, il n'y aura pas de modules &agrave; charger pour
<code>kerneld</code>. R&eacute;pondez seulement oui (Y).
<pre>
      Kernel daemon support (CONFIG_KERNELD) [Y/n/?] Y
      
</pre>
Ceci est aussi n&eacute;cessaire. Ensuite, de nombreuses choses
peuvent &ecirc;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&ugrave; vous pouvez r&eacute;pondre M pour Module.
G&eacute;n&eacute;ralement, seuls les pilotes n&eacute;cessaires
lors du d&eacute;marrage de votre syst&egrave;me (le pilote du
disque dur, le pilote du syst&egrave;me de fichiers racine) doivent
&ecirc;tre mis dans le noyau ; le reste pouvant &ecirc;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&eacute;e la nouvelle
image du noyau dans le fichier <code>arch/i386/boot/zImage</code>.
Vous devrez le copier o&ugrave; 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&eacute; r&eacute;guli&egrave;rement
au <code>comp.os.linux.answers</code> et disponible sur le site
<code>sunsite.unc.edu</code> &agrave;
<code>/pub/Linux/docs/HOWTO</code>. La version fran&ccedil;aise est
disponible &agrave; <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&egrave;me avec le nouveau noyau.
Quand le syst&egrave;me est pr&ecirc;t, vous pouvez ex&eacute;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&eacute;ressantes de <code>kerneld</code> est
qu'une fois le noyau et le d&eacute;mon install&eacute;s, seule une
tr&egrave;s petite initialisation est n&eacute;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 &eacute;t&eacute;
charg&eacute; 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&eacute;, vous pouvez lancer <code>/sbin/lsmod</code> qui
listera tous les modules charg&eacute;s &agrave; 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&eacute; par <code>kerneld</code> quand il n'aura pas
&eacute;t&eacute; utilis&eacute; pendant plus d'une minute. Les 11
pages de m&eacute;moire (soit 44ko, une page faisant 4ko) seront
donc seulement utilis&eacute;es quand j'acc&egrave;derai au lecteur
de disquette ; si je n'utilise pas la disquette pendant plus d'une
minute, elles seront lib&eacute;r&eacute;es. Tr&egrave;s
int&ecirc;ressant si vous &ecirc;tes &agrave; court de
m&eacute;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&eacute;j&agrave; les
types les plus communs de modules, il y a des situations dans
lesquelles <code>kerneld</code> ne sera pas comment satisfaire une
requ&ecirc;te venant du noyau. C'est le cas avec les pilotes de
CD-ROM ou de cartes r&eacute;seau, o&ugrave; il existe plus d'un
module possible susceptible d'&ecirc;tre charg&eacute;.</p>
<p>Les requ&ecirc;tes que le d&eacute;mon de <code>kerneld</code>
re&ccedil;oit du noyau viennent d'un des &eacute;l&eacute;ments
suivants :</p>
<ul>
<li>un pilote de p&eacute;riph&eacute;rique bloc ;</li>
<li>un pilote de p&eacute;riph&eacute;rique caract&egrave;re ;</li>
<li>un format binaire ;</li>
<li>une discipline de ligne tty ;</li>
<li>un syst&egrave;me de fichier ;</li>
<li>un p&eacute;riph&eacute;rique r&eacute;seau ;</li>
<li>un service r&eacute;seau (par exemple rarp) ;</li>
<li>un protocole r&eacute;seau (par exemple IPX).</li>
</ul>
<p><code>kerneld</code> d&eacute;termine quel module doit
&ecirc;tre charg&eacute; regardant le fichier de configuration
<code>/etc/conf.modules</code>. Il y a deux types d'entr&eacute;e
dans ce fichier : les chemins (o&ugrave; les fichiers des modules
sont stock&eacute;s) et les alias (quel module doit &ecirc;tre
charg&eacute;). Si vous n'avez pas d&eacute;j&agrave; ce fichier,
vous devrez le cr&eacute;er en lan&ccedil;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&eacute;faut, vous devez inclure aussi tous les
chemins par d&eacute;faut &eacute;tant donn&eacute; qu'une
directive <code>path</code> dans <code>/etc/conf.modules</code>
remplacera toutes celles que <code>modprobe</code> conna&icirc;t
par d&eacute;faut.</p>
<p>Normalement, vous ne voudrez pas ajouter de <code>path</code>
par vous-m&ecirc;me &eacute;tant donn&eacute; que l'ensemble des
chemins par d&eacute;faut prend en compte toutes les configurations
normales, je vous le promets !</p>
<p>D'un autre c&ocirc;t&eacute;, si vous voulez juste ajouter un
alias ou une directive d'option, vos nouvelles entr&eacute;es dans
<code>/etc/conf.modules</code> seront ajout&eacute;es &agrave;
celles que <code>modprobe</code> conna&icirc;t d&eacute;j&agrave;.
Si vous deviez red&eacute;finir un alias ou une option, vos
nouvelles entr&eacute;es dans <code>/etc/conf.modules</code>
remplaceront celles d&eacute;j&agrave; pr&eacute;sentes.</p>
<h2><a name="ss8.1">8.1 Les p&eacute;riph&eacute;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 &agrave;
quelles requ&ecirc;tes ils correspondent. Par exemple, la
requ&ecirc;te qui termine le chargement du gestionnaire de
disquettes correspond au p&eacute;riph&eacute;rique bloc dont le
num&eacute;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&eacute;ro majeur
&eacute;gal &agrave; 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&eacute;riph&eacute;riques
caract&egrave;res</a></h2>
<p>Les p&eacute;riph&eacute;riques de type caract&egrave;re sont
utilis&eacute;s de la m&ecirc;me mani&egrave;re. Par exemple, le
lecteur de bande correspond au num&eacute;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&icirc;t pas par
d&eacute;faut : il n'est pas list&eacute; dans le r&eacute;sultat
de <code>/sbin/modprobe -c</code>.</p>
<p>Donc, pour configurer <code>kerneld</code> de mani&egrave;re
&agrave; 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&eacute;riph&eacute;riques
r&eacute;seau</a></h2>
<p>Vous pouvez aussi utiliser le nom du p&eacute;riph&eacute;rique
&agrave; la place de <code>char-major-xxx</code> ou
<code>block-major-yyy</code>. Ceci est particuli&egrave;rement
utilis&eacute; pour les gestionnaires r&eacute;seaux. Par exemple,
un pilote pour une carte r&eacute;seau ne2000 utilis&eacute;e comme
<code>eth0</code> pourrait &ecirc;tre charg&eacute; 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&eacute;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&ucirc;r, les options disponibles sont sp&eacute;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&eacute;r&eacute;s de la m&ecirc;me
fa&ccedil;on. A chaque fois que vous essayez de lancer un programme
que le noyau ne sait pas comment ex&eacute;cuter,
<code>kerneld</code> lance une requ&ecirc;te pour
<code>binfmt-xxx</code>, ou <code>xxx</code> est le nombre
d&eacute;termin&eacute; &agrave; partir des tous premiers octets de
l'ex&eacute;cutable. Donc la configuration de <code>kerneld</code>
pour la gestion du chargement du module binfmt_aout pour les
ex&eacute;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&eacute;cimaux ( 413 en octal correspond &agrave; 267 en
d&eacute;cimal ). Il y a en r&eacute;alit&eacute; trois variantes
des ex&eacute;cutables a.out peu diff&eacute;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&eacute;es avec
<i>tyy-ldisc-x</i> o&ugrave; <i>x</i> est
g&eacute;n&eacute;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&eacute;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&eacute;seau
(IPX, AppleTalk, AX.25)</a></h2>
<p>Certains protocoles r&eacute;seau peuvent &ecirc;tre aussi
charg&eacute;s sous la forme de modules. Le noyau demande &agrave;
<code>kerneld</code> une famille de protocole (par exemple IPX)
avec une requ&ecirc;te pour <i>net-pf-X</i> o&ugrave; <i>X</i> est
un nombre indiquant la famille voulue. Par exemple, <i>netpf-3</i>
correspond &agrave; AX.25, <i>net-pf-4</i> &agrave; IPX et
<i>net-pf-5</i> &agrave; AppleTalk. (Ces nombres sont
d&eacute;termin&eacute;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&eacute;e dans <code>/etc/conf.modules</code> :</p>
<pre>
      alias net-pf-4 ipx
      
</pre>
<p>Consultez &eacute;galement la section traitant des
probl&egrave;mes courants pour &eacute;viter des messages
d'avertissment lors de l'amor&ccedil;age relatifs &agrave; des
familles de protocoles ind&eacute;finies.</p>
<h2><a name="ss8.7">8.7 Les syst&egrave;mes de fichiers</a></h2>
<p>Les requ&ecirc;tes soumises &agrave; <code>kerneld</code> pour
les syst&egrave;mes de fichiers sont simplement constitu&eacute;es
par le type du syst&egrave;me de fichiers. Un usage courant est de
charger le module <i>isofs</i> pour les syst&egrave;mes de fichiers
des CD-ROM, c'est-&agrave;-dire les syst&egrave;mes de fichiers de
type <i>iso9660</i> :</p>
<pre>
      alias iso9660 isofs
      
</pre>
<h2><a name="s9">9. P&eacute;riph&eacute;riques demandant une
configuration sp&eacute;ciale</a></h2>
<p>Certains p&eacute;riph&eacute;riques demandent un peu plus de
configuration que le simple alias d'un p&eacute;riph&eacute;rique
et d'un module.</p>
<ul>
<li>les p&eacute;riph&eacute;riques de type caract&egrave;re de
num&eacute;ro majeur 10 : divers p&eacute;riph&eacute;riques ;</li>
<li>les p&eacute;riph&eacute;riques SCSI :</li>
<li>les p&eacute;riph&eacute;riques qui demandent une
initialisation sp&eacute;ciale.</li>
</ul>
<h2><a name="ss9.1">9.1 char-major-10 : souris, watchdogs, et
random</a></h2>
<p>Les p&eacute;riph&eacute;riques sont habituellement
identifi&eacute;s par leur nombre majeur, par exemple 27 pour
<code>ftape</code>. Toutefois, si vous regardez les entr&eacute;es
de <code>/dev</code> pour le nombre majeur 10, vous verrez un
certain nombre de p&eacute;riph&eacute;riques tr&egrave;s
diff&eacute;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&eacute;riph&eacute;rique noyau <i>random</i> ;</li>
<li>l'interface APM (Advanced Power Management).</li>
</ul>
<p>De fa&ccedil;on &eacute;vidente, ces p&eacute;riph&eacute;riques
sont contr&ocirc;l&eacute;s par diff&eacute;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&eacute;rieure pour l'utiliser. Les versions plus anciennes ne
passaient pas le nombre mineur &agrave; <code>kerneld</code>, ce
qui ne permettait pas &agrave; <code>kerneld</code> de savoir quel
module il fallait charger.</p>
<h2><a name="ss9.2">9.2 Charger les gestionnaires SCSI :
l'entr&eacute;e <i>scsi_hostadapter</i></a></h2>
<p>Les gestionnaires de p&eacute;riph&eacute;riques SCSI sont
constitu&eacute;s d'un adaptateur pour la carte SCSI (par exemple
pour une Adaptec 1542) et d'un gestionnaire pour le type de
p&eacute;riph&eacute;rique SCSI que vous utilisez, comme un disque
dur, un lecteur de CD-ROM ou un lecteur de cartouche. Tous peuvent
&ecirc;tre charg&eacute;s sous forme de modules. Cependant, lorsque
vous voulez acc&eacute;der &agrave; un lecteur de CD-ROM
connect&eacute; &agrave; une carte Adaptec, le noyau et
<code>kerneld</code> savent seulement qu'il faut charger le module
<i>sr_mod</i> pour g&eacute;rer le CD-ROM SCSI, mais ils ignorent
&agrave; quel contr&ocirc;leur SCSI il est connect&eacute;, donc
quel module charger pour g&eacute;rer le contr&ocirc;leur SCSI.</p>
<p>Pour r&eacute;soudre cela, vous pouvez ajouter une entr&eacute;e
pour le module du contr&ocirc;leur SCSI au fichier
<code>/etc/conf.modules</code> qui indiquera &agrave;
<code>kerneld</code> quel module charger parmi toutes les
possibilit&eacute;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&eacute;rieure.</p>
<p>Cela marche si vous n'avez qu'une carte SCSI, sinon, c'est un
peu plus difficile. En g&eacute;n&eacute;ral, vous ne pouvez pas
avoir <code>kerneld</code> qui charge le pilote d'une carte SCSI si
le gestionnaire d'un autre contr&ocirc;leur est d&eacute;j&agrave;
install&eacute;. 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&eacute; pour que
<code>kerneld</code>charge plusieurs gestionnaires SCSI. James
Tsiao a eu cette id&eacute;e : vous pouvez avoir
<code>kerneld</code> qui charge le second controleur SCSI en
mettant la d&eacute;pendance dans le fichier
<code>modules.dep</code> &agrave; la main. Vous avez juste besoin
d'une entr&eacute;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 &agrave; la maison est
configur&eacute;e exactement comme au-dessus et fonctionne
tr&egrave;s bien pour tous les p&eacute;riph&eacute;rique de mon
second contr&ocirc;leur SCSI, incluant lecteurs de cartouche,
CD-ROM et des p&eacute;riph&eacute;riques SCSI
g&eacute;n&eacute;riques. L'inconv&eacute;niant est que
<code>depmod -a</code> ne peut pas d&eacute;tecter ces
d&eacute;pendances. Donc, l'utilisateur doit les ajouter &agrave;
la main et ne pas lancer <code>depmod -a</code> au
d&eacute;marrage. Une fois configur&eacute;, <code>kerneld</code>
chargera automatiquement <i>aha1542.o</i> comme il faut.
<p>Vous devez &ecirc;tre conscient que cette technique ne marche
que si vous avez diff&eacute;rents types de
p&eacute;riph&eacute;riques sur deux contr&ocirc;leurs. Par exemple
les disques durs sur un contr&ocirc;leur et les lecteurs de CD-ROM,
de cartouches et les p&eacute;riph&eacute;riques
g&eacute;n&eacute;riques sur l'autres.</p>
<h2><a name="ss9.3">9.3 Quand charger un module n'est pas suffisant
: l'entr&eacute;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&eacute;
le pilote de votre carte son en tant que module, il est souvent
pratique de le r&eacute;gler pour un certain volume sonore. Le seul
probl&egrave;me, c'est que cette initialisation dispara&icirc;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&eacute;cute la commande
indiqu&eacute;e par l'entr&eacute;e <code>post-install sound</code>
apr&egrave;s que le module son ait &eacute;t&eacute; charg&eacute;.
Donc, le module son est configur&eacute; par la commande
<code>/usr/local/bin/setmix -f /etc/volume.conf</code>.
<p>Cela peut s'av&eacute;rer tr&egrave;s utile pour d'autres
modules, par exemple le module <i>lp</i> peut &ecirc;tre
configur&eacute; 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&eacute;rieure.
<p>Note : une version pr&eacute;c&eacute;dente de ce mini-HOWTO
mentionne une option <code>pre-remove</code> qui peut &ecirc;tre
utilis&eacute;e pour exc&eacute;cuter une commande juste avant que
<code>kerneld</code> ne d&eacute;charge un module. Toutefois, cela
n'a jamais march&eacute; et son utilisation est
d&eacute;conseill&eacute;e. Heureusement, cette options disparaitra
dans une future version de <code>kerneld</code>. L'ensemble des
op&eacute;rations d'initialisation des modules est en cours de
modification en ce moment, et peut diff&eacute;rer sur votre
syst&egrave;me au moment o&ugrave; vous lirez ceci.</p>
<h2><a name="s10">10. Espionner kerneld</a></h2>
<p>Si vous avez tout essay&eacute; et que vous ne comprenez pas ce
que le noyau demande &agrave; <code>kerneld</code>, il y a une
solution pour voir les requ&ecirc;tes que re&ccedil;oit
<code>kerneld</code> et par cons&eacute;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&eacute; avec le paquetage
<code>modules</code>, mais il n'est ni compil&eacute;, ni
install&eacute; par d&eacute;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 &agrave; envoyer des messages
&agrave; la console sur son activit&eacute;. Si vous essayez de
lancer la commande que vous voulez utiliser, vous verrez les
requ&ecirc;tes adress&eacute;es &agrave; <code>kerneld</code>.
Elles peuvent &ecirc;tre copi&eacute;es dans le fichier
<code>/etc/conf.modules</code> et mises en alias du module
demand&eacute; pour r&eacute;aliser la t&acirc;che.
<p>Pour arr&ecirc;ter le debuggage, lancez :</p>
<pre>
      /sbin/kdstat nodebug
      
</pre>
<h2><a name="s11">11. Utilisations sp&eacute;ciales de
kerneld</a></h2>
<p>Je savais bien que vous me demanderiez comment configurer le
module d'&eacute;conomiseur d'&eacute;cran...</p>
<p>Le r&eacute;pertoire <code>kerneld/GOODIES</code> dans le
paquetage <code>modules</code> a un certain nombre de patches noyau
pour la gestion de l'&eacute;conomiseur d'&eacute;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'&eacute;conomiseur
d'&eacute;cran, <code>kerneld</code> ex&eacute;cutera la commande
<code>/sbin/screenblanker</code> (il peut s'agir d'un script shell
qui lance votre &eacute;conomiseur d'&eacute;cran favorixt.</p>
<p>Quand le noyau veut l'arr&ecirc;ter, il envoie un signal
<code>SIGQUIT</code> au processus ex&eacute;cutant
<code>/sbin/screenblanker</code>. Votre script shell ou
&eacute;conomiseur d'&eacute;cran doit le capter et se terminer.
Pensez &agrave; restaurer l'&eacute;cran dans le mode texte initial
!</p>
<h2><a name="s12">12. Probl&egrave;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&eacute;cute
<code>ifconfig</code> ?</a></h2>
<p>Le code du noyau a &eacute;t&eacute; modifi&eacute; pour
permettre le chargement des familles de protocoles r&eacute;seau
(comme IPX, AX25 et AppelTalk) comme modules vers la version
1.3.80. Cela a eu pour effet d'ajouter une nouvelle requ&ecirc;te
pour <code>kerneld</code>, <i>net-pf-X</i>, o&ugrave; <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&egrave;me se lance et qu'il ex&eacute;cute
<code>ifconfig</code> pour initialiser le
p&eacute;riph&eacute;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&ucirc;r, si vous
utilisez IPX comme module, n'ajoutez pas la ligne qui retire IPX.
<h2><a name="ss12.2">12.2 Apr&egrave;s voir lancer
<code>kerneld</code>, mon syst&egrave;me ralentit quand j'active ma
connexion PPP</a></h2>
<p>Il y a bon nombre de messages &agrave; ce sujet. Il semble qu'il
y ait une malheureuse interaction entre <code>kerneld</code> et le
script <code>tkPPP</code> qui est utilis&eacute; sur certains
syst&egrave;mes pour configurer et surveiller la connexion PPP. Le
script ex&eacute;cute apparemment des boucles quand il lance
<code>ifconfig</code>. Celui-ci d&eacute;clenche
<code>kerneld</code> pour rechercher les modules <i>net-pf-X</i>
(voir ci-dessous), ce qui provoque une surcharge du syst&egrave;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&ccedil;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&eacute;e pour la carte SCSI au fichier
<code>/etc/conf.modules</code>. Regardez la description de
l'entr&eacute;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&eacute;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&eacute;rieur et
elle est aussi document&eacute;e dans les notes de mises &agrave;
jour du paquetage <code>binutils</code>. Lisez-le donc ou mettez
&agrave; jour le paquetage des modules par un qui corrige ce
probl&egrave;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&eacute; etc.</a></h2>
<p>Les options de configuration d'un modules sont stock&eacute;es
dans le module lui-m&ecirc;me quand il est charg&eacute;. Donc,
quand <code>kerneld</code> d&eacute;charge un module, la
configuration que vous aviez faite est perdue et la prochaine fois
que le module sera charg&eacute;, il h&eacute;ritera de la
configuration par d&eacute;faut.</p>
<p>Vous pouvez indiquer &agrave; <code>kerneld</code> de configurer
un module en ex&eacute;cutant un programme apr&egrave;s son
chargement automatique. Voir la section sur l'entr&eacute;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&eacute;veloppement) ne g&egrave;rent le
chargement des modules &agrave; travers <code>kerneld</code>.
Cependant, if vous avez un noyau 2.0.26 ou sup&eacute;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&ecirc;te &agrave;
<code>kerneld</code>, il s'attend &agrave; recevoir un acquittement
dans un d&eacute;lai d'une seconde. Si <code>kerneld</code>
n'envoie pas cet acquittement, ce message est diffus&eacute;. La
requ&ecirc;te est retransmise et peut &eacute;ventuellement
r&eacute;ussir</p>
<p>Cela arrive couramment sur des syst&egrave;mes lourdement
charg&eacute;s. <code>kerneld</code> &eacute;tant un processus en
mode utilisateur, il est ordonnanc&eacute; comme tout processus du
syst&egrave;me. Sous de fortes charges, il peut ne pas
s'ex&eacute;cuter pour envoyer l'acquittement avant l'expiration du
d&eacute;lai.</p>
<p>Si cela se produit quand la charge est faible, essayez de
red&eacute;marrer <code>kerneld</code>. Tuez le processus
<code>kerneld</code> et red&eacute;marrez-le avec la commande
<code>/usr/sbin/kerneld</code>. Si le probl&egrave;me persiste,
vous devrez envoyer un message d'erreur &agrave; <a href=
"mailto:linux-kernel@vger.rutgers.edu">linux-kernel@vger.rutgers.edu</a>
mais, <b>s'il vous pla&icirc;t</b> soyez s&ucirc;r que votre
version du noyau et de <code>kerneld</code> soient &agrave; jour
avant d'envoyer un message sur ce probl&egrave;me.</p>
<h2><a name="ss12.8">12.8 <code>mount</code> n'attend pas que
<code>kerneld</code> charge le module du syst&egrave;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&eacute; le module du syst&egrave;me
de fichiers. <code>lsmod</code> montre que <code>kerneld</code> a
charg&eacute; le module et si vous r&eacute;p&eacute;tez la
commande <code>mount</code> imm&eacute;diatement, le montage sera
r&eacute;ussi. Cela semble &ecirc;tre une erreur dans le paquetage
<code>modules</code> version 1.3.69f qui affecte des utilisateurs
de Debian (elle peut &ecirc;tre corrig&eacute;e en installant la
derni&egrave;re version de ce paquetage).</p>
<h2><a name="ss12.9">12.9 <code>kerneld</code> n'arrive pas
&agrave; 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
&agrave; charger le module <i>smbfs</i></a></h2>
<p>Vous utilisez une vieille version des utilitaires
<code>smbmount</code>. Prenez la derni&egrave;re version (0.10 ou
sup&eacute;rieure) &agrave; <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&eacute; sous forme
de modules et maintenant, mon syst&egrave;me ne peut plus
d&eacute;marrer : <code>kerneld</code> n'arrive pas &agrave;
charger le module du syst&egrave;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&egrave;me de fichiers racine et ex&eacute;cuter les programmes
n&eacute;cessaires au d&eacute;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&ugrave; r&eacute;side
votre syst&egrave;me de fichiers racine ;</li>
<li>le gestionnaire du syst&egrave;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&egrave;res version 1.3.x et
toutes les 2.x du noyau, supportent l'utilisation d'un disque ram
qui est charg&eacute; par <code>lilo</code> ou <code>loadlin</code>
et il est possible de charger des modules de ce ``disque''
tr&egrave;s t&ocirc;t dans le processus de d&eacute;marrage. La
marche &agrave; suivre est d&eacute;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&ccedil;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&eacute; <code>kerneld</code> avant que
le syst&egrave;me de fichiers de <code>/usr</code> ne soit
mont&eacute;. Un des symptomes de ceci est que <code>kerneld</code>
ne marche pas lors du d&eacute;marrage du syst&egrave;me et de
l'ex&eacute;cution des script rc, mais fonctionne parfaitement si
vous le lancez &agrave; la main apr&egrave;s. La solution est soit
de d&eacute;placer le lancement de <code>kerneld</code>
apr&egrave;s que <code>/usr</code> ne soit mont&eacute;, soit de
mettre la librairie <i>gdbm</i> dans le syst&egrave;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&eacute; mon noyau sans la gestion de xxx !</a></h2>
<p>L'installation de la Slackware (et peut-&ecirc;tre d'autres)
cr&eacute;e un fichier <code>/etc/rc.d/rc.modules</code> par
d&eacute;faut qui fait un <code>modprobe</code> explicite sur une
grande vari&eacute;t&eacute; de modules. Quels modules exactement
sont ``modprob&eacute;s'' ?, cela d&eacute;pend de la configuration
initiale du noyau. Vous avez probablement reconfigur&eacute; votre
noyau pour enlever un ou plusieurs modules qui est modprob&eacute;
dans <code>rc.modules</code>, d'o&ugrave; les messages d'erreur.
Mettez &agrave; jour votre fichier <code>rc.modules</code> en
commentant tout module que vous n'utilisez plus, ou enlevez
enti&egrave;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&eacute; mon noyau et les
modules et j'ai toujours des messages sur des symboles non
r&eacute;solus au d&eacute;marrage</a></h2>
<p>Vous avez probablement reconfigur&eacute; et recompil&eacute;
votre noyau et exclu des modules. Vous avez d'anciens modules que
vous n'utilisez pas dans le r&eacute;pertoire
<code>/lib/modules</code>. La solution la plus simple est d'effacer
le r&eacute;pertoire <code>/lib/modules/x.y.z</code> et de retaper
<code>make modules_install</code> depuis le r&eacute;pertoire des
sources du noyau. Notez que ce probl&egrave;me arrive seulement
quand vous reconfigurez le noyau sans changer de version. Si vous
voyez cette erreur quand vous passer &agrave; une nouvelle version
du noyau, vous avez un autre probl&egrave;me.</p>
<h2><a name="ss12.15">12.15 J'ai install&eacute; Linux 2.1 et aucun
module ne se charge</a></h2>
<p>Linux 2.1 est un noyau de d&eacute;veloppement. Pour cette
raison, il se peut que certaines choses ne fonctionnent pas de
temps en temps. La fa&ccedil;on dont les modules sont
manipul&eacute;s a chang&eacute; de fa&ccedil;on significative.
Richard Henderson a la charge du d&eacute;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 &ecirc;tre mis &agrave; jour sur votre
syst&egrave;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&eacute;seau utilisant
la ligne t&eacute;l&eacute;phonique ?</a></h2>
<p><code>kerneld</code> peut &agrave; l'origine g&eacute;rer
l'&eacute;tablissement de connexions r&eacute;seau &agrave; travers
le r&eacute;seau t&eacute;l&eacute;phonique &agrave; la demande :
essayer d'envoyer des paquets &agrave; un r&eacute;seau sans
&ecirc;tre connect&eacute;, peut entra&icirc;ner
<code>kerneld</code> &agrave; lancer le script
<code>/sbin/request_route</code> pour initialiser une connexion PPP
ou SLIP.</p>
<p>Il s'est av&eacute;r&eacute; que c'&eacute;tait une mauvaise
id&eacute;e. Alan Cox, bien connu pour ses travaux sur le
r&eacute;seau dans Linux a &eacute;crit sur la liste de diffusion
linux-kernel que :</p>
<p>``Le truc request-route est obsol&egrave;te, cass&eacute; et non
requis... Il est aussi enlev&eacute; 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 &agrave; installer
le paquetage <code>diald</code> d'Eric Schenk, disponible &agrave;
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&eacute; (c) Henrik Storner, 1996,
1997.</p>
<p>Sauf contre-ordre, les documents HowTo pour Linux sont
copyright&eacute;s pas leurs auteurs respectifs. Ces documents
peuvent &ecirc;tre reprodruits et distribu&eacute;s dans leur
ensemble ou en partie, sur n'importe quel type de support physique
ou &eacute;lectronique, du moment que cette notice l&eacute;gale se
trouve sur toutes les copies. Les redistributions commerciales sont
autoris&eacute;es et encourag&eacute;es. Toutefois, l'auteur
aimerait bien &ecirc;tre avis&eacute; de toute distribution de ce
genre.</p>
<p>Toute traduction, travail d&eacute;riv&eacute; ou
compl&eacute;mentaire incluant tout ou partie de document HowTo
Linux doit &ecirc;tre couvert par ce copyriht. De cette
mani&egrave;re, vous ne pouvez cr&eacute;er un document qui
s'inspire de ce document et imposer des restrictions
suppl&eacute;mentaires &agrave; sa diffusion. Des exceptions
&agrave; ces conditions peuvent &ecirc;tre donn&eacute;es sous
certaines conditions. Contactez le coordonnateur des HowTo Linux
&agrave; l'adresse donn&eacute;e un peu plus bas.</p>
<p>En r&eacute;sum&eacute;, nous souhaitons promouvoir la diffusion
de ces informations &agrave; travers un maximum de moyens de
communication. Toutefois, nous souhaitions conserver un copyright
sur les documents HowTo et nous souhaitons &ecirc;tre avertis de
leur redistribution.</p>
<p>Si vous avez des questions, vous pouvez contacter Greg Hankins,
le coordonnateur des HowTo Linux par courrier &eacute;lectronique
&agrave; <a href=
"mailto:gregh@sunsite.unc.edu">gregh@sunsite.unc.edu</a></p>
</body>
</html>