it-swarm.com.de

vboxdrv.sh: failed: modprobe vboxdrv ist fehlgeschlagen. Bitte benutzen Sie 'dmesg' um herauszufinden warum

Ich habe Probleme, VirtualBox auf meinem Ubuntu-Laptop auszuführen. Mein Laptop ist Dual Boot und läuft (Windows 10 - ich glaube, ich habe es seit Jahren nicht mehr benutzt), sowie Ubuntu 16.0.4 LTS.

Ich habe Secure Boot in den BIOS-Einstellungen meines Laptops aktiviert.

Mir ist bekannt, dass hier ähnliche Fragen gestellt werden, insbesondere die folgenden beiden:

Ich habe alle Anweisungen in den Abschnitten mit den Antworten auf diese beiden Fragen befolgt - das Problem ist jedoch weiterhin ungelöst.

Hier ist die Konsolenausgabe, wenn ich versuche, virtualbox auszuführen:

[email protected]:~$ 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.

hier ist die Konsolenausgabe, wenn ich /sbin/vboxconfig wie vorgeschlagen ausführe:

[email protected]:~$ 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.

Hier ist das Ende der Ausgabe von 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

Nun, ich werde nicht lügen - ich habe absolut keine Ahnung , was dmesg gerade ausgespuckt hat - und soweit ich das beurteilen kann, gibt es keine Fehlermeldungen in der Protokollausgabe - was die Situation noch ärgerlicher macht.

Hat jemals jemand VirtualBox 5.x auf einem Laptop mit Ubuntu 16.0.4 LTS installiert - aber mit aktiviertem Secure Boot im BIOS ? - Wenn ja, wie lautet die Lösung? ???!

Viele Menschen haben dieses Problem - sogar vor ein paar Jahren. es ist sehr seltsam, dass niemand eine lösung dafür zu haben scheint - ???

51

VirtualBox + Secure Boot + Ubuntu = fehlgeschlagen

Das Problem ist die Anforderung, dass alle Kernelmodule mit einem Schlüssel signiert sein müssen, dem das UEFI-System vertraut. Andernfalls schlägt das Laden fehl. Ubuntu signiert nicht die vbox * -Kernel-Module von Drittanbietern, sondern bietet dem Benutzer die Möglichkeit, Secure Boot bei der Installation des virtualbox-Pakets zu deaktivieren. Ich könnte das tun, aber dann würde ich jedes Mal, wenn der Computer gestartet wird, eine ärgerliche Meldung „Booten im unsicheren Modus“ sehen, und auch die Dual-Boot-Installation von Windows 10 würde nicht funktionieren.

Ubuntu 16.04 auf einem Dell Latitude E7440 mit BIOS A18 und einer Dual-Boot-Installation von Windows 10.

Das Guthaben bezieht sich auf die primäre Informationsquelle, die ich zur Lösung dieses Problems verwendet habe. Dies gilt insbesondere für Fedora/Redhat: http://gorka.eguileor.com/vbox-vmware-in-secureboot-linux-2016-update) /

Und eine relevante Frage an Ubuntu: Konnte 'vboxdrv' nach dem Upgrade auf Ubuntu 16.04 nicht laden (und ich möchte sicher booten)

Schritte, damit es funktioniert, speziell für Ubuntu/Debian

  1. Installieren Sie das Virtualbox-Paket. Wenn die Installation feststellt, dass Secure Boot aktiviert ist, wird das vorliegende Problem angezeigt und Sie können Secure Boot deaktivieren. Wählen Sie "Nein".

  2. Erstellen Sie ein persönliches öffentliches/privates RSA-Schlüsselpaar, das zum Signieren von Kernelmodulen verwendet wird. Ich habe mich dafür entschieden, das Root-Konto und das Verzeichnis/root/module-signing/zu verwenden, um alle Dinge zu speichern, die mit dem Signieren von Kernel-Modulen zusammenhängen.

    $ 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. Verwenden Sie das Dienstprogramm MOK ("Machine Owner Key"), um den öffentlichen Schlüssel zu importieren, damit er vom System als vertrauenswürdig eingestuft werden kann. Dies ist ein zweistufiger Prozess, bei dem der Schlüssel zuerst importiert und später registriert werden muss, wenn der Computer das nächste Mal gestartet wird. Ein einfaches Passwort ist ausreichend, da es nur zur vorübergehenden Verwendung dient.

    # mokutil --import /root/module-signing/MOK.der
    input password:
    input password again:
    
  4. Starten Sie die Maschine neu. Wenn der Bootloader gestartet wird, sollte das EFI-Dienstprogramm MOK Manager automatisch gestartet werden. Es werden Teile des in Schritt 3 angegebenen Passworts abgefragt. Wählen Sie „Enroll MOK“ (MOK registrieren). Anschließend sollte der in Schritt 3 importierte Schlüssel angezeigt werden. Führen Sie die Registrierungsschritte aus und fahren Sie dann mit dem Systemstart fort. Der Linux-Kernel protokolliert die geladenen Schlüssel, und Sie sollten Ihren eigenen Schlüssel mit dem folgenden Befehl sehen können: dmesg|grep 'EFI: Loaded cert'

  5. Unter Verwendung eines Signierdienstprogramms, das mit den Kernel-Build-Dateien ausgeliefert wird, signieren Sie alle VirtualBox-Module mit dem in Schritt 2 generierten privaten MOK-Schlüssel. Ich füge dies in ein kleines Skript /root/module-signing/sign-vbox-modules ein, damit es problemlos ausgeführt werden kann, wenn neue Kernel installiert werden im Rahmen regelmäßiger Updates:

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

    Und dann:

    # chmod 700 /root/module-signing/sign-vbox-modules
    
  6. Führen Sie das Skript aus Schritt 5 als root aus. Sie müssen das Signaturskript jedes Mal ausführen, wenn ein neues Kernel-Update installiert wird, da dadurch die VirtualBox-Module von Drittanbietern neu erstellt werden. Verwenden Sie das Skript erst, nachdem der neue Kernel gebootet wurde, da es sich auf modinfo -n und uname -r stützt, um zu bestimmen, für welche Kernelversion signiert werden soll.

  7. Lade das vboxdrv Modul und starte VirtualBox:

    # modprobe vboxdrv
    

Das Verfahren kann auch zum Signieren anderer Kernelmodule von Drittanbietern verwendet werden, z. B. der nvidia-Grafiktreiber, sofern dies erforderlich ist. (Ich habe das selbst nicht getestet.)

Hinweis: Die obige Antwort stammt vollständig aus Øyvind Stegards Blog-Post VirtualBox + Secure Boot + Ubuntu = fail .

58
Android Dev

Die obige Antwort funktioniert wahrscheinlich gut, aber wenn Sie eine einfachere Zeit dafür wollen:

Ich konnte es lösen durch

starten Sie das BIOS und gehen Sie zu> Erweitert (F7)> Booten> Scrollen Sie nach unten zu "Sicherer Start"> Ändern Sie den "Windows EUFI-Modus" in "Anderes Betriebssystem".

Meine virtualbox funktioniert jetzt einwandfrei.

12