web-dev-qa-db-fra.com

vboxdrv.sh: échoué: modprobe vboxdrv a échoué. S'il vous plaît utilisez 'dmesg' pour savoir pourquoi

J'ai des problèmes avec VirtualBox sur mon ordinateur portable Ubuntu. Mon ordinateur portable est à double démarrage et fonctionne (Windows 10 - je pense, ne l’utilise plus depuis des années), ainsi qu’Ubuntu 16.0.4 LTS.

Le démarrage sécurisé est activé dans les paramètres du BIOS de mon ordinateur portable.

Je suis conscient qu'il y a des questions similaires postées ici, en particulier ces deux:

J'ai suivi toutes les instructions données dans les sections réponses pour ces deux questions - mais le problème n'est toujours pas résolu.

Voici la sortie de la console, lorsque j'essaie d'exécuter virtualbox:

me@YOURBOX:~$ virtualbox
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (4.4.0-47-generic) or it failed to
         load. Please recompile the kernel module and install it by

           Sudo /sbin/vboxconfig

         You will not be able to start VMs until this problem is fixed.

voici la sortie de la console lorsque je lance /sbin/vboxconfig comme suggéré:

me@YOURBOX:~$ Sudo /sbin/vboxconfig  
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.

Voici la fin de la sortie de dmesg:

[   44.319682] audit: type=1400 audit(1491313982.374:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/evince-previewer" pid=705 comm="apparmor_parser"
[   45.041433] cgroup: new mount options do not match the existing superblock, will be ignored
[   59.682936] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready
[   59.697820] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready
[   59.702008] IPv6: ADDRCONF(NETDEV_UP): enp2s0f0: link is not ready
[   60.267000] IPv6: ADDRCONF(NETDEV_UP): enp2s0f0: link is not ready
[   62.473044] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready
[   70.681706] audit_printk_skb: 60 callbacks suppressed
[   70.681709] audit: type=1400 audit(1491314008.734:32): apparmor="STATUS" operation="profile_load" profile="unconfined" name="docker-default" pid=2009 comm="apparmor_parser"
[   70.850936] aufs 4.x-rcN-20160111
[   75.407218] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[   75.408555] Bridge firewalling registered
[   75.427172] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[   75.848416] ip_tables: (C) 2000-2006 Netfilter Core Team
[   76.703232] Initializing XFRM netlink socket
[   77.060003] IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready
[   80.101042] aufs au_opts_verify:1597:dockerd[1402]: dirperm1 breaks the protection by the permission bits on the lower branch
[  113.895236] wlp3s0: authenticate with 84:16:f9:77:e1:54
[  113.910483] wlp3s0: send auth to 84:16:f9:77:e1:54 (try 1/3)
[  113.912712] wlp3s0: authenticated
[  113.915101] wlp3s0: associate with 84:16:f9:77:e1:54 (try 1/3)
[  113.919397] wlp3s0: RX AssocResp from 84:16:f9:77:e1:54 (capab=0x1411 status=0 aid=1)
[  113.919516] wlp3s0: associated
[  113.919559] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready

Maintenant, je ne vais pas mentir - je n'ai absolument aucune idée de ce que dmesg vient de vomir - et pour autant que je sache, il n'y a pas messages d'erreur dans la sortie du journal - ce qui rend la situation encore plus exaspérante.

Quelqu'un at-il déjà installé VirtualBox 5.x sur un ordinateur portable fonctionnant sous Ubuntu 16.0.4 LTS - mais avec l'amorçage sécurisé activé sur le BIOS ? - Si oui, quelle est la solution? ???!

Beaucoup de gens ont ce problème - même il y a quelques années. il est très étrange que personne ne semble avoir de solution - ???

48

VirtualBox + Secure Boot + Ubuntu = échec

Le problème est que tous les modules du noyau doivent être signés par une clé approuvée par le système UEFI, sinon le chargement échouera. Ubuntu ne signe pas les modules de noyau vbox * tiers, mais donne plutôt à l'utilisateur la possibilité de désactiver le démarrage sécurisé lors de l'installation du paquet virtualbox. Je pouvais le faire, mais je verrais alors un message ennuyeux "Démarrer en mode non sécurisé" à chaque démarrage de la machine, ainsi que l'installation Windows 10 à double démarrage que je possède ne fonctionnerait pas.

Ubuntu 16.04 sur un Dell Latitude E7440 avec BIOS A18 et avec une installation Windows 10 à double démarrage.

Le crédit va à la source principale d'informations que j'ai utilisée pour résoudre ce problème, qui s'applique spécifiquement à Fedora/Redhat: http://gorka.eguileor.com/vbox-vmware-in-secureboot-linux-2016-update /

Et une question pertinente sur Ask Ubuntu: Impossible de charger 'vboxdrv' après la mise à niveau vers Ubuntu 16.04 (et je souhaite conserver un démarrage sécurisé)

Étapes pour le faire fonctionner, spécialement pour Ubuntu/Debian

  1. Installez le paquet virtualbox. Si l'installation détecte que le démarrage sécurisé est activé, le problème à résoudre vous sera présenté et vous aurez la possibilité de désactiver le démarrage sécurisé. Choisissez "Non".

  2. Créez une paire de clés RSA publique/privée personnelle qui sera utilisée pour signer les modules du noyau. J'ai choisi d'utiliser le compte root et le répertoire/root/module-signature/pour stocker tout ce qui concerne la signature des modules du noyau.

    $ Sudo -i
    # mkdir /root/module-signing
    # cd /root/module-signing
    # openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=YOUR_NAME/"
    [...]
    # chmod 600 MOK.priv
    
  3. Utilisez l'utilitaire MOK ("Machine Owner Key") pour importer la clé publique afin qu'elle puisse être approuvée par le système. Il s'agit d'un processus en deux étapes dans lequel la clé est d'abord importée, puis ultérieurement, elle doit être inscrite lors du prochain démarrage de la machine. Un simple mot de passe suffit, car il ne sert que temporairement.

    # mokutil --import /root/module-signing/MOK.der
    input password:
    input password again:
    
  4. Redémarrez la machine. Lorsque le chargeur de démarrage démarre, l'utilitaire EFI du gestionnaire MOK doit démarrer automatiquement. Une partie du mot de passe fourni à l’étape 3 sera demandée. Choisissez "Enroll MOK" (inscrire MOK). La clé importée à l’étape 3 doit alors être visualisée. Terminez les étapes d’enregistrement, puis poursuivez le démarrage. Le noyau Linux enregistre les clés chargées et vous devriez pouvoir voir votre propre clé avec la commande: dmesg|grep 'EFI: Loaded cert'

  5. À l'aide d'un utilitaire de signature fourni avec les fichiers de construction du noyau, signez tous les modules de VirtualBox à l'aide de la clé privée MOK générée à l'étape 2. Je l'inscris dans un petit script /root/module-signing/sign-vbox-modules, de sorte qu'il puisse être facilement exécuté lorsque de nouveaux noyaux sont installés dans le cadre d'une installation normale. mises à jour:

    #!/bin/bash
    
    for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
      echo "Signing $modfile"
      /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 \
                                    /root/module-signing/MOK.priv \
                                    /root/module-signing/MOK.der "$modfile"
    done
    

    Et alors:

    # chmod 700 /root/module-signing/sign-vbox-modules
    
  6. Exécutez le script à partir de l'étape 5 en tant que root. Vous devrez exécuter le script de signature chaque fois qu'une nouvelle mise à jour du noyau est installée, car cela entraînera une reconstruction des modules tiers de VirtualBox. Utilisez le script uniquement après le démarrage du nouveau noyau, car il repose sur modinfo -n et uname -r pour indiquer la version du noyau à signer.

  7. Charger le module vboxdrv et lancer VirtualBox:

    # modprobe vboxdrv
    

La procédure peut également être utilisée pour signer d'autres modules du noyau tiers, tels que les pilotes graphiques nvidia, si nécessaire. (Je n'ai pas testé cela moi-même.)

Remarque: La réponse ci-dessus provient entièrement du billet de blog de Øyvind Stegard, VirtualBox + Secure Boot + Ubuntu = fail .

56
Android Dev

La réponse ci-dessus fonctionne probablement bien, mais si vous voulez un moment plus facile pour cela:

J'ai pu le résoudre par

démarrer dans le BIOS et aller> advanced (f7)> boot> faites défiler jusqu'à "démarrage sécurisé"> changez le "mode Windows EUFI" en "autre système d'exploitation"

Ma virtualbox fonctionne parfaitement maintenant.

12
Lee Gildemeester