72 votes

vboxdrv.sh : failed : modprobe vboxdrv failed. Veuillez utiliser 'dmesg' pour savoir pourquoi.

J'ai des problèmes pour faire fonctionner VirtualBox sur mon ordinateur portable Ubuntu. Mon ordinateur portable est en double démarrage, et fonctionne (Windows 10 - je pense, je ne l'ai pas utilisé depuis des années), ainsi qu'Ubuntu 16.0.4 LTS.

J'ai activé le démarrage sécurisé dans les paramètres du BIOS de mon ordinateur portable.

Je suis conscient que des questions similaires ont été postées ici, notamment les deux suivantes :

J'ai suivi toutes les instructions données dans les réponses à 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 - j'ai absolument aucune idée ce que dmesg vient de cracher - et pour autant que je puisse dire, il n'y a aucun message d'erreur dans le journal de sortie - 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 le démarrage sécurisé activé dans le BIOS ? ? - Si oui, quelle est la solution ? ? ??!

Beaucoup de gens ont ce problème - même en remontant quelques années en arrière. Il est très étrange que personne ne semble avoir une solution pour cela - ? ????

87voto

VirtualBox + Secure Boot + Ubuntu = échec

Le problème est l'exigence que tous les modules du noyau doivent être signés. par une clé approuvée par le système UEFI, sinon le chargement échoue. Ubuntu ne signe pas les modules de noyau tiers vbox*, mais donne plutôt à l'utilisateur l'option de désactiver le démarrage sécurisé lors de l'installation du logiciel. mais donne à l'utilisateur la possibilité de désactiver Secure Boot lors de l'installation de la paquet virtualbox. Je pourrais faire cela, mais je verrais alors apparaître un message ennuyeux "Booting in insecure mode" à chaque fois que la machine démarrage de la machine, et l'installation de Windows 10 en double amorçage que j'ai ne fonctionnerait pas.

Ubuntu 16.04 sur un Dell Latitude E7440 avec BIOS A18, et avec une installation Windows 10 en double boot.

Le crédit va à la principale source d'information 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 de Ask Ubuntu : Impossible de charger 'vboxdrv' après la mise à jour vers Ubuntu 16.04 (et je veux conserver le démarrage sécurisé)

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

  1. Installez le paquetage virtualbox. Si l'installation détecte que Secure Boot est activé, le problème sera présenté comme suit et vous aurez la possibilité de désactiver Secure Boot. 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-signing/ pour stocker tout ce qui concerne la signature des modules du 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 reconnue par le système. Il s'agit d'un processus en deux étapes où la clé est d'abord importée, puis doit être enrôlée lorsque le la machine est démarrée la fois suivante. Un simple mot de passe est suffisant, puisqu'il ne s'agit que d'une utilisation temporaire.

    # 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 MOK manager devrait démarrer automatiquement. Il demandera des parties du mot de passe fourni à l'étape 3. Choisissez "Enroll MOK", alors vous devriez voir la clé importée à l'étape 3. Terminez les étapes d'inscription, puis continuez avec le démarrage. Le noyau Linux enregistrera les clés qui sont chargées. chargées, et vous devriez être capable de voir votre propre clé avec la commande : dmesg|grep 'EFI: Loaded cert'

  5. En utilisant un utilitaire de signature livré avec les fichiers de construction du noyau, signez tous les modules VirtualBox en utilisant la clé privée MOK générée à l'étape 2. Je mets ceci dans un petit script /root/module-signing/sign-vbox-modules Il peut donc ê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

    Et puis :

    # chmod 700 /root/module-signing/sign-vbox-modules
  6. Exécutez le script de l'étape 5 en tant que root. Vous devrez exécuter la signature script à chaque fois qu'une nouvelle mise à jour du noyau est installée, puisque ceci provoquera une reconstruction des modules tiers de VirtualBox. Utilisez le script seulement après que le nouveau noyau ait été démarré, puisqu'il s'appuie sur le module modinfo -n y uname -r pour indiquer pour quelle version du noyau il faut signer.

  7. Chargez le module vboxdrv et démarrez VirtualBox :

    # modprobe vboxdrv

Cette procédure peut également être utilisée pour signer d'autres noyaux de tiers. tiers, comme les pilotes graphiques nvidia, si cela est nécessaire. (J'ai pas testé cela moi-même).

Note : La réponse ci-dessus est entièrement tirée de l'article du blog d'Øyvind Stegard, VirtualBox + Secure Boot + Ubuntu = échec .

21voto

Lee Gildemeester Points 323

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

J'ai pu le résoudre en

en démarrant dans le BIOS et en allant dans > advanced (f7) > boot > faites défiler jusqu'à "secure boot" > changez "Windows EUFI mode" en "other OS".

Ma virtualbox fonctionne parfaitement maintenant.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X