Précédent Remonter Suivant
Une erreur à corriger, une suggestion à faire, une contribution à apporter ? N'hésitez-plus ! Just write it!

Chapitre 7  Noyau, modules et Cie...



7.1  Mémo

Quelques infos non essentielles mais toujours bonnes à connaître...
  1. A priori, les noyaux fournis par Debian ne sont pas patchés
  2. Debian fournis des noyaux standards
    
     apt-cache search kernel-image
    
  3. Debian fournis des noyaux non-standards :
    
     apt-cache search kernel-patch
    

7.2  Les bases

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.

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.

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.

Donc le principe, c'est qu'il faut charger le bon module, doté des bonnes options pour faire faire par exemple 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...


7.3  Noyau : Recompilation et installation

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 --help

L'intérêt de cette deuxième méthode c'est que l'on obtient des paquets 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 fournie avec les sources 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.

7.4  Gestion des modules du noyau

Pour que le noyau soit capable de gérer des modules, il est nécessaire qu'il ai été compilé avec l'option « module support » activée. C'est le cas pour les noyaux standards.

Dans la suite, par hypothèse, le noyau intègre la gestion de modules.


7.4.1  Installation sans recompiler le noyau

Pour compiler un module dénommé ... module, il suffit
  1. de faire un make xconfig,
  2. sélectionner le module souhaité,
  3. faire un make dep ; make clean ; make modules
  4. faire un make install_modules
  5. exécuter
    depmod -a

(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.... »

7.4.2  Charger automatiquement au démarrage

Deux solutions :

7.4.3  Forcer le chargement

Est-il possible de forcer le chargement d'un modules au boot ?
  1. Ajouter un script shell /etc/init.d/ mon-module avec l'
    insmod -f
    "qui va bien"
  2. (et éventuellement un rmmod en sortie, cf. /etc/init.d/skeleton ).
  3. Puis un
    update-rc.d
    "qui va bien" encore (probablement un S99) et voilà.

7.4.4  « Unresolved symbols »


Kernel Unresolved symbols

Voici une méthode empirique, mais efficace : recompiler le noyau en se basant sur un source fraîchement décompressé.



(FIXME) Doit y avoir plus subtil...

7.4.5  Où mettre les réglages ?

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

N'y aurait il pas un moyen plus simple de faire tout ça ?

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 .

7.5  Pour en savoir plus...

Consulter également


(QuickRef) Debian et le noyau
http://qref.sourceforge.net/quick/ch-system.fr.html#s-kernel-details


(QuickRef) Le noyau Linux et Debian
http://qref.sourceforge.net/quick/ch-kernel.fr.html


NOYAU Debian et le noyau Linux (Nicolas Boos )
http://nicolaxx.free.fr/docs/noyau/noyau.html


Précédent Remonter Suivant