Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Linux
  3. Le noyau Linux
Extrait - Linux Administration système et exploitation des services réseau (5e édition)
Extraits du livre
Linux Administration système et exploitation des services réseau (5e édition)
1 avis
Revenir à la page d'achat du livre

Le noyau Linux

Le noyau Linux

Ce chapitre traite du noyau, de sa compilation, de la gestion de ses modules ainsi que de son paramétrage dynamique.

1. Les composants du noyau

L’objectif de cette section est de vous apprendre à :

  • mettre en œuvre les composants du noyau nécessaires pour du matériel spécifique, pilotes matériels, ressources et nécessités système. Cela inclut la mise en place de différents types d’images noyau, la compréhension des versions stables et maintenues à long terme du noyau et des patches, ainsi que l’utilisation des modules de noyau.

a. Compétences principales

  • Documentation des versions de noyau 2.6.x, 3.x et 4.x.

b. Éléments mis en œuvre

  • /usr/src/linux/

  • /usr/src/linux/Documentation/

  • zImage

  • Compression xz

2. Compilation du noyau

L’objectif de cette section est de vous apprendre à :

  • configurer un noyau en incluant ou en excluant des fonctionnalités selon les besoins. Cela inclut compiler et recompiler le noyau si nécessaire, mettre à jour et documenter les modifications d’un nouveau noyau, créer une image initrd et installer de nouveaux noyaux.

a. Compétences principales

  • /usr/src/linux/

  • Fichiers Makefile du noyau.

  • Cibles make pour les noyaux 2.6.x, 3.x et 4.x.

  • Personnaliser la configuration du noyau courant.

  • Construire un nouveau noyau et les modules appropriés....

Les composants du noyau

Le noyau Linux est chargé de gérer les ressources matérielles de la machine et de les mettre à la disposition des différents programmes s’exécutant sur cette machine. Parmi ses principales tâches, on peut citer :

  • Gestion du ou des micro-processeurs : il donne accès au(x) processeur(s) aux différents programmes, en fonction de leur priorité, afin que tous puissent y accéder et qu’un programme ne puisse pas monopoliser le ou les processeurs (multitâche préemptif).

  • Gestion des périphériques : en coopération avec les pilotes de périphériques (drivers), il gère les différents périphériques matériels et traite les demandes des programmes qui veulent y accéder.

  • Gestion de la mémoire physique et virtuelle : il détermine le partage de la mémoire entre lui-même et les programmes et gère un mécanisme de mémoire virtuelle, permettant d’allouer davantage de mémoire que la machine n’en possède physiquement.

  • Gestion du stockage : il gère l’ensemble des périphériques de stockage (avec des pilotes de périphériques et des pilotes de systèmes de fichiers) et présente aux programmes une interface d’accès unique, sous forme d’une arborescence de répertoires et de fichiers, construite à partir de différents systèmes de fichiers.

  • Gestion du réseau : il prend en charge la communication sur les réseaux auxquels participe la machine, via les cartes d’interface réseau et leurs pilotes, et permet aux différents programmes d’émettre et de recevoir des messages.

  • Gestion des processus : il assure le chargement, l’exécution, le contrôle et la terminaison des programmes, sous forme de processus, leur permettant de s’exécuter en apparente ou en réelle simultanéité (selon les capacités processeur de la machine). Il gère la sécurité par le contrôle d’accès aux ressources en fonction des habilitations des processus et par l’isolation des zones mémoire qui leur sont allouées.

  • Gestion du contrôle d’accès...

Compilation du noyau

Il est rare d’avoir à compiler une nouvelle version du noyau à partir des fichiers sources. Cela peut même aller à l’encontre du contrat de support de la distribution utilisée.

On peut cependant vouloir modifier des paramètres du noyau, ajouter ou retirer des composants statiques ou des modules dynamiques, pour intégrer de nouveaux types de périphériques, corriger certains problèmes ou optimiser les performances et l’occupation mémoire.

Dans ce cas, la procédure à suivre nécessite plusieurs étapes, la configuration du noyau à générer étant la plus délicate. La compilation effective peut durer plusieurs dizaines de minutes, voire davantage selon le type de processeur et la mémoire disponible. Une fois le nouveau noyau généré, il est impératif de le tester soigneusement avant d’envisager de le passer en production.

1. Téléchargement des sources du noyau

Les fichiers sources du noyau sont disponibles sous deux formes : paquet logiciel ou fichier d’archive.

a. Paquet logiciel

La distribution de la machine cible fournit généralement des paquets logiciels contenant les fichiers sources du noyau supporté par votre version de distribution. Si le paquet logiciel correspond à la version que vous souhaitez compiler, c’est la méthode à privilégier.

Les fichiers sources du noyau seront installés dans un répertoire du répertoire /usr/src/kernels ou dans le répertoire /usr/src/linux*, le nom du répertoire correspondant à la version du noyau.

Distributions de type Red Hat

Le plus souvent, la compilation du noyau est liée à un module du noyau et non au noyau lui-même.

Dans ce cas, les distributions de type Red Hat proposent un paquet logiciel adapté : kernel-devel.

Si vous avez besoin de compiler une version personnalisée du noyau lui-même, il faut utiliser la méthode par fichier archive compressé.

Exemple

Installation du paquet logiciel kernel-devel sur une distribution RHEL 8.5 :

dnf install kernel-devel 
Le paquet kernel-devel-4.18.0-372.19.1.el8_6.x86_64 est déjà installé. 
Dépendances résolues. 
Rien à...

Gestion et dépannage du noyau

Cette partie concerne le suivi et le paramétrage dynamique du noyau et de ses modules dynamiques. Nous étudierons différentes commandes et outils qui permettent de lister, charger et décharger les modules LKM, de visualiser et de modifier dynamiquement les paramètres des modules et du noyau, de fixer ces paramètres pour les appliquer au démarrage du système.

Le service udev et les commandes permettant de suivre l’état des périphériques matériels détectés par le système sont traités dans la section Gestion des disques durs locaux du chapitre Gestion des périphériques de stockage.

1. Gestion des modules de noyau LKM

Les modules de noyau dynamiques (LKM, Loadable Kernel Module), définis à la compilation du noyau, sont gérés automatiquement. Certains, nécessaires au chargement et à l’initialisation du noyau, sont chargés en mémoire via le fichier disque virtuel initramfs. Le noyau charge également systématiquement au démarrage tous les modules spécifiés dans un fichier de configuration.

D’autres modules sont chargés à la demande, la première fois qu’un programme fait un appel système nécessitant leur utilisation. Inversement, il est possible de décharger de la mémoire des modules, s’ils ne sont plus utilisés.

Si une application nécessite le chargement d’un module non pris en charge par le noyau, ce dernier générera une erreur en réponse à sa demande. Pour que l’application puisse fonctionner, il faudra copier le fichier du module sur le système (s’il n’est pas déjà présent), le charger manuellement, puis le configurer en chargement automatique.

Différentes commandes et fichiers de configuration permettent de contrôler le fonctionnement des modules, de gérer leur chargement et leur déchargement, ainsi que leurs paramètres.

a. Emplacement des modules

Les fichiers contenant le code exécutable des modules sont stockés dans l’arborescence sous /lib/modules. Chaque version de noyau installée sur le système a son répertoire de stockage des modules.

Exemple

Version...