Ceci est une ancienne révision du document !
Table des matières
Le noyau Linux
Que fait le noyau Linux ?
Vous avez probablement entendu des gens parler de compilation du kernel ou de construction du kernel, mais qu'est-ce qu'est un kernel exactement et à quoi sert-il ? Le kernel est le centre de votre ordinateur. C'est la fondation du système d'exploitation tout entier. Le kernel joue le rôle d'un pont entre le matériel et les applications. Cela signifie que le kernel est (généralement) la seule partie logicielle responsable de la gestion des composants matériels de votre ordinateur. C'est le kernel qui ordonne à votre disque dur de rechercher certaines données. C'est le kernel qui ordonne à votre carte réseau d'envoyer des changements rapides de courant. Le kernel est aussi à l'écoute du matériel. Lorsque la carte réseau détecte un ordinateur distant envoyant de l'information, elle renvoie cette information au kernel. Cela fait du kernel le logiciel le plus simple et le plus complexe de votre ordinateur.
Travailler avec les modules
La complexité d'un kernel Linux récent est stupéfiante. Le code source pour le kernel représente environ 400 Mo non compressés. Il y a des milliers de développeurs, de centaines d'options et si tout était activé le noyau représenterait plus de 100 Mo à lui tout seul. Afin de conserver une taille raisonnable (ainsi que la quantité de RAM nécessaire pour le kernel), la plupart des options du kernel sont compilées sous forme de modules. Vous pouvez vous représenter ces modules comme des pilotes de périphériques qui peuvent être insérés ou enlevés du kernel à volonté. En fait, la plupart ne sont pas des pilotes de périphériques, mais correspondent à la prise en charge de choses telles que des protocoles réseaux, de systèmes de sécurité ou même de systèmes de fichiers. En résumé, presque toute partie du kernel Linux peut être compilée en tant que module.
Il est important de comprendre que Slackware gèrera automatiquement le chargement des modules pour vous. Lorsque le système démarre, udevd(8) est lancé et commence à analyser le matériel présent. Pour chaque périphérique découvert, il chargera le module correspondant et créera un nœud dans /dev
. Cela signifie que vous n'aurez pas à charger de modules pour pouvoir utiliser votre ordinateur, sauf cas particulier.
Comment savoir quels modules sont actuellement actifs et comment en ajouter ou en retirer ? Fort heureusement, nous avons une panoplie complète d'outils pour gérer cela. Comme vous avez pu le deviner, l'outil pour lister les modules est lsmod(8).
darkstar:~# lsmod Module Size Used by nls_utf8 1952 1 cifs 240600 2 i915 168584 2 drm 168128 3 i915 i2c_algo_bit 6468 1 i915 tun 12740 1 ... lignes supprimées ...
En plus d'afficher les modules actuellement chargés il affiche la taille de chacun et vous indique quels autres modules l'utilisent.
Il existe deux programmes pour charger des modules : insmod(8) et modprobe(8). Tous deux peuvent charger des modules et signaler toute erreur (comme le fait de charger un module pour un périphérique qui n'est pas présent sur votre système), mais modprobe est souvent préféré car il peut charger toutes les dépendances d'un module. Son utilisation est très simple.
darkstar:~# insmod ext3 darkstar:~# modprobe ext4 darkstar:~# lsmod | grep ext ext4 239928 1 jbd2 59088 1 ext4 crc16 1984 1 ext4 ext3 139408 0 jbd 48520 1 ext3 mbcache 8068 2 ext4,ext3
Supprimer des modules peut être une entreprise risquée, et une fois de plus nous avons deux logiciels pour cela : rmmod(8) et modprobe. Afin de supprimer un module avec modprobe, vous devrez utiliser l'option -r.
darkstar:~# rmmod ext3 darkstar:~# modprobe -r ext4 darkstar:~# lsmod | grep ext
Pourquoi et comment compiler un noyau
La plupart des utilisateurs de Slackware n'auront jamais besoin de compiler un noyau. Le noyau huge (en anglais : “gros”) et le noyau generic (“générique”) contiennent potentiellement tout ce dont vous aurez besoin.
Cependant, certains utilisateurs peuvent avoir besoin de compiler un noyau. Si votre ordinateur dispose de matériel dernier cri, un nouveau noyau peut offrir une meilleur prise en charge de celui-ci. Parfois, un correctif (patch) du noyau peut être disponible pour corriger le problème que vous rencontrez. Dans ces situations, la compilation d'un nouveau noyau probalement justifiée. Les utilisateurs souhaitant simplement utiliser la version la plus à jour ou ceux pensant qu'un noyau personnalisé leur procurera de meilleurs performances peuvent bien sûr le faire, mais il est peu probable qu'ils ressentent une amélioration significative.
Si vous pensez que compiler votre propre noyau est une tâche que vous voulez ou devez effectuer, ce chapitre devrait vous guider pour chacune des différentes étapes. Compiler et installer un noyau n'est pas si difficile, mais il existe un certain nombre d'erreurs que vous pourriez commettre en chemin, et plusieurs peuvent empêcher votre ordinateur de démarrer et générer une certaine frustration.
La première étape est de s'assurer que vous avez le code source du noyau installé sur votre système. The paquet pour le code source du noyau est inclus dans la série “k” de l'installateur Slackware, ou vous pouvez télécharger une autre version depuis http://www.kernel.org/. Traditionellement, les sources du noyau sont situées dans /usr/src/linux
, qui est un lien symbolique pointant vers la version spécifique du noyau utilisé, mais cela n'est en aucun cas gravé dans le marbre. Vous pouvez copier le code source du noyau potentiellement n'importe où sans aucun problème.
darkstar:~# ls -l /usr/src lrwxrwxrwx 1 root root 14 2009-07-22 19:59 linux -> linux-2.6.29.6/ drwxr-xr-x 23 root root 4096 2010-03-17 19:00 linux-2.6.29.6/
L'étape la plus complexe lors de la préparation du noyau est sa configuration. Il existe des centaines d'options, qui pour la plupart peuvent être compilées de manière optionelle sous forme de modules. Cela signifie qu'il existe des centaines de façons de compiler un noyau. Heureusement, il existe quelques astuces utiles qui peuvent vous éviter trop de soucis. Le fichier de configuration du noyau se nomme .config
. Si vous êtes particulièrement audacieux, vous pouvez modifier ce fichier avec votre éditeur de texte, mais je recommande très fortement d'utiliser les outils proposés par le noyau pour modifier .config
.
À moins que vous ne soyez déjà expérimenté avec la configuration du noyau, vous devriez toujours partir sur une base solide et la modifier. Cela vous évitera de passer à côté d'une option importante qui vous obligerait à recommencer encore et encore jusqu'à ce que les choses fonctionnent. Le meilleur des fichiers .config
repose sur celui utilisé par les noyau par défaut de Slackware. Vous pouvez les trouver sur les disques d'installation de Slackware ou dans le répertoire kernels/
de votre mirroir favori.
darkstar:~# mount /mnt/cdrom darkstar:~# cd /mnt/cdrom/kernels darkstar:/mnt/cdrom/kernels# ls VERSIONS.TXT huge.s/ generic.s/ speakup.s/ darkstar:/mnt/cdrom/kernels# ls genric.s System.map.gz bzImage config
Vous pouvez facilement remplacer le fichier .config
proposé par défaut en copiant ou téléchageant le fichier config
pour le noyau que vous souhaitez utiliser. Personellement, j'utilise le noyau generic.s comme base, mais vous pouvez préférer utiliser le fichier de configuration de huge.s. Le noyau générique produit beaucoup de modules et de fait un noyau plus petit, mais il requiert assez souvent l'utilisation d'initrd.
darkstar:/mnt/cdrom/kernels# cp generic.s/config /usr/src/linux/.config
config
dans /usr/src
quelque soit le fichier .config
présent, c'est celui-ci qui sera utilisé.
Si vous souhaitez utiliser la configuration du noyau actuellement en service comme base, vous pouvez le trouver dans /proc/config.gz
. Ce fichier spécial est lié au noyau actif et comporte l'intégralité de sa configuration sous forme compressée et nécessite que votre noyau ait été compilé avec l'option nécessaire pour le créer.
darkstar:~# zcat /proc/config.gz > /usr/src/linux/.config
(À suivre… / To be continued…)
Navigation
Chapitre précédent : Gérer les mises à jour
Sources
- Source originale : http://www.slackbook.org/beta
- Publication initiale d'Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson
- Traduction initiale de escaflown
- Traduction de Ellendhel