Le noyau ou kernel, est le programme qui va gérer les interactions entre les différents composants de l’ordinateur, qu’ils soient matériels ou logiciels.
Il est donc essentiel au fonctionnement du système d’exploitation de la machine.
Cependant, le noyau est lui même un programme. Il nécessite donc d’être mis à jour régulièrement pour supporter de nouveaux périphériques et composants, corriger des bugs, ou encore combler des failles de sécurité.
C’est le programme le plus important du système d’exploitation.

Debian 8 est aujourd’hui fourni avec le noyau Linux dans sa version 3.16 alors que sur le site du Linux Kernel Archives, la dernière version stable est la 4.8. Beaucoup de retard donc… et il est souhaitable d’installer une version plus récente.

Bien que l’ensemble des commandes à effectuer pour compiler un kernel ne soit pas fastidieux, il faut recommencer à chaque mise à jour de kernel. Et comme je suis feignant… bah j’ai fait un script pour rendre ça bien plus simple.

Le script

J’ai donc décidé de créer un script bash me permettant de compiler la version du noyau que je souhaite sur mes serveurs Debian.
L’enchainement de commandes successives est largement inspiré de l’article de Julien Hommet à ce sujet. Si vous souhaitez apprendre à compiler votre kernel, je vous renvoie donc à son article.
Le script est intéractif pour laisser le choix à l’utilisateur de choisir sa version et son fichier .config. Ce fichier permet de spécifier la liste des modules à ajouter au noyau.
Vous pouvez le récupérer sur mon GitHub.

Utilisation

Le script doit obligatoirement être lancé avec des droits root.
Il prend en premier argument la version du noyau que l’on souhaite compiler.
Par exemple, pour compiler la version 4.9, on lancera la commande suivante :

Le script se charge alors d’installer les dépendances nécessaires, puis de télécharger et décompresser les sources.
kernel
Pour le fichier .config on peut garder celui par défaut du système, ou ouvrir le menuconfig pour en générer un nouveau.
Je prévois de rajouter une option pour spécifier le chemin vers un autre fichier présent sur le disque.
La compilation terminée, il est possible d’installer ou non le kernel compilé.

Fork et contributions

J’ai commencé ce script il y a quelques semaines, puis je l’ai mis de côté, avant de le reprendre plus récemment.
Le script est assez basique pour le moment, mais si l’outil vous plait, n’hésitez pas à y apporter vos améliorations, ajouter de nouvelles options ou même me faire remonter les bugs.
Bien sur, si vous avez des questions, n’hésitez pas à les poser dans les commentaires ou à venir en parler sur Twitter.