Lors de la compilation du noyau Linux sur une distribution de type Debian comme Ubuntu ou Mint, vous pouvez rencontrer une erreur make du type :
make[1]: *** Aucune règle pour fabriquer la cible « debian/canonical-certs.pem », nécessaire pour « certs/x509_certificate_list ». Arrêt.
make: *** [Makefile:1852 : certs] Erreur 2
Une variante peut être :
make[1]: *** Aucune règle pour fabriquer la cible « debian/canonical-revoked-certs.pem », nécessaire pour « certs/x509_revocation_list ». Arrêt.
make: *** [Makefile:1852 : certs] Erreur 2
Enfin si vous tentez de compiler le noyau Linux sur Debian, le fichier mentionné sera certs/debian-uefi-certs.pem.
Dans ce tutoriel, je vous aide à résoudre cette erreur de compilation du noyau Linux.

Table des matières
Quelle est l’origine de cette erreur de compilation du noyau ?
Les fichiers du noyau Linux (vmlinuz, System.map et initdr) peuvent être signés numériquement afin de répondre aux normes de sécurité des PC UEFI.
Cela nécessite la présence de clés de certificat électronique (fichier PEM) présents dans le répertoire certs des sources du noyau Linux.
L’erreur se produit si vous tentez de compiler les sources du noyau Linux en les ayant pris depuis le site kernel.org.
En effet, ces derniers ne contiennent pas les clés cryptographiques pour signer les fichiers du noyau Linux.
Cela provoque alors l’erreur make indiquée en début d’article car la signature numérique ne pourra se faire.
Si vous tentez de compiler depuis les sources du noyau Linux de votre distribution, soit donc depuis les dépôts, vous ne devriez pas être confronté à cette erreur à moins que les fichiers de certificats soient mal déclarés dans le fichier .config
Résoudre l’erreur make debian/canonical-certs.pem sur compilation du noyau
Méthode 1 – copier les certificats Canonical ou Debian
Cette méthode consiste à récupérer les clés des certificats depuis les sources du kernel Linux de votre distribution.
On télécharge les sources puis on copie les fichiers de clés de certificats dans les sources kernel.org.
Dans cet exemple :
- Les sources du noyau Linux d’Ubuntu sont en 5.15.0
- Les sources de kernel.org sont en 6.0.5
Voici comment opérer :
- Téléchargez les sources du noyau Linux :
sudo apt-get install linux-source
- Puis copiez les certificats dans le répertoire certs de vos sources du noyau Linux. Utilisez la commande suivante en remplaçant les versions du kernel Linux :
cd /usr/src/linux
sudo cp -v linux-source-*/debian/certs/*pem linux-6.0.5/certs/
- Editez le fichier de configuration de compilation du noyau Linux :
cd /usr/src/linux-6.0.5
vim .config
- Enregistrez les modifications du fichier puis relancez la compilation du noyau Linux :
make clean
- Si tout va bien la compilation passe la phase CERT et L’erreur make Aucune règle pour fabriquer la cible « debian/canonical-certs.pem est corrigée
Méthode 2 – Désactiver la signature du noyau Linux
La seconde méthode consiste simplement à retirer les fichiers de certificats du fichier .config.
Ainsi le noyau Linux ne sera plus signés.
- Editez le fichier de configuration de compilation du noyau Linux :
vim .config
- Puis cherchez les lignes suivantes, environ autour de la ligne 11134 :
CONFIG_MODULE_SIG_KEY="certs/signing_key.pem" CONFIG_MODULE_SIG_KEY_TYPE_RSA=y CONFIG_MODULE_SIG_KEY_TYPE_ECDSA=y CONFIG_SYSTEM_TRUSTED_KEYRING=y CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem" CONFIG_SYSTEM_EXTRA_CERTIFICATE=y CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096 CONFIG_SECONDARY_TRUSTED_KEYRING=y CONFIG_SYSTEM_BLACKLIST_KEYRING=y CONFIG_SYSTEM_BLACKLIST_HASH_LIST="" CONFIG_SYSTEM_REVOCATION_LIST=y CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem" # end of Certificates for signature checking
- Editez la ligne suivante pour retirer le chemin des clés :
CONFIG_SYSTEM_TRUSTED_KEYS="/usr/local/src/debian/canonical-certs.pem"
- Remplacez par :
CONFIG_SYSTEM_TRUSTED_KEYS=""
- Répétez l’opération pour la ligne suivante :
CONFIG_SYSTEM_REVOCATION_KEYS=
- Enregistrez les modifications du fichier puis relancez la compilation :
make clean
- L’erreur make Aucune règle pour fabriquer la cible « debian/canonical-certs.pem doit être résolue
Méthode 3 – autosigner le noyau Linux
Dans cette dernière méthode, on créer un certificat autosigné, que l’on va utiliser ensuite pour signer les fichiers du noyau Linux.
- Positionnez vous dans le dossier des sources Linux, puis générez les fichiers de certificats avec openssl :
sudo openssl req -x509 -newkey rsa:4096 -keyout certs/mycert.pem -out certs/mycert.pem -nodes -days 3650
- Editez le fichier de configuration :
sudo vim .config
- Enfin modifiez les chemins des clés de certificats :
CONFIG_MODULE_SIG_KEY="certs/mycert.pem" CONFIG_SYSTEM_TRUSTED_KEYRING=y CONFIG_SYSTEM_TRUSTED_KEYS="certs/mycert.pem" CONFIG_SYSTEM_EXTRA_CERTIFICATE=y CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096 CONFIG_SECONDARY_TRUSTED_KEYRING=y CONFIG_SYSTEM_BLACKLIST_KEYRING=y CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""
Liens
- Comment compiler un logiciel depuis des sources sur Linux
- Pourquoi compiler ses programmes depuis les sources sur Linux
- Comment utiliser la commande make avec exemples
- Système d’exploitation et OS : qu’est-ce que c’est ? comment ça marche ?
- Qu’est-ce que le noyau d’un OS (Kernel)
- Qu’est-ce que le Noyau Linux (kernel) : rôle, versions et comment ça marche
- Les modules du noyau Linux : charger, décharger et fonctionnement
- Comment compiler le noyau Linux
- Utiliser modprobe et configurer /etc/modprobe.d/
- Ajouter un module du noyau Linux avec module assistant sur Debian
- Qu’est-ce que initrd dans Linux : rôle et comment ça marche
- Qu’est-ce que vmlinuz dans Linux
- Comment connaître la version du noyau Linux
- Commande uname sur Linux avec des exemples
- sysctl : paramétrer le noyau Linux
- NTFS, EXT4 : Comprendre les systèmes de fichiers