https://github.com/jakeday/linux-surface/blob/master/SIGNING.md a des instructions plus spécifiques sur la signature du noyau (adapté du même tutoriel lié dans la réponse acceptée). Les instructions sont reproduites intégralement comme suit:
Signature d'un noyau personnalisé pour Secure Boot
Les instructions sont pour ubuntu, mais devraient fonctionner de la même manière pour les autres distributions, si elles utilisent shim et grub comme chargeur de démarrage. Si votre distribution n'utilise pas shim (par exemple Linux Foundation Preloader), il devrait y avoir des étapes similaires pour terminer la signature (par exemple HashTool au lieu de MokUtil pour LF Preloader) ou vous pouvez installer shim à utiliser à la place. Le paquet ubuntu pour shim est appelé shim-signed
, mais veuillez vous informer sur la façon de l'installer correctement, afin de ne pas gâcher votre chargeur de démarrage.
Depuis la dernière mise à jour de GRUB2 (2.02 + dfsg1-5ubuntu1) dans Ubuntu, GRUB2 ne charge plus les noyaux non signés, tant que Secure Boot est activé. Les utilisateurs d'Ubuntu 18.04 seront informés lors de la mise à niveau du paquet grub-efi, que ce noyau n'est pas signé et que la mise à niveau sera abandonnée.
Ainsi, vous avez trois options pour résoudre ce problème:
- Vous signez le noyau vous-même.
- Vous utilisez un noyau générique signé de votre distribution.
- Vous désactivez le démarrage sécurisé.
Étant donné que les options deux et trois ne sont pas vraiment viables, ce sont les étapes pour signer le noyau vous-même.
Instructions adaptées du blog Ubuntu . Avant de suivre, veuillez sauvegarder votre répertoire / boot / EFI, afin que vous puissiez tout restaurer. Suivez ces étapes à vos risques et périls.
- Créez la configuration pour créer la clé de signature, enregistrez-la sous mokconfig.cnf:
# This definition stops the following lines failing if HOME isn't
# defined.
HOME = .
RANDFILE = $ENV::HOME/.rnd
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = v3
string_mask = utf8only
prompt = no
[ req_distinguished_name ]
countryName = <YOURcountrycode>
stateOrProvinceName = <YOURstate>
localityName = <YOURcity>
0.organizationName = <YOURorganization>
commonName = Secure Boot Signing Key
emailAddress = <YOURemail>
[ v3 ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical,CA:FALSE
extendedKeyUsage = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment = "OpenSSL Generated Certificate"
Ajustez toutes les pièces avec vos détails.
- Créez la clé publique et privée pour signer le noyau:
openssl req -config ./mokconfig.cnf \
-new -x509 -newkey rsa:2048 \
-nodes -days 36500 -outform DER \
-keyout "MOK.priv" \
-out "MOK.der"
- Convertissez également la clé au format PEM (mokutil a besoin de DER, sbsign a besoin de PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
- Enregistrez la clé de votre installation de shim:
sudo mokutil --import MOK.der
Un mot de passe vous sera demandé, il vous suffira de l'utiliser pour confirmer votre sélection de clé à l'étape suivante, alors choisissez-en un.
Redémarrez votre système. Vous rencontrerez un écran bleu d'un outil appelé MOKManager. Sélectionnez "Inscrire MOK" puis "Afficher la clé". Assurez-vous que c'est votre clé que vous avez créée à l'étape 2. Ensuite, continuez le processus et vous devez entrer le mot de passe que vous avez fourni à l'étape 4. Continuez avec le démarrage de votre système.
Vérifiez que votre clé est enregistrée via:
sudo mokutil --list-enrolled
- Signez votre noyau installé (il devrait être dans / boot / vmlinuz- [KERNEL-VERSION] -surface-linux-surface):
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface.signed
- Copiez l'initram du noyau non signé, nous avons donc aussi un initram pour le signé.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
- Mettez à jour votre grub-config
sudo update-grub
- Redémarrez votre système et sélectionnez le noyau signé. Si le démarrage fonctionne, vous pouvez supprimer le noyau non signé:
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub
Maintenant, votre système devrait fonctionner sous un noyau signé et la mise à niveau de GRUB2 fonctionne à nouveau. Si vous souhaitez mettre à niveau le noyau personnalisé, vous pouvez signer la nouvelle version facilement en suivant à nouveau les étapes ci-dessus à partir de l'étape sept. Ainsi, SAUVEGARDEZ les touches MOK (MOK.der, MOK.pem, MOK.priv).