Page suivante Page précédente Table des matières

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 hardware 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 quelquonque. Cette tâche du noyau est appelée "scheduling" (planification).

Si un programme ne fait rien, alors il n'a pas besoin d'être en RAM. Même un programme qui fait quelque chose peut avoir certaines parties inactives, qui donc n'ont pas besoin d'être en RAM. L'espace adressable est divisé en pages. Le noyau garde une trace des pages les plus utilisées. Les pages qui ne sont pas autant 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 beaucoup de code spécifique pour converser avec l'électronique de tout type, et les présente d'une façon propre et uniforme aux programmes applicatifs.

Le noyau prend aussi en charge la gestion des fichiers, les communications interprocessus, et beaucoup 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/ (ou là ou se trouvent les sources de votre noyau Linux). Vous pouvez réinitialiser le mode vidéo par défaut, la racine du système de fichiers, le périphérique de swap et la taille du disque virtuel (RAM disk) en utilisant rdev. 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 (prompt) 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é par le logger (le journal système, qui enregistre les messages de service) du noyau pour déterminer les noms des modules générant des 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 (Help) 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 qui ne sont pas nécessaires.

Lisez ``The Linux Kernel'' (URL plus bas) et ce faisant, trouvez les parties du source 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 devient 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 quelque chose du même genre.

4.3 Plus d'informations


Page suivante Page précédente Table des matières