Quand on est impatient et qu’on veut un noyau plus récent sans attendre sa mise à disposition par Debian.
On peut le compiler assez facilement.
Environnement
PC sous Linux Debian 10 (Buster)
Installer les outils
Avec l’utilisateur administrateur root
Je mets la totale de ce qui a été nécessaire au fur et à mesure des versions de noyaux.
kernel-package (utilitaire de fabrication de noyau pour Debian) permets de s’assurer aussi que rien ne manquera.
apt install build-essential fakeroot libncurses5-dev dpkg-dev libssl-dev bc bison libelf-dev kernel-package
Les opérations suivantes se font en utilisateur ordinaire (pas besoin de droits d’administrateur).
Télécharger le noyau officiel
Télécharger le noyau qui vous convient depuis Kernel Org par exemple dans le dossier Téléchargements/linux
Décompresser l’archive
Exemple
tar xvf linux-4.9.95.tar.xz
Se positionner dans le dossier correspondant au noyau
Exemple
cd Téléchargements/linux/kernel/linux-4.9.95
Récupérer un fichier config depuis le dossier /boot
Mieux vaut ne pas mélanger les versions de noyaux, utiliser un .config récent.
cp /boot/config-4.9.0-6-amd64 .config
Mettre à jour le fichier config
make olddefconfig
Retirer les références aux clés
Cette étape ne me paraît pas indispensable.
Si on saute cette étape et que toutefois une erreur interrompt le process, c’est pas très grave car ça arrive au début et on peut recommencer rapidement en faisant cette étape.
./scripts/config -d CONFIG_MODULE_SIG_ALL -d CONFIG_MODULE_SIG_KEY -d CONFIG_SYSTEM_TRUSTED_KEYS
Retirer l’option pour ne pas avoir à compiler un noyau de debug
./scripts/config -d CONFIG_DEBUG_INFO
Compiler
N.B: Sur mon PC avec un petit CPU dual-core, cette opération prends environ 4 heures et fait bien chauffer l’ordinateur. Pensez à la ventilation.
Lors de la compilation, si vous avez supprimer les clés, accepter les options par défaut concernant les clés.
La commande fakeroot permets de surpasser les droits mais on peut s’en passer dans la ligne de commande.
La commande make deb-pkg permets de générer des paquets Debian.
Mon PC n’est pas très puissant , je ne prends que 2 processus (j2).
Je mets un suffixe (kernelperso) et un numéro de compilation (-1) pour repérer le noyau.
Exemple
make deb-pkg -j2 LOCALVERSION=-kernelperso KDEB_PKGVERSION=$(make kernelversion)-1
Installer le noyau compilé
On ne se sert que du header et de l’image. Les autres fichiers générés ne sont pas nécessaires pour un utilisateur ordinaire.
Exemple
dpkg -i linux-headers-4.9.95-kernelperso_4.9.95-1_amd64.deb linux-image-4.9.95-kernelperso_4.9.95-1_amd64.deb
Référence
Le fichier local kernel-package: file:///usr/share/doc/kernel-package/Kernel.htm
La documentation kernel.org
Méthode 2 synthétisée
A partir des infos de kernel-package, mises à ma sauce:
1) Récuperer un source du kernel
2) Récupérer un fichier .config depuis
/boot
3) make menuconfig
faire
exit
tout de suite
car
on ne veut rien changer.
4)
./scripts/config -d CONFIG_DEBUG_INFO
5) make deb-pkg -j2 LOCALVERSION=-kernelperso
KDEB_PKGVERSION=$(make kernelversion)-1
Exemple
Fin de la compilation sans erreur
dpkg-deb: building package 'linux-firmware-image-4.9.107-kernelperso' in '../linux-firmware-image-4.9.107-kernelperso_4.9.107-1_amd64.deb'. dpkg-deb: building package 'linux-headers-4.9.107-kernelperso' in '../linux-headers-4.9.107-kernelperso_4.9.107-1_amd64.deb'. dpkg-deb: building package 'linux-libc-dev' in '../linux-libc-dev_4.9.107-1_amd64.deb'. dpkg-deb: building package 'linux-image-4.9.107-kernelperso' in '../linux-image-4.9.107-kernelperso_4.9.107-1_amd64.deb'. dpkg-source: info: utilisation du format source « 3.0 (custom) » dpkg-source: info: construction de linux-4.9.107-kernelperso dans linux-4.9.107-kernelperso_4.9.107-1.dsc dpkg-genchanges: avertissement: variable de substitution inconnue ${kernel:debarch} dpkg-genchanges: info: inclusion du code source original dans l'envoi (« upload »)
Paquets générés
cd ~/Téléchargements/linux/kernel ~/Téléchargements/linux/kernel$ ls *.deb linux-firmware-image-4.9.107-kernelperso_4.9.107-1_amd64.deb linux-headers-4.9.107-kernelperso_4.9.107-1_amd64.deb linux-image-4.9.107-kernelperso_4.9.107-1_amd64.deb linux-libc-dev_4.9.107-1_amd64.deb
Personnaliser
Pour satisfaire son ego, on peut mettre son nom (maintainer :=) et son adresse de courriel (email :=) dans le fichier /etc/kernel-pkg.conf avant de commencer.