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.
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
- Wikipédia, Noyau de système d’exploitation
- nixCraft, How to compile and install Linux Kernel v4.5 source
Merci aussi à Angristan, qui grace à ses péripéties sur Twitter m’a inspiré pour ce billet