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

53

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:

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.

Hier ist die Konsolenausgabe, wenn ich sie /sbin/vboxconfigwie vorgeschlagen ausführe :

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.

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

Jetzt werde ich 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 - ???

Homunculus Reticulli
quelle
2
"Ich habe den sicheren Start in den BIOS-Einstellungen meines Laptops aktiviert." - Das könnte ein Teil Ihres Problems sein. Ich erinnere mich, als ich vor einiger Zeit hörte, dass ein sicherer Start die VBox kaputt machte.
Android Dev
Eine andere ähnliche Frage: askubuntu.com/questions/760671/…
Dan Dascalescu

Antworten:

64

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.

Der Kredit wird der primären Informationsquelle gutgeschrieben, 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 Ubuntu-Frage: 'vboxdrv' konnte nach dem Upgrade auf Ubuntu 16.04 nicht geladen werden (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 in der Lage sein, Ihren eigenen Schlüssel mit dem folgenden Befehl zu sehen: dmesg|grep 'EFI: Loaded cert'

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

    #!/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 dies zu einer Neuerstellung der VirtualBox-Module von Drittanbietern führt. Verwenden Sie das Skript erst , nachdem der neue Kernel gebootet wurde, da es verlässt sich auf modinfo -nund uname -rzu erklären , welche Kernel - Version zu unterzeichnen für.

  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 Blogpost, VirtualBox + Secure Boot + Ubuntu = fail .

Android Dev
quelle
1
Ich erhalte eine Fehlermeldung: 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
Anmerkung zum 18.04+: der vorgeschlagene grep sollte lauten: dmesg|grep 'EFI:'anstelle vondmesg|grep 'EFI: Loaded cert'
gkephorus
3
Absolut nicht wissen und verstehen, was das tut, aber es hat funktioniert.
Naneri
1
Nur für den Fall, dass einige benötigt werden: Ich hatte dieses Problem ohne UEFI oder Secure Mode. In meinem Fall war die Installation von virtualbox-dkms am 18.04.x ​​fehlerhaft. Mein Fix lautete: apt purge virtualbox-dkms && apt install virtualbox-dkms && modprobe vboxdrv
gorlok
1
Wenn Sie ein Upgrade von VirtualBox von 5.2 auf 6.0 durchführen, vergessen Sie nicht, die Schritte 6 und 7 erneut auszuführen.
11.
12

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

Ich konnte es durch lösen

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.

Lee Gildemeester
quelle
2
Gibt es einen Grund, warum Sie das nicht möchten?
Taegost
Aufgrund eines Stromausfalls oder etwas, das mein BIOS zurückgesetzt hat, musste ich dies tun. Jetzt bekomme ich den obigen Fehler nicht.
Jamadagni