Kerneld mini-HOWTO
par Henrik Storner
[email protected]
Version 1.7 19 juillet 1997
(Adaptation fran�aise par Alexandre Devaure
[email protected],
14 janvier 1999).
______________________________________________________________________
Table des mati�res
1. Introduction
2. Contributeurs
3. Qu'est-ce que
4. Pourquoi est-ce que je veux l'utiliser ?
5. O� puis-je trouver les outils n�cessaires ?
6. Comment le configure-t-on ?
7. Tester kerneld
8. Comment
8.1 Les p�riph�riques bloc
8.2 Les p�riph�riques caract�res
8.3 Les p�riph�riques r�seau
8.4 Les formats binaires
8.5 Les disciplines de ligne (slip, cslip et ppp)
8.6 Les familles de protocoles r�seau (IPX, AppleTalk, AX.25)
8.7 Les syst�mes de fichiers
9. P�riph�riques demandant une configuration sp�ciale
9.1 char-major-10 : souris, watchdogs, et random
9.2 Charger les gestionnaires SCSI : l'entr�e
9.3 Quand charger un module n'est pas suffisant : l'entr�e
10. Espionner kerneld
11. Utilisations sp�ciales de kerneld
12. Probl�mes courants
12.1 Pourquoi est-ce que j'ai des messages ``Cannot locate module for net-pf-X'' quand j'exc�cute
12.2 Apr�s voir lancer
12.3 (TT
12.4 (TT
12.5 Le volume de ma carte son n'est pas initialis� etc.
12.6 DOSEMU a besoin de modules, comment
12.7 Pourquoi ai-je des messages ``Ouch, kerneld time out, message failed'' ?
12.8 (TT
12.9 (TT
12.10 (TT
12.11 J'ai tout recompil� sous forme de modules et maintenant, mon syst�me ne peut plus d�marrer :
12.12 (TT
12.13 J'ai ``Cannot load module xxx'' mais j'ai reconfigur� mon noyau sans la gestion de xxx !
12.14 J'ai recompil� mon noyau et les modules et j'ai toujours des messages sur des symboles non r�solus au d�marrage
12.15 J'ai install� Linux 2.1 et aucun module ne se charge
12.16 Que dire d'un r�seau utilisant la ligne t�l�phonique ?
13. Copyright
______________________________________________________________________
11..
IInnttrroodduuccttiioonn
Ce document explique comment utiliser la fonction kerneld avec les
noyaux Linux. Il d�crit :
� ce qu'est kerneld ;
� pourquoi l'utiliser ;
� comment avoir les outils n�cessaires ;
� comment les configurer ;
� comment faire fonctionner kerneld avec des modules qu'il ne conna�t
pas ;
� comment espionner kerneld (peut s'av�rer tr�s utile lors de la mise
au point) ;
� les utilisations sp�ciales de kerneld ;
� les probl�mes courants et les dysfonctionnements.
La derni�re version de ce document peut �tre trouv�e � l'adresse
http://eolicom.olicom.dk/~storner/kerneld-mini-HOWTO.html. Entre les
versions du mini-HOWTO, vous pouvez trouver des mises � jour sur ma
liste non tri�e des modifications �
http://eolicom.olicom.dk/~storner/kern.html
La derni�re version fran�aise se trouve � l'adresse
http://www.freenix.fr/linux/HOWTO/mini/.
22..
CCoonnttrriibbuutteeuurrss
Si vous d�couvrez dans ce document des choses fausses, envoyez-moi un
mot � ce sujet. Les personnes suivantes ont contribu� � ce mini-HOWTO
sur certains points :
� Bjorn Ekwall
[email protected]
� Ben Gaillart
[email protected]
� Cedric Tefft
[email protected]
� Brian Miller
[email protected]
� James C. Tsiao
[email protected]
J'appr�cierai les encouragements et les suggestions des lecteurs de ce
mini-HOWTO.
33..
QQuu''eesstt--ccee qquuee kkeerrnneelldd ??
kerneld est li� � une fonctionnalit� introduite lors du d�veloppement
des noyaux de la s�rie 1.3 par Bjorn Ekwall. Il perdure avec les
noyaux 2.0 et 2.1. Il permet aux modules du noyau (c'est-�-dire les
pilotes de p�riph�riques, de r�seaux, les syst�mes de fichiers...)
d'�tre charg�s automatiquement en fonction des besoins, sans
utilisation manuelle des commandes modprobe ou insmod.
Des aspects plus amusants, bien que ceux-ci ne soient pas (encore ?)
int�gr�s dans le noyau standard :
� on peut configurer kerneld pour qu'il ex�cute un programme
utilisateur � la place de l'�conomiseur d'�cran, ce qui vous permet
d'utiliser n'importe quel programme.
� dans le m�me genre que l'�conomiseur d'�cran, vous pouvez aussi
changer le traditionel ``beep'' en quelque chose de compl�tement
diff�rent...
kerneld est compos� de deux entit�s s�par�es :
� gestion dans le noyau de Linux afin d'envoyer des requ�tes au d�mon
afin de savoir si un module doit �tre utilis� pour certaines t�ches
;
� un d�mon au niveau utilisateur qui peut montrer quels modules
doivent �tre charg�s pour accomplir la requ�te du noyau.
Ces deux parties doivent fonctionner pour que kerneld soit
op�rationnel. Le fait qu'une des deux soit initialis�e ne suffit pas.
44..
PPoouurrqquuooii eesstt--ccee qquuee jjee vveeuuxx ll''uuttiilliisseerr ??
Il y a de bonnes raisons pour utiliser kerneld. Voici les miennes.
D'autres peuvent l'utiliser pour d'autres raisons.
� Si vous devez construire des noyaux pour de nombreux syst�mes qui
diff�rent peu (par exemple, une marque diff�rente de carte r�seau),
alors vous pouvez construire un seul noyau et des modules, � la
place d'avoir � construire un noyau par syst�me.
� Les modules sont plus faciles � tester pour les d�veloppeurs : il
ne faut pas relancer le syst�me pour charger et enlever le pilote.
Ceci s'applique pour tous les modules et non juste pour ceux qui
sont mont�s par kerneld.
� Il r�duit l'usage de la m�moire du noyau, ce qui donne plus de
m�moire pour les applications. La m�moire utilis�e par le noyau
n'est jamais ``swapp�e'' sur disque, donc si vous avez 100Ko de
pilotes non utilis�s compil�s dans le noyau, ils occasionnent
simplement une perte de RAM.
� Certaines choses que j'utilise, le pilote ftape, par exemple ou
iBCS, ne sont valables que sous forme de modules. Mais je ne veux
pas m'emb�ter avec leur chargement et leur d�chargement � chaque
fois que j'en ai besoin.
� Les personnes qui font des distributions Linux ne veulent pas
construire 284 images de boot diff�rentes, chaque utilisateur
charge les pilotes dont il a besoin pour sa configuration. C'est la
m�thode retenue par la RedHat 4.0 dans son installation.
Bien s�r, il y a aussi des raisons pour que vous ne vouliez pas
l'utiliser : vous pr�f�reriez avoir juste un fichier image de votre
noyau avec tous vos pilotes � l'int�rieur. Dans ce cas, vous lisez le
mauvais document.
55..
OO�� ppuuiiss--jjee ttrroouuvveerr lleess oouuttiillss nn��cceessssaaiirreess ??
Le support dans le noyau de Linux a �t� introduit avec Linux 1.3.57.
Si vous avez une version plus ancienne, vous devrez la mettre � jour
si vous voulez qu'il supporte kerneld. Tous les sites ftp majeurs de
Linux offrent les sources du noyau. Je recommande que vous le mettiez
� jour avec la derni�re version 2.0 (actuellement la 2.0.36) :
�
ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/linux-2.0.36.tar.gz
�
ftp://tsx-11.mit.edu/pub/linux/sources/system/v2.0/linux-2.0.36.tar.gz
�
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/v2.0/linux-2.0.36.tar.gz
Pour les utilisateurs fran�ais, il vaut mieux utiliser le miroir
francais
ftp://ftp.lip6.fr/pub2/linux/kernel/sources/v2.0/linux-2.0.36.tar.gz
Le d�mon en mode utilisateur a �t� introduit avec le paquetage
modules-1.2.8 et avec le nouveau paquetage modules-2.0. Ils sont
normalement trouvables � la m�me place que les sources des noyaux mais
les sites officiels sont :
�
ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/modules-2.0.0.tar.gz
�
ftp://tsx-11.mit.edu/pub/linux/sources/sbin/modules-2.0.0.tar.gz
�
ftp://ftp.funet.fi/pub/Linux/tools/modules-2.0.0.tar.gz
Pour les utilisateurs fran�ais :
ftp://ftp.lip6.fr/pub2/linux/kernel/sources/v2.0/modules-2.0.0.tar.gz
AVERTISSEMENT : si vous voulez essayer de charger des modules avec les
derniers noyaux 2.1 (d�veloppement), vous devrez utiliser le dernier
paquetage modutils- (PAS modules-). Mais regardez plus bas au sujet
des probl�mes avec les modules et les noyaux 2.1.
66..
CCoommmmeenntt llee ccoonnffiigguurree--tt--oonn ??
D'abord, ayez les parties n�cessaires : un noyau et les derniers
modules-utilities. Ensuite, vous devez installer les modules-
utilities. C'est tr�s simple : il faut juste d�sempaqueter les sources
et lancer make install. Ceci compile et installe les programmes
suivants dans /sbin : genkym, insmod, lsmod, modprobe, depmod,
kerneld. Je recommande que vous ajoutiez quelques lignes dans les
scripts de d�marrage pour faire les initialisations n�cessaires lors
du d�marrage de Linux. Ajoutez les lignes suivantes � votre fichier
/etc/rc/rc.d/rc.sysinit (si vous utilisez la Slackware) ou �
/etc/rc.d/rc.sysinit (si vous utilisez SysVinit, c'est-�-dire les
distributions Debian, RedHat, Caldera) :
# Demarrer kerneld - ceci doit arriver tres tot dans le
# processus de demarrage, certainement AVANT que vous lanciez
# fsck sur les syst�mes de fichiers qui ont besoins que les
# pilotes de disque soient charg�s automatiquement
if [ -x /sbin/kerneld ]
then
/sbin/kerneld
fi
# Vos commandes fsck fonctionnent ici
# et votre command mount monte le syst�me de fichiers racine
# en lecture seule.
# Mettez � jour le fichier de d�pendance des modules du noyau
# Votre syst�me de fichier racine doit �tre mont� en
# lecture-�criture � partir de maintenant
if [ -x /sbin/depmod ]
then
/sbin/depmod -a
fi
La premi�re partie lance kerneld lui-m�me.
La second appelle depmod -a au d�marrage. Le programme depmod
construit une liste de tous les modules disponibles et analyse leurs
inter d�pendances. Donc il sait si un module a besoin qu'un autre soit
charg� avant lui.
NOTE : Les versions r�centes de kerneld ont une option pour utiliser
la librairie GNU dbm : libgdbm. Si vous l'activez quand vous
construisez les modules-utilities, kerneld ne se lancera pas si
lidgdbm n'est pas disponible, ce qui pourrait �tre le cas si vous avez
/usr sur une partition s�par�e et que vous lanciez kerneldavant que
/usr ne soit mont�e. La solution recommand�e est de d�placer libgdm de
/usr/lib vers /lib ou de faire un lien statique de kerneld.
Ensuite, d�fa�tes les sources du noyau, configurez et construisez un
noyau � votre convenance. Si vous ne l'avez jamais fait avant, vous
devriez lire le fichire README � la racine des sources du noyau. Quand
vous lancez make config pour configurer le noyau, vous devrez faire
attention � des questions qui apparaissent au d�but :
Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y
Vous devez s�lectioner la gestion des modules chargeables, sinon, il
n'y aura pas de modules � charger pour kerneld. R�pondez seulement
oui (Y).
Kernel daemon support (CONFIG_KERNELD) [Y/n/?] Y
Ceci est aussi n�cessaire. Ensuite, de nombreuses choses peuvent �tre
mises sous forme de modules. Vous verrez des questions du genre :
Normal floppy disk support (CONFIG_BLK_DEV_FD) [M/n/y/?]
o� vous pouvez r�pondre M pour Module. G�n�ralement, seuls les pilotes
n�cessaires lors du d�marrage de votre syst�me (le pilote du disque
dur, le pilote du syst�me de fichiers racine) doivent �tre mis dans le
noyau ; le reste pouvant �tre construit sous forme de modules.
Quand vous avez fini avec make config, lancez make dep, make clean,
make zImage ou make modules, make modules et make modules_install.
Ouf !
La commande make zImage cr�e la nouvelle image du noyau dans le
fichier arch/i386/boot/zImage. Vous devrez le copier o� vous mettez
votre image de boot. N'oubliez pas de relancer LILO.
Pour plus d'informations sur la configuration, la construction et
l'installation de votre propre noyau, regardez le Kerneld-HOWTO post�
r�guli�rement au comp.os.linux.answers et disponible sur le site
sunsite.unc.edu � /pub/Linux/docs/HOWTO. La version fran�aise est
disponible � www.freenix.fr/linux
77..
TTeesstteerr kkeerrnneelldd
Maintenant, relancez le syst�me avec le nouveau noyau. Quand le
syst�me est pr�t, vous pouvez ex�cuter un ps ax et vous devriez voir
une ligne pour kerneld :
PID TTY STAT TIME COMMAND
59 ? S 0:01 /sbin/kerneld
Une des choses int�ressantes de kerneld est qu'une fois le noyau et le
d�mon install�s, seule une tr�s petite initialisation est n�cessaire.
Pour commencer, essayez d'utiliser un des pilotes que vous avez
construit comme module. J'ai construit le pilote de disquette comme
module, donc je peux mettre une disquette DOS dans le lecteur et :
osiris:~ $ mdir a:
Volume in drive A has no label
Volume Serial Number is 2E2B-1102
Directory for A:/
binuti~1 gz 1942 02-14-1996 11:35a binutils-2.6.0.6-2.6.0.7.diff.gz
libc-5~1 gz 24747 02-14-1996 11:35a libc-5.3.4-5.3.5.diff.gz
2 file(s) 26689 bytes
le pilote de disquette fonctionne : il a �t� charg� automatiquement
par kerneld quand j'ai voulu utiliser la disquette.
Pour voir que le module floppy est en effet charg�, vous pouvez lancer
/sbin/lsmod qui listera tous les modules charg�s � l'instant :
osiris:~ $ /sbin/lsmod
Module: #pages: Used by:
floppy 11 0 (autoclean)
Le mot ``autoclean'' signifie que le module sera automatiquement
enlev� par kerneld quand il n'aura pas �t� utilis� pendant plus d'une
minute. Les 11 pages de m�moire (soit 44ko, une page faisant 4ko)
seront donc seulement utilis�es quand j'acc�derai au lecteur de dis�
quette ; si je n'utilise pas la disquette pendant plus d'une minute,
elles seront lib�r�es. Tr�s int�ressant si vous �tes � court de
m�moire pour vos applications !
88..
CCoommmmeenntt kkeerrnneelldd ssaaiitt--iill qquueell mmoodduullee cchhaarrggeerr ??
Bien que kerneld connaisse d�j� les types les plus communs de modules,
il y a des situations dans lesquelles kerneld ne sera pas comment
satisfaire une requ�te venant du noyau. C'est le cas avec les pilotes
de CD-ROM ou de cartes r�seau, o� il existe plus d'un module possible
susceptible d'�tre charg�.
Les requ�tes que le d�mon de kerneld re�oit du noyau viennent d'un des
�l�ments suivants :
� un pilote de p�riph�rique bloc ;
� un pilote de p�riph�rique caract�re ;
� un format binaire ;
� une discipline de ligne tty ;
� un syst�me de fichier ;
� un p�riph�rique r�seau ;
� un service r�seau (par exemple rarp) ;
� un protocole r�seau (par exemple IPX).
kerneld d�termine quel module doit �tre charg� regardant le fichier de
configuration /etc/conf.modules. Il y a deux types d'entr�e dans ce
fichier : les chemins (o� les fichiers des modules sont stock�s) et
les alias (quel module doit �tre charg�). Si vous n'avez pas d�j� ce
fichier, vous devrez le cr�er en lan�ant /sbin/modprobe -c | grep -v
'^path' > /etc/conf.modules
Si vous voulez ajouter encore une autre directive ``path'' aux chemins
par d�faut, vous devez inclure aussi tous les chemins par d�faut �tant
donn� qu'une directive path dans /etc/conf.modules remplacera toutes
celles que modprobe conna�t par d�faut.
Normalement, vous ne voudrez pas ajouter de path par vous-m�me �tant
donn� que l'ensemble des chemins par d�faut prend en compte toutes les
configurations normales, je vous le promets !
D'un autre c�t�, si vous voulez juste ajouter un alias ou une
directive d'option, vos nouvelles entr�es dans /etc/conf.modules
seront ajout�es � celles que modprobe conna�t d�j�. Si vous deviez
red�finir un alias ou une option, vos nouvelles entr�es dans
/etc/conf.modules remplaceront celles d�j� pr�sentes.
88..11..
LLeess pp��rriipphh��rriiqquueess bblloocc
Si vous lancez /sbin/modprobe -c, vous aurez la liste des modules
connus par kerneld et � quelles requ�tes ils correspondent. Par
exemple, la requ�te qui termine le chargement du gestionnaire de
disquettes correspond au p�riph�rique bloc dont le num�ro majeur est 2
:
osiris:~ $ /sbin/modprobe -c | grep floppy
alias block-major-2 floppy
Pourquoi block-major-2 ? Parce que les lecteurs de disquettes /dev/fd*
utilisent un num�ro majeur �gal � 2 et sont de type bloc :
osiris:~ $ ls -l /dev/fd0 /dev/fd1
brw-rw-rw- 1 root root 2, 0 Mar 3 1995 /dev/fd0
brw-r--r-- 1 root root 2, 1 Mar 3 1995 /dev/fd1
88..22..
LLeess pp��rriipphh��rriiqquueess ccaarraacctt��rreess
Les p�riph�riques de type caract�re sont utilis�s de la m�me mani�re.
Par exemple, le lecteur de bande correspond au num�ro majeur 27 :
osiris:~ $ ls -lL /dev/ftape
crw-rw---- 1 root disk 27, 0 Jul 18 1994 /dev/ftape
Toutefois, kerneld ne le conna�t pas par d�faut : il n'est pas list�
dans le r�sultat de /sbin/modprobe -c.
Donc, pour configurer kerneld de mani�re � charger le gestionnaire
ftape, je dois ajouter une ligne au fichier de configuration
/etc/conf.modules :
alias char-major-27 ftape
88..33..
LLeess pp��rriipphh��rriiqquueess rr��sseeaauu
Vous pouvez aussi utiliser le nom du p�riph�rique � la place de char-
major-xxx ou block-major-yyy. Ceci est particuli�rement utilis� pour
les gestionnaires r�seaux. Par exemple, un pilote pour une carte
r�seau ne2000 utilis�e comme eth0 pourrait �tre charg� avec :
alias eth0 ne
Si vous devez passer des options au gestionnaire (comme de dire au
module quelle IRQ la carte r�seau utilise), vous ajoutez une ligne
options :
options ne irq=5
Ainsi kerneld lancera le gestionnaire NE2000 avec la commande :
/sbin/modprobe ne irq=5
Bien s�r, les options disponibles sont sp�cifiques aux modules que
vous chargez.
88..44..
LLeess ffoorrmmaattss bbiinnaaiirreess
Les formats binaires sont g�r�s de la m�me fa�on. A chaque fois que
vous essayez de lancer un programme que le noyau ne sait pas comment
ex�cuter, kerneld lance une requ�te pour binfmt-xxx, ou xxx est le
nombre d�termin� � partir des tous premiers octets de l'ex�cutable.
Donc la configuration de kerneld pour la gestion du chargement du
module binfmt_aout pour les ex�cutable ZMAGIC (a.out) est :
alias binfmt-267 binfmt_aout
vu que le nombre magique pour les fichiers ZMAGIC est 267 (voir
/etc/magic). Si vous regardez /etc/magic, vous verrez le nombre 0413,
ceci parce que ce fichier utilise des nombres octaux alors que kerneld
utilise des d�cimaux ( 413 en octal correspond � 267 en d�cimal ). Il
y a en r�alit� trois variantes des ex�cutables a.out peu diff�rentes
(NMAGIC, QMAGIC et ZMAGIC). Pour un support total du format a.out,
vous devez avoir :
alias binfmt-264 binfmt_aout # pure executable (NMAGIC)
alias binfmt-267 binfmt_aout # demand-paged executable (ZMAGIC)
alias binfmt-204 binfmt_aout # demand-paged executable (QMAGIC)
Les formats binaires a.out, Jave et iBCS sont reconnus automatiquement
par kerneld sans la moindre configuration.
88..55..
LLeess ddiisscciipplliinneess ddee lliiggnnee ((sslliipp,, ccsslliipp eett pppppp))
Les disciplines de lignes sont demand�es avec _t_y_y_-_l_d_i_s_c_-_x o� _x est
g�n�ralement 1 (pour SLIP) ou 3 (pour PPP). Ces deux sont reconnus
automatiquement par kerneld.
Concernant PPP, si vous voulez que kerneld charge le module de
compression de donn�es pour PPP bsd_comp, vous devez ajouter les deux
lignes suivantes au fichier /etc/conf.modules :
alias tty-ldisc-3 bsd_comp
alias ppp0 bsd_comp
88..66..
LLeess ffaammiilllleess ddee pprroottooccoolleess rr��sseeaauu ((IIPPXX,, AApppplleeTTaallkk,, AAXX..2255))
Certains protocoles r�seau peuvent �tre aussi charg�s sous la forme de
modules. Le noyau demande � kerneld une famille de protocole (par
exemple IPX) avec une requ�te pour _n_e_t_-_p_f_-_X o� _X est un nombre
indiquant la famille voulue. Par exemple, _n_e_t_p_f_-_3 correspond � AX.25,
_n_e_t_-_p_f_-_4 � IPX et _n_e_t_-_p_f_-_5 � AppleTalk. (Ces nombres sont d�termin�s
par les macros AF_AX25, AF_IPX etc., que l'on trouve dans le fichier
source include/linux/socket.h. Donc, pour charger automatiquement le
module IPX, vous devrez ajouter une entr�e dans /etc/conf.modules :
alias net-pf-4 ipx
Consultez �galement la section traitant des probl�mes courants pour
�viter des messages d'avertissment lors de l'amor�age relatifs � des
familles de protocoles ind�finies.
88..77..
LLeess ssyysstt��mmeess ddee ffiicchhiieerrss
Les requ�tes soumises � kerneld pour les syst�mes de fichiers sont
simplement constitu�es par le type du syst�me de fichiers. Un usage
courant est de charger le module _i_s_o_f_s pour les syst�mes de fichiers
des CD-ROM, c'est-�-dire les syst�mes de fichiers de type _i_s_o_9_6_6_0 :
alias iso9660 isofs
99..
PP��rriipphh��rriiqquueess ddeemmaannddaanntt uunnee ccoonnffiigguurraattiioonn sspp��cciiaallee
Certains p�riph�riques demandent un peu plus de configuration que le
simple alias d'un p�riph�rique et d'un module.
� les p�riph�riques de type caract�re de num�ro majeur 10 : divers
p�riph�riques ;
� les p�riph�riques SCSI :
� les p�riph�riques qui demandent une initialisation sp�ciale.
99..11..
cchhaarr--mmaajjoorr--1100 :: ssoouurriiss,, wwaattcchhddooggss,, eett rraannddoomm
Les p�riph�riques sont habituellement identifi�s par leur nombre
majeur, par exemple 27 pour ftape. Toutefois, si vous regardez les
entr�es de /dev pour le nombre majeur 10, vous verrez un certain
nombre de p�riph�riques tr�s diff�rents. Parmi ceux-ci :
� des souris de toutes sortes (souris bus, PS/2,...) ;
� les chiens de garde (watchdog) ;
� le p�riph�rique noyau _r_a_n_d_o_m ;
� l'interface APM (Advanced Power Management).
De fa�on �vidente, ces p�riph�riques sont contr�l�s par diff�rents
modules et non un seul. Pour cela, kerneld utilise le nombre majeur et
le nombre mineur :
alias char-major-10-1 psaux # For PS/2 mouse
alias char-major-10-130 wdt # For WDT watchdog
Vous avez besoin d'un version du noyau 1.3.82 ou sup�rieure pour
l'utiliser. Les versions plus anciennes ne passaient pas le nombre
mineur � kerneld, ce qui ne permettait pas � kerneld de savoir quel
module il fallait charger.
99..22.. ssccssii__hhoossttaaddaapptteerr
CChhaarrggeerr lleess ggeessttiioonnnnaaiirreess SSCCSSII :: ll''eennttrr��ee
Les gestionnaires de p�riph�riques SCSI sont constitu�s d'un
adaptateur pour la carte SCSI (par exemple pour une Adaptec 1542) et
d'un gestionnaire pour le type de p�riph�rique SCSI que vous utilisez,
comme un disque dur, un lecteur de CD-ROM ou un lecteur de cartouche.
Tous peuvent �tre charg�s sous forme de modules. Cependant, lorsque
vous voulez acc�der � un lecteur de CD-ROM connect� � une carte
Adaptec, le noyau et kerneld savent seulement qu'il faut charger le
module _s_r___m_o_d pour g�rer le CD-ROM SCSI, mais ils ignorent � quel
contr�leur SCSI il est connect�, donc quel module charger pour g�rer
le contr�leur SCSI.
Pour r�soudre cela, vous pouvez ajouter une entr�e pour le module du
contr�leur SCSI au fichier /etc/conf.modules qui indiquera � kerneld
quel module charger parmi toutes les possibilit�s :
alias scd0 sr_mod # sr_mod pour SCSI CD-ROM's ...
alias scsi_hostadapter aha1542 # ... doit utiliser le pilote
# Adaptec 1542
Cela ne fonctionne que pour un noyau de version 1.3.82 ou sup�rieure.
Cela marche si vous n'avez qu'une carte SCSI, sinon, c'est un peu plus
difficile. En g�n�ral, vous ne pouvez pas avoir kerneld qui charge le
pilote d'une carte SCSI si le gestionnaire d'un autre contr�leur est
d�j� install�. Vous devez soit construire un noyau avec les deux
gestionnaires (ils ne sont plus sous forme de modules) soit les
charger manuellement.
Il y a une possibilit� pour que kerneldcharge plusieurs gestionnaires
SCSI. James Tsiao a eu cette id�e : vous pouvez avoir kerneld qui
charge le second controleur SCSI en mettant la d�pendance dans le
fichier modules.dep � la main. Vous avez juste besoin d'une entr�e
comme :
/lib/modules/2.0.30/scsi/st.o: /lib/modules/2.0.30/scsi/aha1542.o
Pour que kerneldcharge le module _a_h_a_1_5_4_2_._o avant qu'il charge _s_t_._o. Ma
machine � la maison est configur�e exactement comme au-dessus et fonc�
tionne tr�s bien pour tous les p�riph�rique de mon second contr�leur
SCSI, incluant lecteurs de cartouche, CD-ROM et des p�riph�riques SCSI
g�n�riques. L'inconv�niant est que depmod -a ne peut pas d�tecter ces
d�pendances. Donc, l'utilisateur doit les ajouter � la main et ne pas
lancer depmod -a au d�marrage. Une fois configur�, kerneld chargera
automatiquement _a_h_a_1_5_4_2_._o comme il faut.
Vous devez �tre conscient que cette technique ne marche que si vous
avez diff�rents types de p�riph�riques sur deux contr�leurs. Par
exemple les disques durs sur un contr�leur et les lecteurs de CD-ROM,
de cartouches et les p�riph�riques g�n�riques sur l'autres.
99..33.. ppoosstt--iinnssttaallll
QQuuaanndd cchhaarrggeerr uunn mmoodduullee nn''eesstt ppaass ssuuffffiissaanntt :: ll''eennttrr��ee
Parfois, charger un module n'est pas suffisant pour qu'il fonctionne
correctement. Par exemple, si vous avez compil� le pilote de votre
carte son en tant que module, il est souvent pratique de le r�gler
pour un certain volume sonore. Le seul probl�me, c'est que cette
initialisation dispara�t lors du chargement suivant du module. Voici
un truc de Ben Galliart
[email protected] :
Il faut installer le paquetage setmix-0.1
(
ftp://sunsite.unc.edu/pub/Linux/apps/sound/mixers/setmix-0.1.tar.gz)
et ensuite ajouter les lignes suivantes au fichier /etc/conf.modules :
post-install sound /usr/local/bin/setmix -f /etc/volume.conf
Ainsi kerneld ex�cute la commande indiqu�e par l'entr�e post-install
sound apr�s que le module son ait �t� charg�. Donc, le module son est
configur� par la commande /usr/local/bin/setmix -f /etc/volume.conf.
Cela peut s'av�rer tr�s utile pour d'autres modules, par exemple le
module _l_p peut �tre configur� par le programme tunelp en ajoutant :
post-install lp tunelp <options>
Pour que kerneldreconnaisse ces options, vous devez avoir une version
1.3.69 de kerneld ou sup�rieure.
Note : une version pr�c�dente de ce mini-HOWTO mentionne une option
pre-remove qui peut �tre utilis�e pour exc�cuter une commande juste
avant que kerneld ne d�charge un module. Toutefois, cela n'a jamais
march� et son utilisation est d�conseill�e. Heureusement, cette
options disparaitra dans une future version de kerneld. L'ensemble des
op�rations d'initialisation des modules est en cours de modification
en ce moment, et peut diff�rer sur votre syst�me au moment o� vous
lirez ceci.
1100..
EEssppiioonnnneerr kkeerrnneelldd
Si vous avez tout essay� et que vous ne comprenez pas ce que le noyau
demande � kerneld, il y a une solution pour voir les requ�tes que
re�oit kerneld et par cons�quent comprendre ce qu'il faut mettre dans
/etc/conf.modules. Pour cela, il faut utiliser l'utilitaire kdstat.
Ce petit programme est livr� avec le paquetage modules, mais il n'est
ni compil�, ni install� par d�faut. Pour le compiler :
cd /usr/src/modules-2.0.0/kerneld
make kdstat
Ensuite, pour que kerneld affiche les informations sur ce qu'il est en
train de faire, il faut lancer :
kdstat debug
et kerneld commencera � envoyer des messages � la console sur son
activit�. Si vous essayez de lancer la commande que vous voulez
utiliser, vous verrez les requ�tes adress�es � kerneld. Elles peuvent
�tre copi�es dans le fichier /etc/conf.modules et mises en alias du
module demand� pour r�aliser la t�che.
Pour arr�ter le debuggage, lancez :
/sbin/kdstat nodebug
1111..
UUttiilliissaattiioonnss sspp��cciiaalleess ddee kkeerrnneelldd
Je savais bien que vous me demanderiez comment configurer le module
d'�conomiseur d'�cran...
Le r�pertoire kerneld/GOODIES dans le paquetage modules a un certain
nombre de patches noyau pour la gestion de l'�conomiseur d'�cran ainsi
que le beep de la console par kerneld. Ils ne font pas partie du noyau
officiel. Vous devrez donc installer les patches noyau et le
recompiler.
Pour installer un patch, utilisez la commande ``patch'' :
cd /usr/src/linux
patch -s -p1 </usr/src/modules-2.0.0/kerneld/GOODIES/blanker_patch
Ensuite recompilez et installez le nouveau noyau.
Quand il sera temps de lancer l'�conomiseur d'�cran, kerneld ex�cutera
la commande /sbin/screenblanker (il peut s'agir d'un script shell qui
lance votre �conomiseur d'�cran favorixt.
Quand le noyau veut l'arr�ter, il envoie un signal SIGQUIT au
processus ex�cutant /sbin/screenblanker. Votre script shell ou
�conomiseur d'�cran doit le capter et se terminer. Pensez � restaurer
l'�cran dans le mode texte initial !
1122..
PPrroobbll��mmeess ccoouurraannttss
1122..11.. mmoodduullee ffoorr nneett--ppff--XX'''' qquuaanndd jj''eexxcc��ccuuttee iiffccoonnffiigg ??
PPoouurrqquuooii eesstt--ccee qquuee jj''aaii ddeess mmeessssaaggeess ````CCaannnnoott llooccaattee
Le code du noyau a �t� modifi� pour permettre le chargement des
familles de protocoles r�seau (comme IPX, AX25 et AppelTalk) comme
modules vers la version 1.3.80. Cela a eu pour effet d'ajouter une
nouvelle requ�te pour kerneld, _n_e_t_-_p_f_-_X, o� _X est un nombre
identifiant le protocole (voir le fichier
/usr/src/linux/include/linux/socket.h pour la signification de ces
nombres).
Malheureusement, ifconfig envoie ces messages, donc un bon nombre de
personnes recoivent ces messages lors le syst�me se lance et qu'il
ex�cute ifconfig pour initialiser le p�riph�rique loopback. Ces
messages sont sans danger et vous pouvez les retirer en ajoutant les
lignes suivantes :
alias net-pf-3 off # oubliez AX.25
alias net-pf-4 off # oubliez IPX
aliad net-pf-5 off # oubliez AppleTalk
au fichier /etc/conf.modules. Biens�r, si vous utilisez IPX comme mod�
ule, n'ajoutez pas la ligne qui retire IPX.
1122..22.. qquuaanndd jj''aaccttiivvee mmaa ccoonnnneexxiioonn PPPPPP
AApprr��ss vvooiirr llaanncceerr kkeerrnneelldd ,, mmoonn ssyysstt��mmee rraalleennttiitt
Il y a bon nombre de messages � ce sujet. Il semble qu'il y ait une
malheureuse interaction entre kerneld et le script tkPPP qui est
utilis� sur certains syst�mes pour configurer et surveiller la
connexion PPP. Le script ex�cute apparemment des boucles quand il
lance ifconfig. Celui-ci d�clenche kerneld pour rechercher les
modules _n_e_t_-_p_f_-_X (voir ci-dessous), ce qui provoque une surcharge du
syst�me et l'envoi possible de messages ``Cannot locate module for
net-pf-X''. Il n'y a pas d'autres solutions que de ne pas utiliser
tkPPP ou de changer sa fa�on de surveiller la connexion.
1122..33..
kkeerrnneelldd nnee cchhaarrggee ppaass mmoonn ggeessttiioonnnnaaiirree SSCCSSII
Ajoutez une entr�e pour la carte SCSI au fichier /etc/conf.modules.
Regardez la description de l'entr�e scsi_hostadapter plus haut.
1122..44.. nn''eesstt ppaass dd��ffiinnii
mmooddpprroobbee ssee ppllaaiinntt qquuee ggcccc22__ccoommppiilleedd
Ceci est une erreur dans module-utilities qui ne se voit qu'avec
binutils 2.6.0.9 ou sup�rieur et elle est aussi document�e dans les
notes de mises � jour du paquetage binutils. Lisez-le donc ou mettez �
jour le paquetage des modules par un qui corrige ce probl�me, par
exemple le modules-2.0.0.
1122..55..
LLee vvoolluummee ddee mmaa ccaarrttee ssoonn nn''eesstt ppaass iinniittiiaalliiss�� eettcc..
Les options de configuration d'un modules sont stock�es dans le module
lui-m�me quand il est charg�. Donc, quand kerneld d�charge un module,
la configuration que vous aviez faite est perdue et la prochaine fois
que le module sera charg�, il h�ritera de la configuration par d�faut.
Vous pouvez indiquer � kerneld de configurer un module en ex�cutant un
programme apr�s son chargement automatique. Voir la section sur
l'entr�e post-install.
1122..66.. ppeeuutt--iill lleess cchhaarrggeerr ??
DDOOSSEEMMUU aa bbeessooiinn ddee mmoodduulleess,, ccoommmmeenntt kkeerrnneelldd
Vous ne pouvez pas. Aucune des versions de dosemu (officielles ou de
d�veloppement) ne g�rent le chargement des modules � travers kerneld.
Cependant, if vous avez un noyau 2.0.26 ou sup�rieur, vous n'avez pas
besoin de modules dosemu particuliers. Installez juste dosemu 0.66.1.
1122..77.. oouutt,, mmeessssaaggee ffaaiilleedd'''' ??
PPoouurrqquuooii aaii--jjee ddeess mmeessssaaggeess ````OOuucchh,, kkeerrnneelldd ttiimmee
Quand le noyau envoit une requ�te � kerneld, il s'attend � recevoir un
acquittement dans un d�lai d'une seconde. Si kerneld n'envoie pas cet
acquittement, ce message est diffus�. La requ�te est retransmise et
peut �ventuellement r�ussir
Cela arrive couramment sur des syst�mes lourdement charg�s. kerneld
�tant un processus en mode utilisateur, il est ordonnanc� comme tout
processus du syst�me. Sous de fortes charges, il peut ne pas
s'ex�cuter pour envoyer l'acquittement avant l'expiration du d�lai.
Si cela se produit quand la charge est faible, essayez de red�marrer
kerneld. Tuez le processus kerneld et red�marrez-le avec la commande
/usr/sbin/kerneld. Si le probl�me persiste, vous devrez envoyer un
message d'erreur �
[email protected] mais, ss''iill vvoouuss ppllaa��tt
soyez s�r que votre version du noyau et de kerneld soient � jour avant
d'envoyer un message sur ce probl�me.
1122..88.. llee mmoodduullee dduu ssyysstt��mmee ddee ffiicchhiieerr
mmoouunntt nn''aatttteenndd ppaass qquuee kkeerrnneelldd cchhaarrggee
Il existe un certain nombre de messages sur le fait que la commande
mount(8) n'attende pas que kerneld ait charg� le module du syst�me de
fichiers. lsmod montre que kerneld a charg� le module et si vous
r�p�tez la commande mount imm�diatement, le montage sera r�ussi. Cela
semble �tre une erreur dans le paquetage modules version 1.3.69f qui
affecte des utilisateurs de Debian (elle peut �tre corrig�e en
installant la derni�re version de ce paquetage).
1122..99.. nnccppffss
kkeerrnneelldd nn''aarrrriivvee ppaass �� cchhaarrggeerr llee mmoodduullee
Vous devez compiler les utilitaires ncpfs avec l'option
-DHAVE_KERNELD. Voir le fichier Makefile de ncpfs.
1122..1100.. ssmmbbffss
kkeerrnneelldd nn''aarrrriivvee ppaass �� cchhaarrggeerr llee mmoodduullee
Vous utilisez une vieille version des utilitaires smbmount. Prenez la
derni�re version (0.10 ou sup�rieure) �
ftp://tsx-11.mit.edu/pub/linux/filesystems/smbfs/.
1122..1111.. mmoonn ssyysstt��mmee nnee ppeeuutt pplluuss dd��mmaarrrreerr :: kkeerrnneelldd nn''aarrrriivvee ppaass ��
cchhaarrggeerr llee mmoodduullee dduu ssyysstt��mmee ddee ffiicchhiieerr rraacciinnee..
JJ''aaii ttoouutt rreeccoommppiill�� ssoouuss ffoorrmmee ddee mmoodduulleess eett mmaaiinntteennaanntt,,
Vous ne pouvez pas ttoouutt mettre sous forme de modules : le noyau doit
avoir assez de gestionnaires pour monter votre syst�me de fichiers
racine et ex�cuter les programmes n�cessaires au d�marrage de kerneld.
Donc vous ne pouvez pas mettre sous forme de modules :
� le gestionnaire de votre disque dur o� r�side votre syst�me de
fichiers racine ;
� le gestionnaire du syst�me de fichiers racine ;
� le chargeur du format de binaire pour init, kerneld et d'autres
prgrammes.
En fait ce n'est pas vrai. Les derni�res version 1.3.x et toutes les
2.x du noyau, supportent l'utilisation d'un disque ram qui est charg�
par lilo ou loadlin et il est possible de charger des modules de ce
``disque'' tr�s t�t dans le processus de d�marrage. La marche � suivre
est d�crite dans le fichier Documentation/initrd.txt dans
l'arborescence des sources du noyau.
1122..1122.. mmaacchhiinnee :: iill vveeuutt lliibbggddbbmm
kkeerrnneelldd nnee ssee llaannccee ppaass lloorrss ddee ll''aammoorr��aaggee ddee llaa
Les nouvelles versions de kerneld ont besoin de la librairie GNU dbm,
_l_i_b_g_d_b_m_._s_o pour fonctionner. La plupart des installations ont ce
fichier dans /usr/lib mais vous avez probablement lanc� kerneld avant
que le syst�me de fichiers de /usr ne soit mont�. Un des symptomes de
ceci est que kerneld ne marche pas lors du d�marrage du syst�me et de
l'ex�cution des script rc, mais fonctionne parfaitement si vous le
lancez � la main apr�s. La solution est soit de d�placer le lancement
de kerneld apr�s que /usr ne soit mont�, soit de mettre la librairie
_g_d_b_m dans le syst�me de fichiers racine (par exemple dans /lib).
1122..1133.. mmoonn nnooyyaauu ssaannss llaa ggeessttiioonn ddee xxxxxx !!
JJ''aaii ````CCaannnnoott llooaadd mmoodduullee xxxxxx'''' mmaaiiss jj''aaii rreeccoonnffiigguurr��
L'installation de la Slackware (et peut-�tre d'autres) cr�e un fichier
/etc/rc.d/rc.modules par d�faut qui fait un modprobe explicite sur une
grande vari�t� de modules. Quels modules exactement sont
``modprob�s'' ?, cela d�pend de la configuration initiale du noyau.
Vous avez probablement reconfigur� votre noyau pour enlever un ou
plusieurs modules qui est modprob� dans rc.modules, d'o� les messages
d'erreur. Mettez � jour votre fichier rc.modules en commentant tout
module que vous n'utilisez plus, ou enlevez enti�rement ce fichier et
laissez kerneld charger les modules quand on en a besoin.
1122..1144.. ddeess mmeessssaaggeess ssuurr ddeess ssyymmbboolleess nnoonn rr��ssoolluuss aauu dd��mmaarrrraaggee
JJ''aaii rreeccoommppiill�� mmoonn nnooyyaauu eett lleess mmoodduulleess eett jj''aaii ttoouujjoouurrss
Vous avez probablement reconfigur� et recompil� votre noyau et exclu
des modules. Vous avez d'anciens modules que vous n'utilisez pas dans
le r�pertoire /lib/modules. La solution la plus simple est d'effacer
le r�pertoire /lib/modules/x.y.z et de retaper make modules_install
depuis le r�pertoire des sources du noyau. Notez que ce probl�me
arrive seulement quand vous reconfigurez le noyau sans changer de
version. Si vous voyez cette erreur quand vous passer � une nouvelle
version du noyau, vous avez un autre probl�me.
1122..1155..
JJ''aaii iinnssttaallll�� LLiinnuuxx 22..11 eett aauuccuunn mmoodduullee nnee ssee cchhaarrggee
Linux 2.1 est un noyau de d�veloppement. Pour cette raison, il se peut
que certaines choses ne fonctionnent pas de temps en temps. La fa�on
dont les modules sont manipul�s a chang� de fa�on significative.
Richard Henderson a la charge du d�veloppement du noyau des modules.
En bref, si vous voulez utiliser les modules avec un noyau 2.1, vous
devez :
� lire le fichier Documentation/Changes et voir quels paquetages
doivent �tre mis � jour sur votre syst�me ;
� utiliser le dernier paquetage modutils, disponible sur
ftp://ftp.redhat.com/pub/alphabits/ ou sur le site mirroir
ftp://tsx-11.mit.edu/pub/linux/packages/alphabits/
Je recommande le noyau 2.1.29, si vous voulez utiliser les modules
avec un noyau 2.1.
1122..1166..
QQuuee ddiirree dd''uunn rr��sseeaauu uuttiilliissaanntt llaa lliiggnnee tt��ll��pphhoonniiqquuee ??
kerneld peut � l'origine g�rer l'�tablissement de connexions r�seau �
travers le r�seau t�l�phonique � la demande : essayer d'envoyer des
paquets � un r�seau sans �tre connect�, peut entra�ner kerneld �
lancer le script /sbin/request_route pour initialiser une connexion
PPP ou SLIP.
Il s'est av�r� que c'�tait une mauvaise id�e. Alan Cox, bien connu
pour ses travaux sur le r�seau dans Linux a �crit sur la liste de
diffusion linux-kernel que :
``Le truc request-route est obsol�te, cass� et non requis... Il est
aussi enlev� des versions 2.1.x.''
A la place d'utiliser le script request-route et kerneld, je vous
encourage vivement � installer le paquetage diald d'Eric Schenk,
disponible � l'url
http://www.dna.lth.se/~erics/diald.html
1133..
CCooppyyrriigghhtt
Ce document est copyright� (c) Henrik Storner, 1996, 1997.
Sauf contre-ordre, les documents HowTo pour Linux sont copyright�s pas
leurs auteurs respectifs. Ces documents peuvent �tre reprodruits et
distribu�s dans leur ensemble ou en partie, sur n'importe quel type de
support physique ou �lectronique, du moment que cette notice l�gale se
trouve sur toutes les copies. Les redistributions commerciales sont
autoris�es et encourag�es. Toutefois, l'auteur aimerait bien �tre
avis� de toute distribution de ce genre.
Toute traduction, travail d�riv� ou compl�mentaire incluant tout ou
partie de document HowTo Linux doit �tre couvert par ce copyriht. De
cette mani�re, vous ne pouvez cr�er un document qui s'inspire de ce
document et imposer des restrictions suppl�mentaires � sa diffusion.
Des exceptions � ces conditions peuvent �tre donn�es sous certaines
conditions. Contactez le coordonnateur des HowTo Linux � l'adresse
donn�e un peu plus bas.
En r�sum�, nous souhaitons promouvoir la diffusion de ces informations
� travers un maximum de moyens de communication. Toutefois, nous
souhaitions conserver un copyright sur les documents HowTo et nous
souhaitons �tre avertis de leur redistribution.
Si vous avez des questions, vous pouvez contacter Greg Hankins, le
coordonnateur des HowTo Linux par courrier �lectronique �
[email protected]