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

53

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/vboxconfigcomme 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 dire - et, autant que je sache, il n'y a pas de message d'erreur dans la sortie du journal - ce qui rend la situation encore plus exaspérante.

Quelqu'un a-t-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 - ???

Homunculus Reticulli
la source
2
"Le démarrage sécurisé est activé sur les paramètres du BIOS de mon ordinateur portable." - Cela peut faire partie de votre problème. Je me souviens avoir entendu quelque temps auparavant que le démarrage sécurisé avait cassé la VBox.
Android Dev
Une autre question similaire: askubuntu.com/questions/760671/…
Dan Dascalescu

Réponses:

64

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 enregistrée 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 vous sera demandée. Choisissez «Enroll MOK» (inscrire MOK). La clé importée à l'étape 3 doit alors être importée. Terminez les étapes d'inscription, puis poursuivez le démarrage. Le noyau Linux enregistre les clés qui sont 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-modulesafin qu'il puisse être facilement exécuté lorsque de nouveaux noyaux sont installés dans le cadre de mises à jour régulières. :

    #!/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
    

    Puis:

    # 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 l’amorçage du nouveau noyau, car il dépend de la version du noyau à signer modinfo -net l’ uname -rindique.

  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 .

Dev Android
la source
1
Je reçois une erreur: vboxdrv.sh: failed: modprobe vboxnetflt failed. Please use 'dmesg' to find out why. dmesg:[70567.246789] vboxdrv: Found 2 processor cores [70567.267310] vboxdrv: TSC mode is Invariant, tentative frequency 2166734189 Hz [70567.267315] vboxdrv: Successfully loaded version 5.0.40_Ubuntu (interface 0x00240000)
marshy101
5
Note à propos de 18.04+: le grep suggéré devrait se lire comme suit: dmesg|grep 'EFI:'au lieu dedmesg|grep 'EFI: Loaded cert'
gkephorus
3
Absolument, je ne sais pas et je ne comprends pas ce que ça fait, mais ça a fonctionné.
Naneri
1
Juste au cas où certains en auraient besoin: J'ai eu ce problème sans UEFI ou en mode sécurisé. Dans mon cas, l'installation de virtualbox-dkms sur 18.04.x ​​était interrompue. Mon correctif était: apt purge virtualbox-dkms && apt installer virtualbox-dkms && modprobe vboxdrv
gorlok
1
Si vous mettez virtualbox de la version 5.2 à la version 6.0, n'oubliez pas les étapes 6 et 7.
Voleger
12

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.

Lee Gildemeester
la source
2
Y a-t-il une raison pour laquelle vous ne voudriez pas faire cela?
Taegost
En raison d'une surtension ou de quelque chose que mon BIOS avait réinitialisé, je devais le faire. Maintenant, je ne reçois pas l'erreur ci-dessus.
Jamadagni