Le noyau (kernel, en anglais), c'est le coeur du système d'exploitation. C'est lui qui sait utiliser les périphériques comme le disque, le clavier, la souris, l'écran, la carte réseau... Et surtout, il sait exécuter d'autres programmes. C'est d'ailleurs, en gros, son seul intérêt. Sans noyau, rien ne fonctionne. Pas que ça plante ou quelque chose du genre, ça ne démarre même pas. Comment démarrer si personne ne te fait démarrer ?
D'ailleurs, il faut signaler que, stricto sensu, l'expression "Linux" ne désigne que le noyau de notre système d'exploitation favori (le reste étant tous les programmes que vous connaissez, et tous les autres). On peut dire aussi que le noyau Linux n'est pas le seul existant. Il y a bien sûr tous les noyaux commerciaux, mais il ne faut pas oublier le Hurd, qui n'est rien d'autre qu'un concurrent du noyau Linux, tout aussi libre que lui. Pourquoi dupliquer le travail, me demandez vous ? Parce que le noyau Linux et le Hurd n'ont pas vraiment de points communs, à part le fait qu'ils font la même chose. Là où Linux est un gros truc un peu mastodonte, le Hurd ressemble plus à une tribu de petits trucs qui bossent ensemble. Forcément, ça va pas fonctionner pareil. Comme le Hurd est pour l'instant réservé à l'élite, aux gens prêts à réécrire des bouts de programmes compliqués si ça ne marche pas, nous n'en parlerons pas plus ici.
Revenons donc au noyau Linux. La plus grande question à son sujet est « Comment le compiler ». Et avant ça, « Pourquoi le compiler ? ». C'est que ce brave noyau est capable de faire des choses magnifiques. Il peut faire fonctionner des listes de composants matériels toujours plus grandes. Et forcément, personne n'a besoin de toutes les fonctionnalités. En plus, il est possible de l'utiliser sur différents processeurs. Il est donc clair que chacun aura un jour ou l'autre besoin d'un truc que le noyau sait faire sans problème, mais qui implique de recompiler le noyau pour activer une option. Le meilleur exemple, c'est sans doute le son. Pas moyen d'avoir du son sous Debian sans recompilation du noyau.
Un autre point, c'est que compiler le noyau, c'est un peu lourd. Ça veut dire faire quelques réglages, lancer le compilateur un long moment (grosso modo une demi heure sur mon pentium), et surtout, booter la machine pour tester les options. C'est pas toujours pratique. Donc on a inventé les modules. C'est des petits bouts du noyau, qui savent faire un truc précis. Toujours avec notre exemple, faire du son sur tel ou tel carte. Donc le principe, c'est qu'il faut charger le bon module, doté des bonnes options pour faire faire du son (ou d'autres choses comparables) au noyau. Et l'intérêt principal, c'est que si on s'est trompé dans les options passées au module, pas besoin de recompiler pour réessayer. Il suffit de le recharger, avec d'autres options... C'est beau, la technologie !
Il y a deux méthodes principales : on peut utiliser la méthode standard sous
Linux (make xconfig, make dep et ainsi de suite), ou
on peut préférer utiliser la méthode Debian. Elle passe par l'utilisation du
paquet kernel-package
qui fournit la commande
make-kpkg
(make kernel package). L'intérêt de cette deuxième
méthode (outre celui d'être particulière à Debian :), c'est que l'on obtient
des paquets classiques Debian, que l'on peut installer avec dpkg, et ainsi de
suite. Ainsi, si on fait des essais, il peut être pratique de conserver le
paquet du noyau « qui va bien », pour restaurer la configuration précédente.
Quoi qu'il en soit, il faudra lire attentivement la documentation présente dans
/usr/src/kernel-source-x.x.x/Documentation
au moins pour
configurer le noyau (et compiler si on choisit la méthode standard sous Linux).
Et évidemment, la documentation de make-kpkg
, si on décide de s'en
servir (ce que je recommande).
Si tu avais compilé auparavant le support pour les modules dans ton kernel (si
ce n'est pas le cas, tu ne couperas pas à la réinstallation intégrale), il te
suffit de faire un make xconfig
, sélectionner le module visé,
faire un make dep clean modules
et ensuite copier le module qui se
trouvera dans
/usr/src/kernel-source-2.2.x/modules/catégorie/module.o
dans
/lib/modules/2.2.x/catégorie
puis de lancer un depmod
-a
.
Évidemment une telle manipulation te fera perdre tout le bénéfice du paquet
make-kpkg
si tu l'utilisais. C'est à toi de voir.
FIXME: La personne à l'origine de la question a répondu : « C'est ce que j'ai fait, et j'ai maintenant le module minix, par contre le System.map n'a pas été refait et j'ai donc des plaintes par-ci par-là quand je lance top ou ps.... »
Deux solutions :
/etc/modules
(histoire
d'utiliser kerneld, un programme qui charge les modules à la demande)
/etc/modules
Voici une méthode empirique, mais efficace : recompiler le noyau en se basant sur un source fraîchement décompressé. C'est pas plus dur que cela :)
La méthode standard sous Linux, c'est de les mettre dans
/etc/modules.conf
, mais ce n'est pas comme ça que l'on fait sous
Debian : en effet, un paquet ne peut pas facilement s'installer en modifiant ce
fichier, et surtout se désinstaller en effaçant ses modifications. Il a donc
été décidé de créer un répertoire /etc/modutils
, où on place
différents fichiers de configuration pour les noyaux. Et il y a aussi un
utilitaire, update-modules
, qui génère le fichier
/etc/modules.conf
à partir des fichiers dont je viens de parler.
Par exemple, j'ai sur ma machine le fichier
/etc/modutils/carte_son
suivant :
options cs4232 io=0x220 irq=5 dma=1 dma2=3 options opl3 io=0x388 options mpu401 irq=9 io=0x330
Ben si, bien sûr. Ce que je viens de dire, c'est pour ceux qui aiment mettre
les mains dans le cambouis, pour comprendre. Pour les autres, ruez-vous sur le
paquet modconf
. D'ailleurs, vous le connaissez déjà, c'est lui
qui vous a aidé à installer les noyaux lors de l'installation initiale de
Debian !
La FAQ de la liste debian-user-french@lists.debian.org
15 avril 2002debian-user-french@lists.debian.org
mquinson@ens-lyon.fr
thierry.laronde@polynum.com
C.Martin@ipnl.in2p3.fr
Frederic.Petit@univ-mlv.fr