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

130

Je passe d'Ubuntu 15.10 à 16.04 et depuis lors, VirtualBox 5.0.18 ne démarre plus mes VM. Il se plaint que 'vboxdrv' ne soit pas chargé. Alors j'essaye de le charger et j'obtiens l'erreur suivante:

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

Je crois qu'il est lié au démarrage sécurisé que j'utilise et que je souhaite continuer à utiliser. En fait, avec Ubuntu 15.10, le démarrage sécurisé et VirtualBox fonctionnaient parfaitement.

J'ai aussi essayé de savoir $ sudo apt-get --reinstall install virtualbox-dkmsqui avait construit le module du noyau avec succès, mais je n'ai pas résolu ce problème.

Avez-vous une idée de la façon de charger vboxdrv tout en maintenant l’activation du démarrage sécurisé?

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

Remarque : Si vous ne craignez pas de désactiver le démarrage sécurisé, reportez -vous à la section Pourquoi est-ce que je reçois le message "La clé requise n'est pas disponible" lors de l'installation de modules de noyau tiers ou après une mise à niveau du noyau? au lieu.

jans
la source
3
Voir le site askubuntu.com/questions/762254/…
Pilote6 le
Bien que cette question soit une copie de askubuntu.com/questions/762254/… , cette question ne comporte pas la réponse donnée par @Majal ci-dessous.
Zwets
1
Guide étape par étape: stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail
Dušan Maďar
FWIW, pour Googlers: avec Ubuntu 18.04, l' installation aptitude install virtualbox virtualbox-dkms va signer le module et vous demander un mot de passe unique (?). Redémarrez, entrez MOK config et enregistrez la clé en utilisant ce mot de passe.
Raphaël

Réponses:

177

Depuis la version 4.4.0-20 du noyau, il a été décidé que les modules du noyau non signés ne seraient pas autorisés à s'exécuter avec Secure Boot activé. Comme vous souhaitez conserver Secure Boot, l'étape logique suivante 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 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 deexport KBUILD_SIGN_PIN='yourpassword'

  2. Signer le module (vboxdrv pour cet exemple, mais répétez l'opération pour les autres modules 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. Confirmer que le module est signé

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

    sudo mokutil --import MOK.der
    

    qui vous demandera un mot de passe 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 images. Le système redémarre 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 ne s'est pas chargé ( sudo modprobe vboxdrvcela résoudra le problème) ou que la clé n'est pas signée. Répétez simplement cette étape et tout devrait bien fonctionner.

Ressources: Article détaillé sur le site Web pour la mise en œuvre par Fedora et Ubuntu de la signature de module. @zwets pour plus de sécurité . @shasha_trn pour avoir mentionné tous les modules .

Ressource supplémentaire: j'ai créé un script bash pour mon propre usage à chaque virtualbox-dkmsmise à niveau, écrasant ainsi les modules signés. Découvrez ma vboxsign à l'origine sur GitHub .

Majal
la source
7
J'ai également signé les modules vboxnetadp, vboxnetflt, vboxpci pour avoir un réseau et passer des périphériques pci dans des machines virtuelles.
sasha_trn
4
En prolongeant la réponse de @ majal, j'ai dû exécuter sudo apt install --reinstall virtualbox-dkmsavant de suivre les instructions fournies.
TylersSN
1
@ zwets pourriez-vous éventuellement expliquer comment définir correctement la KBUILD_SIGN_PINvariable d'environnement? export KBUILD_SIGN_PIN=passwordet export KBUILD_SIGN_PIN="password"avant l' étape 2 à la fois entraînéSSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117
adempewolff
3
@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 apostrophes (').
Zwets
1
@Majal Merci pour votre réponse! Je suis également favorable à la signature des modules au lieu de désactiver la fonctionnalité. Je peux ajouter: (1) Ceci s'applique également aux modules VMware "vmmon" et "vmnet", qui partagent le même sort. (2) Lorsque vous ajoutez vos clés créées, choisissez votre mot de passe judicieusement. Pendant la phase d'inscription au redémarrage et au démarrage sécurisé, la configuration de votre clavier peut différer de vos paramètres régionaux. (-> US-Layout)
one-mb
15

Sur mon système, j'ai fait ce qui suit pour que cela fonctionne:

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 affiche une boîte de dialogue pour configurer le gestionnaire MOK. J'ai désactivé SecureBoot à partir de cette boîte de dialogue, elle a demandé plusieurs caractères à partir du mot de passe (c.-à-d. Entrer le 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 indique toujours que SecureBoot est activé:

sudo mokutil --sb-state
SecureBoot enabled
Pocho
la source
9
Comme indiqué dans ma question, je souhaite continuer à utiliser le démarrage sécurisé. Donc, désactiver le démarrage sécurisé ne résout pas le problème.
jans
2
Je ne voulais pas désactiver le démarrage sécurisé, mais je devais le faire puisque rien d'autre ne fonctionnerait - ne voulez pas commencer à signer les choses manuellement chaque fois qu'une mise à jour du noyau est disponible. Dommage que ce soit la seule solution facile. Au fait, UEFI dit toujours que le démarrage sécurisé est activé. ¯_ (ツ) _ / ¯
jaywink
4

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

sudo apt install mokutil
sudo mokutil --disable-validation

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

Pilote6
la source
2
J'ai aussi essayé d'exécuter sudo mokutil --disable-validation. Lors de l'exécution de cette commande, lors du prochain démarrage, on me demande de désactiver le démarrage sécurisé, d'ajouter une clé ou un hachage à partir du disque. Puisque je ne veux pas désactiver le démarrage sécurisé, il semble que cela ne résolve pas mon problème non plus. Faites-le moi savoir au cas où j'aurais mal compris cette commande.
jan
2
Essayez de désactiver le démarrage sécurisé. Vous pouvez l'activer, si cela ne vous aide pas.
Pilot6
J'ai essayé de désactiver le démarrage sécurisé - mais il est toujours activé :( (Ubuntu 18.04)
xhudik
0

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

Reling
la source
Hey, pourriez-vous s'il vous plaît élaborer? Où l'avez-vous téléchargé? PPA ou fichier deb?
Karthik Nishanth
1
J'ai téléchargé le pack d'extension à partir des téléchargements sur le site VirtualBox , le lien est "VirtualBox 5.0.18 Pack d'extension Oracle VM VirtualBox -> Toutes les plates-formes prises en charge ". Ensuite, 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 remplaçait l'ancienne version de "Oracle VM VirtualBox Extension Pack" (version 5.0.14rxxxxxx).
Reling
1
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
1
Ceci n’a aucun rapport avec le problème du PO. Le message d'erreur "La clé requise n'est pas disponible" indique que le problème est dû à un module de noyau non signé sur une plate-forme activée pour le démarrage sécurisé. Aucune mise à jour de VirtualBox ne peut résoudre ce problème à moins d' inclure un module signé à l'aide d'une clé approuvée par le noyau. Soit Canonical doit le signer, soit Oracle, et sa clé publique doit être ajoutée aux clés approuvées du noyau (ou de votre plate-forme).
Zwets
0

Très bien, donc après un peu de test, je suis presque sûr que c'est un problème de démarrage sécurisé.

Comme dans le cas où il est activé, ceci est lancé:

AVERTISSEMENT: le module de 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 le chargement a échoué. Recompilez le module du noyau et installez-le avec le programme d'installation sudo / sbin / rcvboxdrv

Cependant, si le démarrage sécurisé est désactivé, virtualbox se charge parfaitement, sans erreur.

J'ai toujours mon bios en UEFI.

David Haynes
la source
3
Comme indiqué dans ma question, je souhaite continuer à utiliser le démarrage sécurisé. Donc, désactiver le démarrage sécurisé ne résout pas le problème.
Jans
0

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

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

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

Je soupçonnais un problème avec UEFI car, lors de la mise à niveau, le programme d’installation me demandait si je voulais le désactiver. J’ai répondu non (car oui, mon Windows pourrait être inutilisable).

Ce que j’ai fait est d’aller dans le Bios et d’activer la prise en charge du démarrage du BIOS hérité SANS la désactivation du démarrage sécurisé.

Virtualbox fonctionne bien maintenant.

Mise à jour : Comme @zwets l'a justement souligné dans le commentaire, l'activation de modules hérités entraîne la désactivation de l'amorçage sécurisé.

Zeine77
la source
2
En fait, j'ai également besoin de l'UEFI pour démarrer une installation Windows parallèle. 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é le support pour les modules de BIOS hérités? Ceci est une autre option du bios UEFI, différente de celle du démarrage sécurisé.
Zeine77
1
@ Zeine77 pouvez-vous vérifier que votre BIOS autorise l'activation de "modules hérités" alors que Secure Boot reste activé ? Cela est très peu probable, car la première option permet à du code non approuvé de s'exécuter dans l'espace du noyau, ce qui va à l'encontre de l'objectif de la seconde.
Zwets
@zwets vous avez raison, je viens de vérifier les paramètres de mon bios; et l'activation de modules hérités a entraîné la désactivation de l'amorçage sécurisé. Comme expliqué dans la réponse, j'ai supposé que la désactivation du démarrage sécurisé provoquerait l'échec du démarrage de Windows 10, ce n'est pas le cas. Lors de la première installation de 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 la version pré-installée de Win 10 fonctionne correctement avec le mode sécurisé désactivé?
Zeine77