98 votes

Pourquoi le message "Required key not available" apparaît-il lors de l'installation de modules de noyau tiers ou après une mise à jour du noyau ?

Ce problème ne se produit que sur les systèmes UEFI avec Secure Boot activé.

Lorsque j'essaie d'installer les modules DKMS comme VirtualBox, les pilotes Nvidia ou Broadcom, ils ne s'installent pas et je reçois le message suivant Required key not available quand j'essaie de modprobe les.

VirtualBox se plaint que vboxdrv n'est pas chargé.

Broadcom wl est présenté dans lspci -k comme module du noyau mais n'est pas utilisé. sudo modprobe wl jette Required key not available .

Ce problème peut également se produire lorsque j'installe certains modules du noyau à partir des sources git.

Ce problème peut apparaître après une mise à jour du noyau : adaptateur sans fil désactivé, écran noir après un redémarrage, etc.

Comment puis-je le réparer ?

104voto

user167850 Points 230

Depuis le noyau Ubuntu 4.4.0-20, la fonction EFI_SECURE_BOOT_SIG_ENFORCE La configuration du noyau a été activée. Cela empêche le chargement de modules tiers non signés si le démarrage sécurisé UEFI est activé.

Le moyen le plus simple de résoudre ce problème est de désactiver Secure Boot dans les paramètres UEFI (BIOS).

Dans la plupart des cas, vous pouvez accéder aux paramètres UEFI en utilisant le menu Grub. Appuyez sur ESC au démarrage, entrez dans le menu Grub et sélectionnez System Setup. L'option Secure Boot doit se trouver dans la section "Security" ou "Boot" de l'UEFI.

Vous pouvez accéder directement à l'UEFI, mais cela dépend de votre matériel. Lisez le manuel de votre ordinateur pour savoir comment y accéder. Il peut s'agir Del ou F2 au démarrage, ou autre chose.

Une autre façon de procéder est de désactiver Secure Boot en utilisant mokutil .

Depuis la version 4.4.0-21.37 du noyau Ubuntu, cela peut être corrigé en exécutant

sudo apt install mokutil
sudo mokutil --disable-validation

Il vous faudra créer un mot de passe. Le mot de passe doit comporter au moins 8 caractères. Après le redémarrage, l'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 précédemment créé. Certains microprogrammes UEFI ne demandent pas le mot de passe complet, mais d'entrer certains caractères de celui-ci, comme le 1er, le 3e, etc. Soyez prudent. Certaines personnes ne comprennent pas cela. Je ne l'ai pas compris du premier coup non plus ;-)

Mise à jour : Maintenant cette configuration du noyau est activée dans tous les noyaux Ubuntu supportés. Les Ubuntu 16.04, 15.10 et 14.04 sont concernées.

46voto

jsj Points 422

Comme Proposition de par l'utilisateur @zwets, que je copie (avec modifications) une réponse ici :

Depuis la version 4.4.0-20 du noyau, il était obligatoire de respecter les règles suivantes non signé Les modules du noyau ne seront pas autorisés à s'exécuter avec Secure Boot activé. Si vous voulez garder Secure Boot et exécute également ces modules, la prochaine étape logique consiste à signe 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

Note 1 : Il peut y avoir plusieurs fichiers à signer pour un seul pilote/module, donc /path/to/module peut devoir être remplacé par $(modinfo -n <modulename>) par exemple $(modinfo -n vboxdrv)

Note 2 : sudo kmodsign sha512 ./MOK.priv ./MOK.der /path/to/module est une alternative si sign-file n'est pas disponible.

  1. Enregistrer les clés de Secure Boot

    sudo mokutil --import MOK.der

    Fournir un mot de passe pour une utilisation ultérieure après le redémarrage

  2. Reboot et suivez les instructions pour enregistrer la MOK (Machine Owner Key). Voici un échantillon avec des photos. Le système va redémarrer une fois de plus.

Si la clé a été enregistrée correctement, elle apparaîtra sous la rubrique sudo mokutil --list-enrolled .

Veuillez me faire savoir si vos modules fonctionneraient de cette manière sur Ubuntu 16.04 (sur le noyau 4.4.0-21, je crois).

Ressources : Site web détaillé article pour Fedora y Mise en œuvre d'Ubuntu de la signature du module. (ils y ont travaillé) ;-)

Ressource supplémentaire : J'ai créé un bash script pour mon propre usage chaque fois que virtualbox-dkms met à jour et écrase ainsi les modules signés. Consultez mon vboxsign à l'origine sur GitHub .

Note supplémentaire pour la sécurité (extra-)consciente : ;-)

Puisque la clé privée que vous avez créée ( MOK.priv dans cet exemple) peut être utilisé par quiconque peut y avoir accès, il est de bonne pratique de le garder en sécurité. Vous pouvez chmod le, crypter ( gpg ), ou le stocker dans un autre endroit sûr(r). Ou, comme noté dans ce commentaire supprimer l'option -nodes à l'étape numéro 1. Cela va crypter la clé avec une phrase de passe.

7voto

Sputnik Points 115

Vous pouvez désactiver Secure Boot (UEFI) dans le BIOS en procédant comme suit :

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

  2. Recherchez Secure Boot et passez à Legacy

Dans une carte mère ASUS :

  • Passez au mode avancé (F7)
  • Allez dans l'option Secure Boot sous la section Boot.
  • Remplacez "Windows UEFI mode" par "Other OS".
  • Enregistrer et redémarrer pour appliquer les paramètres (F10)

3voto

Kent Lin Points 56

Vous pouvez également désactiver Secure Boot dans l'exécution de shim-signed sudo update-secureboot-policy . Ce site page du wiki explique cette méthode :

  • Ouvrez un terminal (Ctrl + Alt + T), et exécutez sudo update-secureboot-policy, puis sélectionnez Oui.
  • Saisissez un mot de passe temporaire de 8 à 16 chiffres. (Par exemple, 12345678, nous utiliserons ce mot de passe plus tard).
  • Saisissez à nouveau le même mot de passe pour confirmer.
  • Redémarrez le système et appuyez sur n'importe quelle touche lorsque vous voyez l'écran bleu (gestion MOK).
  • Sélectionnez Change Secure Boot state
  • Saisissez le mot de passe que vous avez sélectionné à l'étape 2 et appuyez sur Entrée.
  • Sélectionnez Oui pour désactiver Secure Boot dans shim-signed.
  • Appuyez sur la touche Entrée pour terminer toute la procédure.

Vous pouvez toujours activer Secure Boot dans shim-signed à nouveau. Exécutez simplement

sudo update-secureboot-policy --enable et ensuite suivez les étapes ci-dessus

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X