Question Impossible de charger 'vboxdrv' après la mise à niveau vers Ubuntu 16.04 (et je veux conserver un démarrage sécurisé)


Je passe de Ubuntu 15.10 à 16.04 et, depuis, VirtualBox 5.0.18 ne démarre plus mes machines virtuelles. Il se plaint que 'vboxdrv' n'est pas chargé. J'essaie donc de le charger et d'obtenir l'erreur suivante:

$ sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Je pense que c'est lié au démarrage sécurisé que j'utilise et que je veux continuer à utiliser. En fait, avec Ubuntu 15.10, le démarrage sécurisé et VirtualBox fonctionnaient correctement.

Aussi j'ai essayé $ sudo apt-get --reinstall install virtualbox-dkms qui a construit le module de noyau avec succès mais n’a pas résolu ce problème.

Une idée de comment charger vboxdrv tout en gardant le démarrage sécurisé activé?

Mise à jour 2: Aussi j'ai essayé d'exécuter sudo mokutil --disable-validation. Lors de l'exécution de cette commande, lors du prochain démarrage, je suis invité à désactiver le démarrage sécurisé, à ajouter une clé ou un hachage à partir du disque. Comme je ne veux pas désactiver le démarrage sécurisé, il semble que cela ne résout pas le problème non plus. Je veux aussi garder UEFI activé pour une installation parallèle de Windows.

Remarque: Si cela ne vous dérange pas de désactiver le démarrage sécurisé, voir Pourquoi est-ce que j'obtiens la "clé requise non disponible" lors de l'installation de modules de noyau tiers ou après une mise à niveau du noyau? au lieu.


104
2018-04-22 16:10


origine


moi aussi. essayé de réinstaller / purger - Karthik Nishanth
Voir askubuntu.com/questions/762254/… - Pilot6
Bien que cette question soit un double de askubuntu.com/questions/762254/…, cette question ne comporte pas la réponse donnée par @Majal ci-dessous. - zwets
Guide étape par étape: stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail - Dušan Maďar


Réponses:


Depuis la version 4.4.0-20 du noyau, il a été appliqué que non signé Les modules du noyau ne seront pas autorisés à fonctionner avec Secure Boot activé. Comme vous voulez conserver le démarrage sécurisé, la prochaine étape logique est de signe ces modules.

Alors essayons ça.

  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 common name/"
    

    Option: pour plus de sécurité, ignorez le commutateur -nodes, qui vous demandera un mot de passe. Ensuite, avant de passer à l’étape suivante, assurez-vous de export KBUILD_SIGN_PIN='yourpassword'

  2. Signez le module (vboxdrv pour cet exemple, mais répétez pour les autres modules dans ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko) pour une fonctionnalité complète)

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. Confirmez que le module est signé

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. Enregistrez les clés pour un démarrage sécurisé

    sudo mokutil --import MOK.der
    

    qui demandera un mot de passe à utiliser pour confirmer l'importation à l'étape suivante.

  5. Redémarrez et suivez les instructions pour inscrire MOK (clé du propriétaire de la machine). Voici un échantillon Avec des photos. Le système redémarrera une fois de plus.

  6. Confirmer que la clé est inscrite

    mokutil --test-key MOK.der
    

Si VirtualBox ne se charge toujours pas, c'est peut-être parce que le module n'a pas été chargé (sudo modprobe vboxdrv corrigera cela) ou que la clé n'est pas signée. Répétez simplement cette étape et tout devrait bien fonctionner.

Ressources: Site détaillé article pour Fedora et Implémentation Ubuntu de la signature du module. @zwets pour sécurité supplémentaire. @shasha_trn pour mentionner tous les modules.

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


143
2018-05-06 05:57



J'ai également signé des modules vboxnetadp, vboxnetflt, vboxpci pour avoir des périphériques PCI de réseau et de jet dans les machines virtuelles. - sasha_trn
Un ajout pour la sécurité: la clé privée MOK.priv généré par openssl -nodes comme ci-dessus n'est pas protégé par un mot de passe. Ainsi, en principe, un programme malveillant peut l'utiliser pour signer un module compromis ou même corrompre le chargeur de démarrage, car votre clé de signature se trouve désormais dans le stockage matériel en tant que clé approuvée. Une solution plus sûre consiste à omettre le -nodes option. À l'étape 1 openssl demandera alors un mot de passe pour protéger la clé privée. Avant l'étape 2, lors de la signature, définissez le KBUILD_SIGN_PIN variable d'environnement au mot de passe que vous avez spécifié à l'étape 1. - zwets
En étendant la réponse de @ majal, je devais exécuter sudo apt install --reinstall virtualbox-dkms avant de suivre les instructions fournies. - TylersSN
@zwets pourriez-vous éventuellement expliquer comment définir correctement le KBUILD_SIGN_PIN variable environnementale? export KBUILD_SIGN_PIN=password et export KBUILD_SIGN_PIN="password" avant l'étape 2 les deux ont abouti à SSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117 - adempewolff
@adempewolff Si votre mot de passe contient des caractères que votre shell interprétera (par exemple, "$" dans une chaîne entre guillemets), vous devrez le placer entre des apostrophes ('). - zwets


Sur mon système, j'ai fait ce qui suit:

Exécutez mokutil:

sudo mokutil --disable-validation

Ensuite, mokutil m'a demandé de définir un mot de passe pour le gestionnaire MOK. Après le redémarrage du PC, le BIOS a montré une boîte de dialogue pour configurer le gestionnaire de MOK. J'ai désactivé SecureBoot à partir de cette boîte de dialogue, il a demandé plusieurs caractères du mot de passe (par exemple, entrez un caractère (5), etc.).

Après avoir démarré les modules vboxdrv chargés correctement.

lsmod | grep vboxdrv
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci

Curieusement, mokutil montre toujours que SecureBoot est activé:

sudo mokutil --sb-state
SecureBoot enabled

13
2018-04-26 16:16



Comme indiqué dans ma question, je souhaite continuer à utiliser le démarrage sécurisé. Désactiver le démarrage sécurisé ne résout pas le problème. - jans
Je ne voulais pas désactiver le démarrage sécurisé, mais à la fin, rien ne fonctionnait - ne voulez pas commencer à signer manuellement à chaque mise à jour du noyau. Dommage, c'est la seule solution facile. Btw, UEFI dit toujours que le démarrage sécurisé est activé. ¯_ (ツ) _ / ¯ - jaywink


Vous pouvez désactiver le contrôle de validation par

sudo apt install mokutil
sudo mokutil --disable-validation

Après cela, les paquets DKMS doivent être installés.


4
2018-04-25 07:39



Aussi j'ai essayé d'exécuter sudo mokutil --disable-validation. Lors de l'exécution de cette commande, lors du prochain démarrage, je suis invité à désactiver le démarrage sécurisé, à ajouter une clé ou un hachage à partir du disque. Comme je ne veux pas désactiver le démarrage sécurisé, il semble que cela ne résout pas le problème non plus. S'il vous plaît faites le moi savoir au cas où j'ai mal compris cette commande. - jans
Essayez de désactiver le démarrage sécurisé. Vous pouvez le réactiver si cela ne vous aide pas. - Pilot6


J'ai eu une erreur sur vboxdrv après la mise à niveau aussi. Mais il y avait un problème avec l'ancienne version (5.0.14) d'Oracle VM VirtualBox Extension Pack. J'ai téléchargé et installé la nouvelle version (5.0.18) de ce pack et le problème a disparu.


0
2018-04-22 22:41



Hey, pourriez-vous s'il vous plaît élaborer? Où l'avez-vous téléchargé? Fichier PPA ou deb? - Karthik Nishanth
J'ai téléchargé le pack d'extension à partir de téléchargements sur le site VirtualBox, le lien est "VirtualBox 5.0.18 Oracle VM VirtualBox Extension Pack -> Toutes les plateformes prises en charge"Puis j'ai ouvert Fichier> Préférences sur Oracle VM Virtual Box Manager, sélectionné" Extensions "et ajouté le fichier téléchargé à la liste. Il a remplacé l'ancienne version de" Oracle VM VirtualBox Extension Pack "(5.0.14rxxxxxx). - Reling
Le pack d'extension ne corrige pas l'erreur. L'erreur concerne la signature du module - Karthik Nishanth
Cela ne s'applique pas à mon problème. - jans
Ceci n'est pas lié au problème de l'OP. Le message d'erreur "Clé requise non disponible" indique que le problème est dû à un module de noyau non signé sur une plateforme compatible Secure Boot. Aucune mise à jour de VirtualBox ne peut résoudre ce problème sauf si il comprend un module signé en utilisant une clé approuvée par le noyau. C'est à dire. Canonical doit le signer ou Oracle doit le signer et sa clé publique doit être ajoutée aux clés de confiance du noyau (ou de votre plate-forme). - zwets


Bon, après quelques tests, je suis sûr que c'est un problème de démarrage sécurisé.

Comme si elle était activée, ceci est lancé:

ATTENTION: le module du noyau vboxdrv n'est pas chargé. Soit il n'y a pas de module            disponible pour le noyau actuel (4.4.0-21-generic) ou il n'a pas réussi à            charge. Veuillez recompiler le module du noyau et installez-le par la configuration de sudo / sbin / rcvboxdrv

Cependant, si l'initialisation sécurisée est désactivée, virtualbox se charge parfaitement sans erreurs.

J'ai toujours mon bios en UEFI.


0
2018-04-23 16:22



Comme indiqué dans ma question, je souhaite continuer à utiliser le démarrage sécurisé. Désactiver le démarrage sécurisé ne résout pas le problème. - jans


J'ai eu le même problème aujourd'hui, j'avais Windows 10 et Ubuntu 15.10 sur un dual boot avec uefi activé sur Bios (je ne l'ai pas désactivé pour que je puisse exécuter Windows pré-installé).

Après la mise à niveau vers Ubuntu 16.04, VirtualBox a cessé de charger mes VM avec le même message d'erreur:

modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Je soupçonnais un problème UEFI car lors de la mise à niveau, le programme d'installation m'a demandé si je voulais le désactiver, ce à quoi j'ai répondu Non (car Oui peut rendre mon Windows inutilisable).

Ce que j'ai fait va sur Bios et permet de prendre en charge le démarrage du BIOS hérité SANS désactiver le démarrage sécurisé.

Virtualbox fonctionne bien maintenant.

Mettre à jour: Comme @zwets l'a indiqué à juste titre dans le commentaire, l'activation des modules hérités entraîne la désactivation du démarrage sécurisé.


0
2018-04-22 23:23



En fait, j'ai aussi besoin de UEFI pour démarrer une installation parallèle de Windows. Donc, le désactiver n'est pas une option pour moi non plus. J'ai mis à jour ma question en conséquence. - jans
Avez-vous activé la prise en charge des modules BIOS hérités? Ceci est une autre option du BIOS UEFI, différente du démarrage sécurisé. - Zeine77
@ Zeine77 pouvez-vous vérifier que votre BIOS permet d'activer les "modules hérités" tandis que le démarrage sécurisé reste activé? Cela est hautement improbable, car la première option permet au code non fiable de s'exécuter dans l'espace du noyau, ce qui va à l'encontre de l'objectif du second. - zwets
@zwets vous avez raison, je viens de vérifier mes paramètres bios; et l'activation des modules hérités a désactivé le démarrage sécurisé. Je suppose, comme expliqué dans la réponse, que le fait de désactiver le démarrage sécurisé entraînerait l'échec du démarrage de Windows 10, ce qui n'est pas le cas. Lorsque j'ai installé 15.10 (il y a quelques mois), j'ai pris soin de ne pas désactiver le démarrage sécurisé car cela endommagerait l'installation de Win 10. Cela signifie-t-il que Windows 10 pré-installé fonctionne correctement avec le mode sécurisé désactivé? - Zeine77