web-dev-qa-db-fra.com

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

J'ai mis à jour d'Ubuntu 15.10 à 16.04 et depuis lors, VirtualBox 5.0.18 ne démarre plus mes machines virtuelles. 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 également essayé $ Sudo apt-get --reinstall install virtualbox-dkms, qui a construit le module du noyau avec succès, mais n'a 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é?

Update 2 : J'ai également 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. Aussi, je veux garder UEFI activé pour une installation parallèle de Windows.

Remarque : Si le fait de désactiver le démarrage sécurisé ne vous dérange pas, voir Pourquoi est-ce que je reçois le message "Required key not available" lorsque le noyau tiers installé est installé) modules ou après une mise à niveau du noyau? à la place.

123
jans

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é. 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 de export KBUILD_SIGN_PIN='yourpassword'

  2. Signer le module (vboxdrv pour cet exemple, mais répétez l'opération 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. 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 vboxdrv 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: Site Web détaillé article pour Fedora et implémentation Ubunt de la signature du module. @zwets for sécurité supplémentaire . @shasha_trn for en mentionnant tous les modules .

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 .

167
Majal

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 (par exemple, entrez 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
14
Pocho

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.

4
Pilot6

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) d'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.

0
Reling

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 le support du démarrage du BIOS hérité SANS désactiver le démarrage sécurisé.

Virtualbox fonctionne bien maintenant.

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

0
Zeine77

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.

Mon bios est toujours défini comme UEFI.

0
David Haynes