Nouveau PC, nouvelle installation d’une Bullseye, autant cette fois-ci tout compiler ?
PC : Un tiny PC Lenovo ThinkCentre Core I5
Deux méthodes
Soit un système est déjà installé sur votre machine et vous compillez.
Soit vous compillez direct à partir d’un live-CD : https://www.debian.org/CD/live/#live-install-stable
Note : selon la puissance du processeur, la compilation peut être très rapide (10 min avec un intel core i7), mais la plupart du temps c’est entre 1 et 4h.
Prérequis
Avoir suffisamment d’espace libre pour :
- les dépendances
- la compilation qui créera des paquets
L’espace nécessaire est de 10GB minimum, plus est conseillé
Les dépendances
On installe les dépendances dans un premier temps, en root :
# apt install build-essential fakeroot dpkg-dev perl libssl-dev bc gnupg dirmngr libncurses-dev libelf-dev flex bison lsb-release rsync dwarves |
Explication des paquets :
- build-essential : Liste informative des paquets de construction essentiels
- fakeroot : outil de simulation des privilèges superutilisateur
- dpkg-dev : outils de développement pour les paquets Debian
- perl : langage perl (langage de rapports et d’extractions)
- libssl-dev : trousse à outils SSL
- bc : langage bc (calculateur de précision arbitraire)
- gnupg : remplaçant libre de PGP
- dirmngr : service de gestion de certificats réseau
- libncurses-dev : bibliothèques de développement pour ncurses (bibliothèque pour l’interface utilisateur)
- libelf-dev : bibliothèques de développement et fichiers d’en-tête de libelf1 [lire et écrire des fichiers ELF (Executable and Linkable Format) à un niveau élevé]
- flex : générateur rapide d’analyse lexicale
- bison : énérateur d’analyseur syntaxique compatible avec YACC (Yet Another Compiler Compiler)
- lsb-release : Utilitaire de rapport de version du Linux Standard Base
- rsync : outil de copie de fichiers à distance (et local) rapide et polyvalent
- dwarves : ensemble d’utilitaires DWARF sophistiqués
Les dépôts
Si vous avez les dépôts dans /etc/apt/sources.list
qui vous sont utiles (vous n’aurez donc plus le minimum de dépendances) vous pouvez lancer, en root :
# apt build-dep linux |
Répertoire d’installation
Création du répertoire d’installation dans lequel s’effectuera la compilation (en user) :
$ mkdir ~/compilation |
Récupération et vérification du noyau
Récupérer la source
Normalement, si vous partez d’une fraiche install ou d’un live-CD, wget
n’est pas installé, on utilisera donc curl
. Le mieux est d’aller récupérer le noyau sur le site https://www.kernel.org/
$ curl -o linux-5.15.1.tar.xz https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.1.tar.xz |
Vérification
On doit également récupérer la signature sur https://www.kernel.org/ pour la comparer avec le noyau précédement téléchargé :
Récupération de la signature :
$ curl -o linux-5.15.1.tar.sign https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.1.tar.sign |
Comparaison :
$ xz -cd linux-5.15.1.tar.xz | gpg --verify linux-5.15.1.tar.sign - |
La commande vous renvoie une clé RSA mais il ne peut pas vérifier la signature et nous allons utiliser la clé indiquée pour le faire :
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys <LaCléRécupérée> |
Note : Si vous rencontrer un problème vous pouvez utiliser un autre site de vérification :
- keyserver.ubuntu.com
- keys.openpgp.org
- pgp.mit.edu
Si vous n’avez pas d’erreur, tout est ok.
Décompression
Décompression des sources, puis on se place dans le répertoire :
$ tar -xvaf linux-5.15.1.tar.xz |
Configuration
Il existe 2 options, soit en utilisant toutes les options par défault (en utilisant les options du noyau actuel), soit tout paramétrer soi-même
Avec les options par défaut
$ make olddefconfig |
Pour une configuration pointue
$ make menuconfig |
Et vous n’avez plus qu’à cocher ou décocher ce dont vous avez besoin. Vous pouvez sauvegarder votre config dans un fichier d’extension .config
Désactiver les clés
Il nous faut générer de nouvelles clés et désactiver les actuelles car elles sont déjà utilisé pour signer le noyau, comme nous allons créer un autre noyau elles ne seront pas valides.
$ ./scripts/config -d CONFIG_MODULE_SIG_ALL -d CONFIG_MODULE_SIG_KEY -d CONFIG_SYSTEM_TRUSTED_KEYS |
Compilation et Installation
Compilation
Lancer la commande :
$ make deb-pkg -j"$(nproc)" LOCALVERSION=-"$(dpkg --print-architecture)" KDEB_PKGVERSION="$(make kernelversion)-1" |
Si vous ne voulez que les paquets nécéssaires :
$ make bindeb-pkg -j"$(nproc)" LOCALVERSION=-"$(dpkg --print-architecture)" KDEB_PKGVERSION="$(make kernelversion)-1" |
Explications des commandes :
-j“$(nproc)“
:- prend le nombre de threads total de votre processeur (pour une compilation plus rapide possible),
- vous pouvez mettre
-j<nombre>
en remplaçant nombre par le nombre de cores à allouer
LOCALVERSION=-“$(dpkg –print-architecture)“
- nom custom de l’architecture, vous pouvez en choisir un comme tel
LOCALVERSION=-archi42
(sans majuscule)
- nom custom de l’architecture, vous pouvez en choisir un comme tel
KDEB_PKGVERSION=“$(make kernelversion)-1”
- pour versionner le kernel 1 (soit version 1)
Installation
Dans le répertoire précédent, soit dans ~/compilation
, un certains nombre de .deb sont nécéssaires : au moins pour les headers et l’image du kernel. Le mieux est quand même d’installer tous ceux nouvellement présents dans ce répertoire
# dpkg -i *.deb |
Documentation
https://debian-facile.org/doc:systeme:kernel:compiler
https://www.kernel.org/
https://fr.wikipedia.org/wiki/Ncurses
https://fr.wikipedia.org/wiki/Executable_and_Linkable_Format
https://www.debian.org/distrib/packages
https://stackoverflow.com/questions/66217436/gpg-keyserver-receive-failed-no-name