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

101

Je passe d’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 crois que cela 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.

J'ai aussi 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.

Une idée de la façon de charger vboxdrv tout en conservant le démarrage sécurisé?

Mise à jour 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, 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 Windows parallèle.

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? / p>     

posée jans 22.04.2016 - 18:10
la source

6 réponses

137

Depuis la version 4.4.0-20 du noyau, les modules non signés ne sont pas autorisés à être exécutés avec Secure Boot activé. Comme vous souhaitez conserver le démarrage sécurisé, la prochaine étape logique consiste à signer ces modules.

Essayons donc.

  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 que 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 exemple avec des images. Le système redémarrera une fois de plus.

  6. Confirmez que la clé est inscrite

    mokutil --test-key MOK.der
    

Si VirtualBox ne se charge toujours pas, cela peut être dû au fait que le module ne s'est pas 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: article détaillé du site Web pour Fedora et < a href="https://github.com/Canonical-kernel/Ubuntu-kernel/blob/master/Documentation/module-signing.txt"> Implémentation Ubuntu de la signature du module. @zwets pour sécurité supplémentaire . @shasha_trn pour en mentionnant tous les modules .

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

    
réponse donnée Majal 06.05.2016 - 07:57
la source
11

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 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 à partir du mot de passe (par exemple, entrez un caractère (5), etc.).

Après le démarrage des 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
    
réponse donnée Pocho 26.04.2016 - 18:16
la source
4

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

sudo apt install mokutil
sudo mokutil --disable-validation

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

    
réponse donnée Pilot6 25.04.2016 - 09:39
la source
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) 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.

    
réponse donnée Reling 23.04.2016 - 00:41
la source
0

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, alors 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 le programme d'installation sudo / sbin / rcvboxdrv

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

J'ai toujours mon bios défini comme UEFI.

    
réponse donnée David Haynes 23.04.2016 - 18:22
la source
0
J'ai eu le même problème aujourd'hui, j'ai Windows 10 et Ubuntu 15.10 sur un double démarrage 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 machines virtuelles avec le même message d'erreur:

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

Je soupçonnais le problème de 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.

Mise à jour : comme @zwets l’a indiqué à juste titre dans le commentaire, l’activation des modules hérités entraîne la désactivation de l’amorçage sécurisé.

    
réponse donnée Zeine77 23.04.2016 - 01:23
la source

Lire d'autres questions sur les étiquettes