Ce problème se produit uniquement sur les systèmes UEFI sur lesquels Secure Boot est activé.
Lorsque j'essaie d'installer des modules DKMS tels que les pilotes VirtualBox, Nvidia ou Broadcom, ils ne s'installent pas et j'obtiens Required key not available
lorsque j'essaie de leur donner modprobe
.
VirtualBox se plaint que vboxdrv
n'est pas chargé.
Le pilote Broadcom wl
apparaît dans lspci -k
en tant que module du noyau mais n’est pas utilisé. Sudo modprobe wl
jette Required key not available
.
De plus, ce problème peut survenir lorsque j'installe des modules du noyau à partir de sources git.
Ce problème peut apparaître après une mise à jour du noyau en tant qu'adaptateur sans fil désactivé, écran noir après un redémarrage, etc.
Comment puis-je le réparer?
Depuis le noyau Ubuntu 4.4.0-20, la configuration du noyau EFI_SECURE_BOOT_SIG_ENFORCE
a été activée. Cela empêche de charger des modules tiers non signés si UEFI Secure Boot est activé.
Le moyen le plus simple de résoudre ce problème consiste à désactiver le démarrage sécurisé dans les paramètres UEFI (BIOS).
Dans la plupart des cas, vous pouvez accéder aux paramètres UEFI à l'aide du menu de menu. presse ESC Au démarrage, dans le menu contextuel, sélectionnez Configuration du système. L'option de démarrage sécurisé doit figurer dans les sections "Sécurité" ou "Amorçage" de l'UEFI.
Vous pouvez entrer directement dans UEFI, mais cela dépend de votre matériel. Lisez le manuel de votre ordinateur pour savoir comment vous y rendre. C'est possible Del, ou F2 au démarrage, ou quelque chose d'autre.
Une autre solution consiste à désactiver Secure Boot à l'aide de mokutil
name__.
Depuis la version 4.4.0-21.37 du noyau Ubuntu, ceci peut être corrigé en exécutant
Sudo apt install mokutil
Sudo mokutil --disable-validation
Il faudra créer un mot de passe. Le mot de passe doit comporter au moins 8 caractères. Après le redémarrage, UEFI vous demandera si vous souhaitez modifier les paramètres de sécurité. Choisissez "Oui".
Ensuite, il vous sera demandé de saisir le mot de passe créé précédemment. Certains micrologiciels UEFI ne demandent pas le mot de passe complet, mais bien quelques caractères, comme 1er, 3ème, etc. Soyez prudent. Certaines personnes ne comprennent pas cela. Je ne l'ai pas eu dès la première tentative non plus ;-)
Mise à jour: Maintenant, cette configuration de noyau est activée dans tous les noyaux Ubuntu pris en charge. Ubuntu 16.04, 15.10 et 14.04 sont affectés.
Comme suggéré par l'utilisateur @zwets, je copie (avec modifications) ne réponse ici:
Depuis la version 4.4.0-20 du noyau, il a été précisé que les modules du noyau non signés ne seraient pas autorisés à s'exécuter avec le démarrage sécurisé activé. Si vous souhaitez conserver Secure Boot et également exécuter ces modules, la prochaine étape logique consiste à signer ces modules.
Alors essayons.
Créer des clés de signature
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"
Signer le module
Sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /path/to/module
Enregistrez les clés pour sécuriser le démarrage
Sudo mokutil --import MOK.der
Fournissez un mot de passe pour une utilisation ultérieure après le redémarrage
Reboot
et suivez les instructions pour inscrire MOK (clé du propriétaire de la machine). Voici un échantillon avec des images. Le système redémarre une fois de plus.
Faites-moi savoir si vos modules fonctionneraient de cette façon sur Ubuntu 16.04 (sur le noyau 4.4.0-21, je crois).
Ressources: Site Web détaillé article pour Fedora et implémentation Ubunt de la signature du module. (ils y travaillent) ;-)
Ressource supplémentaire: J'ai créé un script bash pour mon propre usage chaque fois que virtualbox-dkms
est mis à niveau et écrase ainsi les modules signés. Découvrez mon vboxsign
à l'origine sur GitHub .
Note complémentaire pour la sécurité (extra) consciente: ;-)
Étant donné que la clé privée que vous avez créée (MOK.priv
dans cet exemple) peut être utilisée par quiconque peut y avoir accès, il est recommandé de la garder en sécurité. Vous pouvez le chmod
, le chiffrer (gpg
) ou le stocker dans un endroit sûr (r). Ou, comme noté dans ce commentaire , supprimez l'option -nodes
à l'étape numéro 1. Ceci chiffrera la clé avec une phrase secrète.
Vous pouvez désactiver le démarrage sécurisé (UEFI) dans le BIOS en procédant comme suit:
Redémarrez votre ordinateur et entrez dans le menu du BIOS (dans mon cas, appuyez sur F2)
Recherchez Secure Boot et passez à Legacy
Dans une carte mère ASUS:
Vous pouvez également désactiver Désactiver le démarrage sécurisé dans Sudo update-secureboot-policy
exécuté par shim. Cette page wiki explique cette méthode:
- Ouvrez un terminal (Ctrl + Alt + T), exécutez Sudo update-secureboot-policy, puis sélectionnez Oui.
- Entrez un mot de passe temporaire entre 8 et 16 chiffres. (Par exemple, 12345678, nous utiliserons ce mot de passe plus tard
- Entrez à nouveau le même mot de passe pour confirmer.
- Redémarrez le système et appuyez sur n’importe quelle touche lorsque l’écran bleu apparaît (Gestion MOK
- Sélectionnez Modifier l'état de démarrage sécurisé.
- Entrez le mot de passe que vous avez sélectionné à l'étape 2 et appuyez sur Entrée.
- Sélectionnez Oui pour désactiver le démarrage sécurisé dans Shim-Signed.
- Appuyez sur la touche Entrée pour terminer toute la procédure.
Vous pouvez toujours activer Secure Boot dans une nouvelle signature avec shim. Il suffit d'exécuter
Sudo update-secureboot-policy --enable, puis suivez les étapes ci-dessus