Comment compiler le noyau Linux

malekalmorte

Création :

30 octobre 2022

Modification :

Le noyau Linux est la base des systèmes d’exploitation de type Unix.
Le kernel Linux est responsable de la communication entre le matériel et les logiciels et de l’allocation des ressources disponibles.

Toutes les distributions Linux sont basées sur un noyau prédéfini. Mais, si vous souhaitez désactiver plusieurs options et pilotes ou essayer des correctifs expérimentaux, vous devez recompiler un noyau Linux.
Cela peut aussi être nécessaire pour bénéficier de la version du noyau Linux.

Dans ce guide étape par étape, vous apprendrez comment compiler un noyau Linux à partir de zéro.

Introduction

La compilation du noyau Linux nécessite cinq grandes phases :

  1. Installer les paquets de compilations nécessaires
  2. Télécharger les sources du noyau Linux
  3. Choisir les modules et composants à activer dans le noyau
  4. Compiler le noyau et l’installer dans le système
  5. Redémarrer sur le nouveau kernel

Prévoyez 15 Go d’espace libre sur le disque pour compiler le noyau Linux lorsque vous le faites avec les paramètres par défaut.

Comment compiler le noyau Linux

Préparer le système à la compilation du noyau Linux

Sur une distribution Linux de type Debian, installez les composants suivants :

sudo apt-get update
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
Préparer le système à la compilation du noyau Linux

The command we used above installs the following packages:

PackagePackage description
gitTrace et enregistre toutes les modifications apportées au code source au cours du développement. Il permet également de revenir sur les modifications
fakerootOutil d’emballage qui crée le faux environnement racine.
build-essentialInstalle les outils de développement tels que C, C++, gcc et g++.
ncurses-devBibliothèque de programmation qui fournit une API pour les terminaux à base de texte
xz-utilsPermet une compression et une décompression rapides des fichiers
libssl-devPrend en charge SSL et TSL qui cryptent les données et sécurisent la connexion Internet
bc (Basic Calculator)Un langage de script mathématique qui permet l’exécution interactive d’instructions
flex (Fast Lexical Analyzer Generator)Génère des analyseurs lexicaux qui convertissent les caractères en jetons
libelf-devAjoute une bibliothèque partagée pour la gestion des fichiers ELF (fichiers exécutables, vidage du noyau et code objet)
bisonGénérateur d’analyseur GNU qui convertit la description de la grammaire en un programme C
Les paquets nécessaires pour compiler le noyau Linux

Télécharger le noyau Linux

Vous pouvez télécharger les sources depuis les dépôts de votre distribution.
Cela va vous donner les sources de la version du noyau installé.
Ces dernières seront disponibles dans le dossier /usr/src/.

sudo apt-get install linux-source

Si vous désirez télécharger une version spécifique ou la dernière version du noyau linux, rendez-vous sur le site kernel.org.

Télécharger les sources du noyau Linux

Vous pouvez directement télécharger les sources avec wget.
Ensuite, on décompresse l’archive avec la commande tar.

cd /usr/src/
sudo wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.0.5.tar.xz
tar xvf linux-6.0.5.tar.xz
Télécharger les sources du noyau Linux

Configurer les modules et composants du noyau Linux

Avant de compiler le noyau, vous devez indiquer à GCC comment vous souhaitez procéder. Pour ce faire, vous utilisez un outil de ligne de commande appelé make. Tapez cette commande :

sudo make menuconfig

Cela ouvre une interface Ncurses dans laquelle vous pouvez activer et désactiver les modules du noyau et les fonctionnalités supportées par ce dernier.
Pour rappel, un module de noyau est un fichier d’objet qui contient du code qui peut étendre la fonctionnalité du noyau. On peut charger et décharger un module à tout moment.

Essentiellement, activer des composants jouent sur la taille du noyau Linux.
Il faut donc dans la logique n’activer que ce dont vous avez besoin.
Le noyau prendra moins en mémoire et donc votre système sera optimisé.
Mais si vous n’avez pas prévu de pousser une fonctionnalité en module ou intégré directement dans le noyau, vous devrez recompiler à nouveau le noyau.
Pire encore s’il s’agit d’un pilote matériel, ce dernier ne fonctionnera pas.

Naviguez dans les menus et sous-menus pour activer les modules.

Configurer les modules et composants du noyau Linux à compiler

Une fois terminée, sélectionnez Save puis Exit.

Configurer les modules et composants du noyau Linux à compiler

Cela crée un fichier appelé .config, qui indique à GCC ce qu’il doit compiler à partir des sources du noyau.

Notez que le fichier de configuration du noyau actif est disponible dans le dossier /boot/
Vous pouvez le recopier pour appliquer la configuration du noyau Linux par défaut.

sudo cp /boot/config-$(uname -r) .config

Compiler le noyau Linux

Maintenant tout est prêt pour lancer la compilation du noyau.
Pour cela, on utilise la commande make :

sudo make

Les actions effectuées par make s’affichent en liste.
Patientez, car cela va beaucoup de temps comme le noyau Linux est assez volumineux.
L’opération se termine avec un retour au prompt.

Comment compiler le noyau Linux

Ensuite on peut installer les modules.

sudo make modules_install
Comment compiler le noyau Linux

Vous pouvez passer la commande en une seule ligne de cette manière :

sudo make modules_install

Les fichiers de module .ko se créent et l’opération se termine avec le retour du prompt du shell.

Comment compiler le noyau Linux

La commande make accepte des drapeaux pour modifier des options de compilation.
Par exemple, INSTALL_MOD_STRIP à 1 supprime tous les symboles qui ne sont pas nécessaires au traitement de la relocalisation. Cela va réduire la taille du noyau Linux.
Par exemple :

sudo make INSTALL_MOD_STRIP=1 modules_install

La liste complète est donnée sur le lien suivant : https://www.kernel.org/doc/html/latest/kbuild/kbuild.html

Si vous rencontrez une erreur make mentionnant un fichier pem, suivez ce tutoriel : Erreur make debian/canonical-certs.pem sur compilation du noyau

Installer le noyau compilé dans le système

Pour installer le nouveau noyau dans le système, utilisez la commande suivante :

sudo make install
Comment installer le nouveau noyau Linux

Cette opération génère et installe les fichiers initrd.img et vmlinuz.
Vous n’avez pas besoin de mettre à jour la configuration du chargeur de démarrage GRUB car la commande précédente s’en charge.
Mais, au besoin, la voici :

sudo update-grub

Enfin, redémarrez votre ordinateur pour booter sur le nouveau noyau Linux.

Pour vérifier la version du noyau Linux :

uname -a

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.