Vboxdrv konnte nach dem Upgrade auf Ubuntu 16.04 nicht geladen werden (und ich möchte sicher booten)


130

Ich aktualisiere von Ubuntu 15.10 auf 16.04 und seitdem startet VirtualBox 5.0.18 meine VMs nicht mehr. Es beschwert sich, dass 'vboxdrv' nicht geladen ist. Also versuche ich es zu laden und erhalte folgende Fehlermeldung:

$ sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Ich glaube, dass es sich um einen sicheren Start handelt, den ich verwende und den ich weiterhin verwenden möchte. Eigentlich funktionierten mit Ubuntu 15.10 Secure Boot und VirtualBox einwandfrei.

Ich habe auch versucht $ sudo apt-get --reinstall install virtualbox-dkms, das Kernel-Modul erfolgreich zu bauen, aber dieses Problem nicht gelöst.

Haben Sie eine Idee, wie Sie vboxdrv laden können, während der sichere Start aktiviert bleibt?

Update 2 : Auch ich habe versucht auszuführen sudo mokutil --disable-validation. Wenn ich diesen Befehl ausführe, werde ich beim nächsten Start aufgefordert, den sicheren Start zu deaktivieren, einen Schlüssel oder einen Hash von der Festplatte hinzuzufügen. Da ich den sicheren Start nicht deaktivieren möchte, scheint dies auch mein Problem nicht zu lösen. Außerdem möchte ich UEFI für eine parallele Windows-Installation aktiviert lassen.

Hinweis : Wenn Sie sich nicht kümmern sicheres Boot zu deaktivieren, siehe Warum ich „Required Schlüssel nicht verfügbar“ beim 3rd - Party - Kernel - Module installieren oder nach einem Kernel - Upgrade? stattdessen.



Diese Frage ist zwar ein Duplikat von askubuntu.com/questions/762254/… , enthält jedoch nicht die Antwort von @Majal unten.
zwets


FWIW für Googler: Unter Ubuntu 18.04 aptitude install virtualbox virtualbox-dkms wird das Modul bei der Installation signiert und Sie nach einem Einmalpasswort (?) Gefragt. Starten Sie neu, geben Sie MOK config ein und registrieren Sie den Schlüssel mit diesem Kennwort.
Raphael

Antworten:


177

Seit der Kernel-Version 4.4.0-20 wurde durchgesetzt, dass nicht signierte Kernel-Module bei aktiviertem Secure Boot nicht ausgeführt werden dürfen. Da Sie Secure Boot beibehalten möchten, besteht der nächste logische Schritt darin, diese Module zu signieren .

Also lass es uns versuchen.

  1. Erstellen Sie Signaturschlüssel

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/"
    

    Option : Um zusätzliche Sicherheit zu gewährleisten, überspringen Sie den Schalter -nodes, der Sie nach einem Kennwort fragt. Bevor Sie mit dem nächsten Schritt fortfahren, vergewissern Sie sich, dassexport KBUILD_SIGN_PIN='yourpassword'

  2. Signieren Sie das Modul (vboxdrv für dieses Beispiel, wiederholen Sie dies jedoch für andere Module, ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko)um den vollen Funktionsumfang zu erhalten.)

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. Bestätigen Sie, dass das Modul signiert ist

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. Registrieren Sie die Schlüssel für Secure Boot

    sudo mokutil --import MOK.der
    

    Sie werden aufgefordert, ein Kennwort einzugeben, um den Import im nächsten Schritt zu bestätigen.

  5. Starten Sie den Computer neu und befolgen Sie die Anweisungen zum Registrieren von MOK (Machine Owner Key). Hier ist ein Beispiel mit Bildern. Das System wird noch einmal neu gestartet.

  6. Bestätigen Sie, dass der Schlüssel registriert ist

    mokutil --test-key MOK.der
    

Wenn VirtualBox immer noch nicht geladen wird, liegt dies möglicherweise daran, dass das Modul nicht geladen wurde (dies sudo modprobe vboxdrvwird behoben) oder dass der Schlüssel nicht signiert ist. Wiederholen Sie einfach diesen Schritt und alles sollte gut funktionieren.

Ressourcen: Ausführlicher Website- Artikel zur Implementierung der Modulsignatur in Fedora und Ubuntu . @zwets für zusätzliche Sicherheit . @shasha_trn für die Erwähnung aller Module .

Zusätzliche Ressource: Ich habe bei jedem virtualbox-dkmsUpgrade ein Bash-Skript für meinen eigenen Gebrauch erstellt und überschreibe damit die signierten Module. Checke mein vboxsign ursprünglich auf GitHub aus .


7
Ich habe auch vboxnetadp-, vboxnetflt- und vboxpci-Module signiert, um Netzwerk- und Pass-Throw-PCI-Geräte in virtuellen Maschinen zu verwenden.
sasha_trn

4
Nachdem ich @ majals Antwort erweitert hatte, musste ich sudo apt install --reinstall virtualbox-dkmsdie Anweisungen ausführen, bevor ich sie befolgte .
TylersSN

1
@zwets könntest du evtl. erläutern, wie man die KBUILD_SIGN_PINUmgebungsvariable richtig einstellt ? export KBUILD_SIGN_PIN=passwordund export KBUILD_SIGN_PIN="password"vor Schritt 2 führten beide zuSSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117
adempewolff

3
@adempewolff Wenn Ihr Kennwort Zeichen enthält, die Ihre Shell interpretiert (z. B. '$' in Anführungszeichen), müssen Sie sie in Apostrophe (') setzen.
zwets

1
@Majal Danke für deine Antwort! Ich bevorzuge es auch, die Module zu signieren, anstatt die Funktion zu deaktivieren. Ich kann hinzufügen: (1) Dies gilt auch für VMware-Module "vmmon" und "vmnet", die dasselbe Schicksal teilen. (2) Wählen Sie beim Hinzufügen Ihrer erstellten Schlüssel Ihr Passwort mit Bedacht aus. Während des Neustarts und der Secure Boot-Registrierungsphase kann sich Ihr Tastaturlayout von Ihren Ländereinstellungen unterscheiden. (-> US-Layout)
one-mb

15

Auf meinem System habe ich Folgendes getan, damit es funktioniert:

Führen Sie mokutil aus:

sudo mokutil --disable-validation

Dann bat mich mokutil, ein Passwort für den MOK Manager festzulegen. Nach dem Neustart des PCs zeigte das BIOS einen Dialog zur Konfiguration des MOK-Managers. Ich habe SecureBoot in diesem Dialogfeld deaktiviert. Es wurden mehrere Zeichen aus dem Kennwort abgefragt (z. B. Zeichen (5) eingeben usw.).

Nach dem Booten sind die vboxdrv Module korrekt geladen.

lsmod | grep vboxdrv
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci

Interessanterweise zeigt mokutil immer noch, dass SecureBoot aktiviert ist:

sudo mokutil --sb-state
SecureBoot enabled

9
Wie in meiner Frage angegeben, möchte ich weiterhin den sicheren Start verwenden. Das Deaktivieren von Secure Boot löst das Problem also nicht.
26.

2
Ich wollte den sicheren Start nicht deaktivieren, musste dies aber letztendlich tun, da sonst nichts funktionieren würde. Ich möchte nicht jedes Mal, wenn ein Kernel-Update erscheint, mit dem manuellen Signieren beginnen. Schade, dass dies die einzige einfache Lösung ist. Übrigens sagt UEFI immer noch, dass der sichere Start aktiviert ist. ¯_ (ツ) _ / ¯
Jaywink

4

Sie können die Validierungsprüfung deaktivieren, indem Sie

sudo apt install mokutil
sudo mokutil --disable-validation

Danach sollten DKMS-Pakete installiert werden.


2
Außerdem habe ich versucht, sudo mokutil --disable-validation auszuführen. Wenn ich diesen Befehl ausführe, werde ich beim nächsten Start aufgefordert, den sicheren Start zu deaktivieren, einen Schlüssel oder einen Hash von der Festplatte hinzuzufügen. Da ich den sicheren Start nicht deaktivieren möchte, scheint dies auch mein Problem nicht zu lösen. Bitte lassen Sie mich wissen, falls ich diesen Befehl missverstanden habe.
Jan

2
Versuchen Sie, den sicheren Start zu deaktivieren. Sie können es wieder aktivieren, wenn das nicht hilft.
Pilot6

Ich habe versucht, den sicheren Start zu deaktivieren - aber er ist immer noch aktiviert :( (ubuntu 18.04)
xhudik

0

Ich habe auch nach dem Upgrade eine Fehlermeldung über vboxdrv erhalten. Es gab jedoch ein Problem mit der alten Version (5.0.14) von Oracle VM VirtualBox Extension Pack. Ich habe eine neuere Version (5.0.18) dieses Pakets heruntergeladen und installiert und das Problem ist verschwunden.


Hey, könntest du bitte näher darauf eingehen? Woher hast du es heruntergeladen? PPA oder deb Datei?
Karthik Nishanth

1
Ich habe das Erweiterungspaket von den Downloads auf der VirtualBox-Website heruntergeladen . Der Link lautet "VirtualBox 5.0.18 Oracle VM VirtualBox-Erweiterungspaket -> Alle unterstützten Plattformen ". Dann öffnete ich Datei> Einstellungen in Oracle VM Virtual Box Manager, wählte "Erweiterungen" aus und fügte die heruntergeladene Datei zur Liste hinzu. Es ersetzte die alte Version von "Oracle VM VirtualBox Extension Pack" (war 5.0.14rxxxxxx).
Reling

1
Das Erweiterungspaket behebt den Fehler nicht. Der Fehler ist über das Signieren des Moduls
Karthik Nishanth

Dies gilt nicht für mein Problem.
26.

1
Dies hat nichts mit dem Problem des OP zu tun. Die Fehlermeldung "Erforderlicher Schlüssel nicht verfügbar" weist darauf hin, dass das Problem auf ein nicht signiertes Kernelmodul auf einer Secure Boot-fähigen Plattform zurückzuführen ist. Kein VirtualBox-Update kann dies beheben, es sei denn, es enthält ein Modul, das mit einem Schlüssel signiert ist, dem der Kernel vertraut. Das heißt, entweder muss Canonical es signieren oder Oracle muss es signieren und sein öffentlicher Schlüssel muss zu den vertrauenswürdigen Schlüsseln des Kernels (oder Ihrer Plattform) hinzugefügt werden.
zwets

0

Okay, nach ein paar Tests bin ich mir ziemlich sicher, dass dies ein sicheres Boot-Problem ist.

Als ob es aktiviert ist, wird dies geworfen:

WARNUNG: Das vboxdrv-Kernelmodul ist nicht geladen. Entweder ist kein Modul für den aktuellen Kernel verfügbar (4.4.0-21-generic) oder es konnte nicht geladen werden. Bitte kompilieren Sie das Kernelmodul neu und installieren Sie es mit sudo / sbin / rcvboxdrv setup

Wenn jedoch der sichere Start deaktiviert ist, wird die VirtualBox ohne Fehler geladen.

Ich habe immer noch mein BIOS als UEFI eingestellt.


3
Wie in meiner Frage angegeben, möchte ich weiterhin den sicheren Start verwenden. Das Deaktivieren von Secure Boot löst das Problem also nicht.
Jan

0

Ich hatte heute das gleiche Problem, ich hatte Windows 10 und Ubuntu 15.10 in einem Dual-Boot mit uefi auf Bios aktiviert (ich habe es nicht deaktiviert, damit ich das vorinstallierte Windows ausführen kann).

Nach dem Upgrade auf Ubuntu 16.04 hat VirtualBox das Laden meiner VMs mit der gleichen Fehlermeldung abgebrochen:

modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Ich habe ein UEFI-Problem vermutet, weil ich beim Aktualisieren des Installationsprogramms gefragt wurde, ob ich es deaktivieren möchte, worauf ich mit Nein geantwortet habe (weil Ja mein Windows möglicherweise unbrauchbar macht).

Ich ging zu Bios und aktivierte die Unterstützung für den Legacy-BIOS-Start, OHNE den sicheren Start zu deaktivieren.

Virtualbox funktioniert jetzt einwandfrei.

Update : Wie @zwets im Kommentar richtig angegeben hat, wird durch das Aktivieren älterer Module der sichere Start deaktiviert.


2
Eigentlich brauche ich auch UEFI, um eine parallele Windows-Installation zu starten. Das Deaktivieren ist auch für mich keine Option. Ich habe meine Frage entsprechend aktualisiert.
Jan

Haben Sie die Unterstützung für ältere BIOS-Module aktiviert? Dies ist eine weitere Option im UEFI-BIOS, die sich vom sicheren Start unterscheidet.
Zeine77

1
@ Zeine77 können Sie überprüfen, ob Ihr BIOS das Aktivieren von "Legacy-Modulen" zulässt, während Secure Boot aktiviert bleibt ? Dies ist höchst unwahrscheinlich, da die erste Option die Ausführung von nicht vertrauenswürdigem Code im Kernelbereich zulässt, wodurch der Zweck der zweiten Option zunichte gemacht wird.
zwets

@zwets du hast recht, ich habe gerade meine BIOS-Einstellungen überprüft; Durch das Aktivieren älterer Module wurde der sichere Start deaktiviert. Wie in der Antwort erläutert, ging ich davon aus, dass das Deaktivieren des sicheren Startvorgangs zum Fehlschlagen des Startvorgangs von Windows 10 führen würde. Dies ist jedoch nicht der Fall. Bei der ersten Installation von 15.10 (vor Monaten) habe ich darauf geachtet, den sicheren Start nicht zu deaktivieren, da dies die Installation von Win 10 beschädigen würde. Bedeutet dies, dass das vorinstallierte Win 10 einwandfrei funktioniert, wenn der sichere Modus deaktiviert ist?
Zeine77,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.