web-dev-qa-db-fra.com

Pourquoi ai-je le message "Required key not available" lors de l'installation de modules de noyau tiers ou après une mise à niveau du noyau?

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?

73
Pilot6

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 mokutilname__.

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.

79
Pilot6

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.

  1. 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/"
    
  2. Signer le module

    Sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /path/to/module
    
  3. 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

  4. 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.

31
Majal

Vous pouvez désactiver le démarrage sécurisé (UEFI) dans le BIOS en procédant comme suit:

  1. Redémarrez votre ordinateur et entrez dans le menu du BIOS (dans mon cas, appuyez sur F2)

  2. Recherchez Secure Boot et passez à Legacy

Dans une carte mère ASUS:

  • Accéder au mode avancé (F7)
  • Allez dans l'option de démarrage sécurisé dans la section de démarrage
  • Changez le "mode Windows UEFI" avec "Autre système d'exploitation"
  • Enregistrer et redémarrer pour appliquer les paramètres (F10)
6
Sputnik

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

3
Kent Lin