[Debian 10] Compiler et installer le kernel stable 5.5.7

Tut's Linux janv. 12, 2016

Mise à jour au 29/02/2020 : OK sous Debian 10 - Kernel 5.5.7 + ajout de la dépendance nécessaire "rsync"

Les « Kernel » sont les fondements même d’un Linux – Ils sont maintenus par une équipe de développeur et par Linus Torvalds lui-même. Dernier en date au 29/02/2020, la version 5.5.7 est en version stable. Tous les kernels peuvent être installés sur votre distribution, à condition d’effectuer une sauvegarde complète de votre machine et de compiler les sources !

Les kernel pour Linux peuvent se trouver à l’adresse suivante : https://www.kernel.org/

Connue de tous, Debian n’est pas très friande des tous derniers kernel. Avec cet article, vous serez en mesure de pouvoir compiler le tout dernier kernel en date pour votre Debian !

La procédure ci-dessous est tirée du site « cyberciti.biz », site sur lequel je me suis aidé pour compiler mon kernel. La source est en fin d’article. De plus, je ne me suis pas attardé sur la personnalisation du kernel – le but ici est de pouvoir compiler un kernel « from scratch » à partir de ses sources. Merci à Panta pour son retour vis-à-vis des changements opérés entre Debian 8 et Debian 9 et merci à Gui pour le retour sur Debian 10 ! 😉


I. Pré-requis

Sauvegarde !

Avant toute chose, sauvegardez impérativement vos documents ou créez une image / snapshot de votre système ! Un kernel défectueux peut casser votre système et le rendre totalement inopérant. Les réparations peuvent être très lourdes et extrêmement compliquées… Donc sauvegardez vos données !

Espace de stockage

Compiler un kernel demande BEAUCOUP de place – assurez-vous d’avoir au strict minimum 10 Go d’espace disque de libre ! Privilégiez plutôt 15 Go de libre pour avoir un peu de débattement si vous ajoutez de nombreux patchs à votre kernel.

Installation des outils nécessaires

La compilation d’un kernel se fait sur une machine disposant de certains outils de compilation, d’interpréteurs et autres. Attention, il vous faut au moins 500 Mo d’espace libre sur votre système pour contenir tous ces outils et les dépendances.

apt install git build-essential libncurses5-dev xz-utils libelf-dev bc bison flex libssl-dev rsync

L’installation des paquets peut prendre un certain temps, puisqu’il y a de nombreux paquets à télécharger (des outils et utilitaires de compilation, des librairies…) – tout dépend de la puissance de votre machine et de vos disques durs.
Lorsque tout est installé, il faut préparer « l’emplacement » où va être travaillé le kernel : tous les fichiers seront stockés dans un dossier, y compris le kernel compilé.

Attention, certains paquets inutiles peuvent être téléchargés et installés, notamment les documentations « texlive » – elles prennent une place assez impressionnante (plus de 600mo !!), vous pouvez donc vous en séparer via cette commande :

apt remove texlive-latex-base-doc texlive-latex-recommended-doc texlive-latex-extra-doc texlive-pictures-doc texlive-pstricks-doc

En somme, il faut supprimer toutes les docs faisant référence à LaTeX.

Préparation du dossier de travail

Je ne me suis pas embêté pour cette partie, je me suis connecté en tant que root et j’ai utilisé mon dossier de sauvegarde dans lequel j’ai créé un sous-dossier spécifique. Libre à vous de placer où vous le souhaitez ce fameux dossier de travail.

mkdir /kernel && cd /kernel

A l’intérieur, j’ai téléchargé les sources publiques du kernel 4.18.14 directement depuis le site officiel :

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.7.tar.xz

Et lorsque l’archive est téléchargée, il faut la décompresser :

tar xvf linux-5.5.7.tar.gz

Un dossier va être créé, au nom du kernel – dans ce cas présent (en version 4.18.14), le dossier s’intitulera « linux-5.5.7 »

cd linux-5.5.7

Préparation de la compilation

Puisque les sources sont extraites et prêtes à être compilées, une étape préliminaire est nécessaire – il faut copier l’actuel fichier de configuration du kernel pour bénéficier d’une base « saine ».

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

Et ainsi, le (futur) kernel de votre système est prêt à recevoir ses tweaks / patchs et autres routines !
Pour ce faire, vous devez lancer la commande :

make nconfig

Je ne détaillerai pas cette partie – je ne la connais pas du tout, je n’ai pas eu le temps de la travailler. J’ai donc laisser tous les paramètres par défaut de mon ancien « .config » du kernel Debian de base.
Faites très attention lors de l’utilisation de ce menu ! Un faux-pas et vous pouvez rendre votre kernel totalement inutilisable et donc votre machine aussi !

Même si vous n’avez aucune option à modifier, vous devez quand même utiliser le « make menuconfig » pour créer le fichier « .config ». Sélectionnez donc « < Save >« , validez les modifications et enfin sélectionnez « < Exit >« .

Lancement de la compilation

Le moment est arrivé ! La compilation va bientôt pouvoir se lancer ! Une dernière commande est à effectuer pour remettre de l’ordre dans les fichiers et retrouver une arborescence « propre ».
Cette opération peut durer quelques minutes.

make clean

Enfin, la compilation est maintenant possible :

make deb-pkg

Attention ! La compilation d’un kernel prend un vrai temps !! Vous pouvez facilement passer plusieurs heures à compiler votre noyau ! Pour ma part, j’ai mis plus de 19 minutes (machine virtuelle sous VMware Workstation, 4vCPU (base CPU = i7 6700k OC à 4,4 Ghz), 8Go de RAM, disque au format RAW sur une grappe RAID-0 de disques SSD Samsung 850 Pro) – encore une fois, tout dépend de la puissance de votre machine.


II. Installation du kernel

Après la compilation, votre nouveau noyau est prêt à l’emploi !! Vous pouvez dès à présent l’installer sur votre machine pour pouvoir l’exploiter.
Il faut installer les deux paquets « .deb » que vous venez de compiler :

cd /kernel && dpkg -i linux-image-5.5.7_5.5.7-1_amd64.deb && dpkg -i linux-headers-5.5.7_5.5.7-1_amd64.deb

L’installation se fait rapidement pour les deux paquets – peu après l’installation, vous n’êtes pas obligé de redémarrer votre machine ! En effet, depuis les kernel 4.x, vous pouvez « redémarrer à chaud » votre machine et donc prendre en compte les modifications sans devoir redémarrer le serveur.

Pour se faire, il faut utiliser le paquet « kexec-utils« .

apt install kexec-tools && systemctl kexec

Vos sessions SSH vont alors se couper, puisque le serveur va redémarrer les services sans redémarrer physiquement.
Source

Toutefois, vous n’êtes pas obligé d’utiliser ce paquet si vous préférez l’ancienne méthode, à savoir le redémarrage « normal » via un « reboot ». Au démarrage du serveur, lorsque vous arriverez sur le grub, dirigez-vous dans « Options avancées » (Advanced settings), vous devriez avoir une liste avec 4 options : deux lignes pour le kernel 5.5.7 et les deux autres lignes sont pour votre autre kernel.

J’ai sélectionné le kernel 5.5.7 – la machine a démarré puis immédiatement, j’ai effectué la commande ci-dessous :

uname -a

L’image correspond à un kernel compilé en 5.5.7 – vous verrez de vôtre côté le bon numéro de kernel. Comme le dirait Apache, « It Works ! » 🙂

Mots clés

Julien HOMMET

Bercé par l'informatique depuis mon plus jeune âge, je transforme ma passion en expertise.

Super ! Vous vous êtes inscrit avec succès.
Super ! Effectuez le paiement pour obtenir l'accès complet.
Bon retour parmi nous ! Vous vous êtes connecté avec succès.
Parfait ! Votre compte est entièrement activé, vous avez désormais accès à tout le contenu.