Compiler et installer un Kernel

17 avril 2016 Linux 0 Commentaire

Compiler et installer un Kernel peut faire peur en effet même si la manipulation est assez simple elle n’est pas sans risque. Faites donc extrêmement attention à ce que vous faites.

 

 

Compiler et installer un Kernel : Kernel Késséssé ?

Le Kernel (noyau en français) est le coeur de votre distribution. Il assure la communication entre les logiciels et le matériel, la gestion des tâches d’une machine et la gestion du matériel. (Wikipédia pour plus d’informations)

 

 

Compiler et installer un Kernel : Mais pourquoi ?

Compiler et installer le dernier Kernel présente certains avantages :

  • support de nouveaux matériels
  • patchs de sécurité
  • ajout(s) de fonctionnalités
  • se la péter devant les copains

 

 

Compiler et installer un Kernel : Pré-requis

Je sauvegarde, tu sauvegarde, il sauvegarde, etc.

Avant de commencer cette manipulation, je vous encourage fortement à effectuer des sauvegardes de vos données (documents, fichiers de configuration). Vous pouvez aussi choisir d’installer ce nouveau Kernel dans une machine virtuelle avant de toucher à vos ordinateurs.

 

Du temps et de la place

Compiler un Kernel est une manipulation qui prend du temps et de la place. Le temps nécessaire pour compiler un noyau dépend de votre configuration : avec un i7 12 cores et 12Go de RAM la compilation s’effectue en 10 minutes. Je vous recommande d’avoir au moins 10 Go d’espace libre sur votre disque.

 

Installation des dépendances

Si vous êtes prêts à compiler et installer un Kernel il vous faudra commencer par installer quelques paquets

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc kernel-package

 

 

Compiler et installer un Kernel : Au boulot

Les dépendances étant installés nous sommes prêts à aller au charbon. Commençons donc par créer un dossier ou nous téléchargerons les sources du derniers Kernel

mkdir ~/kernel && cd ~/kernel

 

Téléchargeons donc les sources du dernier Kernel (4.5.1 à l’heure ou je rédige ce mémo) ainsi que leur signature.

 wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.5.1.tar.xz
 wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.5.1.tar.sign

 

Maintenant vérifions la signature de l’archive

unxz linux-4.5.1.tar.xz
gpg --verify linux-4.5.1.tar.sign

 

Une erreur devrait s’afficher, la voici

gpg: assuming signed data in `linux-4.5.tar'
gpg: Signature made Mon 14 Mar 2016 04:35:48 AM UTC using RSA key ID 6092693E
gpg: Can't check signature: public key not found

 

Récupérons donc la clé publique ayant pour ID 6092693E

gpg --keyserver hkp://keys.gnupg.net --recv-keys 6092693E

 

Maintenant répétons l’opération.

gpg --verify linux-4.5.1.tar.sign

 

Ce qui désormais nous indique que l’archive est correctement signé

root@noobunbox:~/kernel$ gpg --verify linux-4.5.1.tar.sign
gpg: les données signées sont supposées être dans « linux-4.5.1.tar »
gpg: Signature faite le mar. 12 avril 2016 19:04:24 MSK avec la clef RSA d'identifiant 6092693E
gpg: Bonne signature de « Greg Kroah-Hartman (Linux kernel stable release signing key) <greg[at]kroah.com> »
gpg: Attention : cette clef n'est pas certifiée avec une signature de confiance.
gpg: Rien n'indique que la signature appartient à son propriétaire.
Empreinte de clef principale : 647F 2865 4894 E3BD 4571 99BE 38DB BDC8 6092 693E

 

Si le résultat de la précédente commande devez vous afficher une erreur « Mauvaise signature » ne poursuivez pas cette manipulation

Puisque tout va bien, poursuivons en extrayant l’archive

tar xvf linux-4.5.1.tar && cd linux-4.5.1

 

 

Compiler et installer un Kernel : Configuration du Kernel

Copiez le fichier de configuration de votre Kernel, histoire de ne pas risquer de tout casser en touchant a tout 🙂

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

 

Maintenant ouvrons le menu de configuration du Kernel (étape obligatoire)

make menuconfig

 

Vous pouvez par l’intermédiaire de ce menu personnaliser votre Kernel. À moins que vous ne sachiez parfaitement ce que vous faites, je vous déconseille de supprimer le support de drivers.

L’ajout de nouveaux modules fera l’objet d’un autre post.

Compiler et installer un kernel

 

Attention IPtables peut ne pas fonctionner par défaut. Pour s’assurer de son fonctionnement suivez les recommandations ci-dessous
Networking Support -> Networking options -> Network packet filtering framework (Netfilter) -> IP:Netfilter Configuration -> Enable: IPv4 masquerade support + iptables support
Networking Support -> Networking options -> Network packet filtering framework (Netfilter) -> IPV6:Netfilter Configuration -> ip6tables NAT support -> Enable: masquerade support

 

Sauvegardez le fichier puis quittez.

 

 

Compiler et installer un Kernel : Compilation du Kernel

Nous allons commencer par mettre de l’ordre via la commande suivante

make-kpkg clean

 

Maintenant récupérez le nombre de coeur CPU disponibles sur votre machines

nproc

 

Dans mon cas, cette commande me retourne le chiffre 12. Je peux donc affecter jusqu’à 12 cores à la compilation du Kernel

 

Nous pouvons maintenant lancer la compilation du Kernel (modifiez l’option -j 12 en fonction du nombre de cores que vous souhaitez affecter à cette opération)

fakeroot make-kpkg --initrd --revision=1.0.noobunbox kernel_image kernel_headers -j 12

 

 

Compiler et installer un Kernel : Installation du Kernel

La compilation est terminée, deux fichiers devraient avoir été générés, vérifions

root@noobunbox:~/kernel/linux-4.5.1$ ls ../*.deb
../linux-headers-4.5.1_1.0.noobunbox_amd64.deb ../linux-image-4.5.1_1.0.noobunbox_amd64.deb

 

Je vais me répéter mais ce n’est pas grave 🙂 je vous conseille de transférer ces deux paquets sur une machine virtuelle afin de les tester.

Une fois ces paquets transférés sur votre machine virtuelle, installons-les

sudo dpkg -i linux-headers-4.5.1_1.0.noobunbox_amd64.deb
sudo dpkg -i linux-image-4.5.1_1.0.noobunbox_amd64.deb

 

L’installation terminée, redémarrez votre machine virtuelle. Une fois le redémarrage terminé, vérifiez la version du Kernel installé via la commande

uname -r

 

Elle devrait vous retourner le résultat suivant

root@noobunbox:~$ uname -a
Linux noobunbox 4.5.1 #1 SMP Sun Apr 17 16:04:50 MSK 2016 x86_64 GNU/Linux

 

Source

Merci aussi à Angristan, qui grace à ses péripéties sur Twitter m’a inspiré pour ce billet