4. Le noyau Linux

Le noyau (kernel) fait vraiment beaucoup de choses. Je pense qu'une bonne manière de résumer tout cela est de dire qu'il fait faire au matériel ce que les programmes veulent, proprement et efficacement.

Le processeur ne peut exécuter qu'une seule instruction à la fois, mais Linux semble faire tourner beaucoup de choses simultanément. Le noyau accomplit cela en sautant de tâche en tâche très rapidement. Il fait le meilleur usage possible du processeur en gardant trace des processus qui sont prêts à être exécutés et de ceux qui attendent quelque chose comme un enregistrement en provenance d'un disque, ou une saisie clavier quelconque. Cette tâche du noyau est appelée ordonnancement.

Si un programme ne fait rien, alors il n'a pas besoin d'être conservé en mémoire (RAM). Même un programme qui travaille peut avoir certaines parties inactives, qui n'ont donc pas besoin d'être en mémoire. L'espace adressable est divisé en pages. Le noyau garde une trace des pages les plus utilisées. Les pages qui sont moins souvent utilisées peuvent être déplacées dans la partition d'échange (swap). Lorsqu'une page est à nouveau sollicitée, une autre page inutilisée est retirée de l'espace adressable pour lui faire de la place. Cela s'appelle la gestion de la mémoire virtuelle.

Si vous avez un jour compilé votre propre noyau, vous avez remarqué qu'il y a un grand nombre d'options pour des périphériques spécifiques. Le noyau contient une grande quantité de code spécifique pour interagir avec tous types de matériels, et pouvoir les présenter d'une façon propre et uniforme aux programmes.

Le noyau prend aussi en charge la gestion des fichiers, les communications entre processus, et une grande partie du travail concernant le réseau.

Une fois le noyau chargé, la première chose qu'il fait est de rechercher un programme appelé init et l'exécuter.

4.1. Configuration

La majorité de la configuration du noyau est effectuée quand vous le construisez, en utilisant make menuconfig, ou make xconfig dans le répertoire /usr/src/linux/ (là ou se trouvent les sources de votre noyau Linux). La commande rdev vous permet réinitialiser le mode vidéo par défaut, la racine du système de fichiers, le périphérique d'échange et la taille du disque virtuel (disque RAM). Ces paramètres ainsi que d'autres peuvent aussi être passés au noyau depuis Lilo. Vous pouvez indiquer à Lilo les paramètres à passer au noyau soit dans lilo.conf, soit à l'invite de Lilo. Par exemple, si vous souhaitiez utiliser hda3 comme racine du système de fichiers plutôt que hda2, vous pourriez taper :

	LILO: linux root=/dev/hda3

Si vous mettez en place un système à partir de ses sources, vous pouvez vous simplifier la vie en créant un noyau « monolithique », c'est-à-dire sans module. Vous n'aurez donc pas à copier ceux-ci sur le système cible.

Note

Le fichier System.map est utilisé lors de l'écriture d'entrées dans le journal système pour déterminer les noms des modules générant les messages. Le programme top utilise également ces informations. Lorsque vous copiez le noyau vers un système cible, copiez aussi System.map.

4.2. Exercices

Réfléchissez à ceci : /dev/hda3 est un type de fichier spécial qui décrit une partition d'un disque dur. Mais il vit sur le système de fichiers comme tous les autres fichiers. Le noyau veut savoir quelle partition monter à la racine - donc il n'a pas encore de système de fichiers. Alors comme peut-il lire /dev/hda3 pour trouver la partition à monter ?

Si vous ne l'avez pas encore fait, compilez votre noyau. Lisez l'aide pour chaque option.

Essayez de voir jusqu'à quel point vous pouvez réduire la taille de votre noyau avant qu'il ne cesse de fonctionner. Vous pouvez apprendre beaucoup en écartant les parties non nécessaires.

Lisez « Le noyau Linux » (url ci-dessous) et ce faisant, trouvez les parties des sources auxquelles il se réfère. Le livre (au moment où j'écris ces lignes) se réfère au noyau version 2.0.33, qui commence à être franchement dépassé. Il pourrait être plus facile de suivre si vous téléchargiez cette ancienne version et y lisiez le source. Il est très excitant de trouver des morceaux de code C appelés « process » et « page ».

Programmez ! Faites des essais ! Voyez si vous pouvez faire cracher au noyau des messages supplémentaires ou quoi que ce soit.

4.3. Aller plus loin