it-swarm.com.de

Warum erhalte ich die Meldung "Erforderlicher Schlüssel nicht verfügbar", wenn Kernelmodule von Drittanbietern oder nach einem Kernel-Upgrade installiert werden?

Dieses Problem tritt nur auf UEFI-Systemen mit aktiviertem Secure Boot auf.

Wenn ich versuche, DKMS-Module wie VirtualBox-, Nvidia- oder Broadcom-Treiber zu installieren, werden diese nicht installiert, und ich erhalte Required key not available, wenn ich versuche, sie modprobe zu installieren.

VirtualBox beschwert sich, dass vboxdrv nicht geladen ist.

Der Broadcom wl -Treiber wird in lspci -k als Kernelmodul angezeigt, aber nicht verwendet. Sudo modprobe wl wirft Required key not available.

Dieses Problem kann auch auftreten, wenn ich einige Kernelmodule aus Git-Quellen installiere.

Dieses Problem kann nach einem Kernel-Update als deaktivierter WLAN-Adapter, schwarzer Bildschirm nach einem Neustart usw. auftreten.

Wie kann ich es reparieren?

78
Pilot6

Seit Ubuntu-Kernel 4.4.0-20 ist die EFI_SECURE_BOOT_SIG_ENFORCE -Kernel-Konfiguration aktiviert. Dadurch wird verhindert, dass nicht signierte Module von Drittanbietern geladen werden, wenn UEFI Secure Boot aktiviert ist.

Der einfachste Weg, dieses Problem zu beheben, ist Secure Boot deaktivieren in den UEFI (BIOS) -Einstellungen.

In den meisten Fällen können Sie die UEFI-Einstellungen über das Grub-Menü aufrufen. Drücken Sie ESC Klicken Sie beim Booten auf die Schaltfläche, rufen Sie das Grub-Menü auf und wählen Sie System-Setup. Die Option "Sicherer Start" sollte sich im Abschnitt "Sicherheit" oder "Start" der UEFI befinden.

Sie können direkt in UEFI einsteigen, dies hängt jedoch von Ihrer Hardware ab. Lesen Sie in Ihrem Computerhandbuch nach, wie Sie dorthin gelangen. Es kann sein Del, oder F2 beim booten oder was anderes.

Eine alternative Möglichkeit besteht darin, Secure Boot mit mokutil zu deaktivieren.

Seit Ubuntu-Kernel-Build 4.4.0-21.37 kann dies durch Ausführen behoben werden

Sudo apt install mokutil
Sudo mokutil --disable-validation

Es muss ein Passwort erstellt werden. Das Passwort sollte mindestens 8 Zeichen lang sein. Nach dem Neustart werden Sie von UEFI gefragt, ob Sie die Sicherheitseinstellungen ändern möchten. Wählen Sie "Ja".

Anschließend werden Sie aufgefordert, das zuvor erstellte Passwort einzugeben. Bei einigen UEFI-Firmware-Versionen wird nicht das vollständige Kennwort abgefragt, sondern die Eingabe einiger Zeichen (z. B. 1., 3. usw.). Seien Sie vorsichtig. Einige Leute verstehen das nicht. Ich habe es auch nicht vom ersten Versuch bekommen ;-)

pdate: Jetzt ist diese Kernelkonfiguration in allen unterstützten Ubuntu-Kerneln aktiviert. Betroffen sind Ubuntu 16.04, 15.10 und 14.04.

83
Pilot6

Als vorgeschlagen vom Benutzer @zwets, kopiere ich (mit Änderungen) eine Antwort hier:

Seit der Kernel-Version 4.4.0-20 wurde durchgesetzt, dass nicht signierte Kernel-Module mit aktiviertem Secure Boot nicht ausgeführt werden dürfen. Wenn Sie den sicheren Start beibehalten möchten und diese Module auch ausführen möchten, müssen Sie als nächsten logischen Schritt signieren diese Module.

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 name/"
    
  2. Unterschreiben Sie das Modul

    Sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /path/to/module
    

Hinweis 1 : Es können mehrere Dateien für einen einzelnen Treiber/ein einzelnes Modul signiert werden. Daher muss /path/to/module möglicherweise durch $(modinfo -n <modulename>) ersetzt werden. z.B $(modinfo -n vboxdrv)

Hinweis 2 : Sudo kmodsign sha512 ./MOK.priv ./MOK.der /path/to/module ist eine Alternative, wenn sign-file nicht verfügbar ist.

  1. Registrieren Sie die Schlüssel für Secure Boot

    Sudo mokutil --import MOK.der
    

    Geben Sie ein Kennwort für die spätere Verwendung nach dem Neustart ein

  2. Reboot und befolgen Sie die Anweisungen, um MOK (Machine Owner Key) zu registrieren. Hier ist ein Beispiel mit Bildern. Das System wird noch einmal neu gestartet.

Wenn der Schlüssel ordnungsgemäß registriert wurde, wird er unter Sudo mokutil --list-enrolled angezeigt.

Bitte lassen Sie mich wissen, ob Ihre Module auf Ubuntu 16.04 so laufen würden (auf Kernel 4.4.0-21, glaube ich).

Ressourcen: Detaillierte Website Artikel für Fedora und buntu-Implementierung der Modulsignatur. (Sie haben daran gearbeitet) ;-)

Zusätzliche Ressource: Ich habe jedes Mal, wenn virtualbox-dkms aktualisiert wird, ein Bash-Skript für meinen eigenen Gebrauch erstellt und überschreibe damit die signierten Module. Check out my vboxsign ursprünglich auf GitHub .

Zusätzlicher Hinweis für das (extra-) Sicherheitsbewusste: ;-)

Da der von Ihnen erstellte private Schlüssel (MOK.priv in diesem Beispiel) von jedem verwendet werden kann, der Zugriff darauf hat, empfiehlt es sich, ihn sicher aufzubewahren. Sie können es chmod verschlüsseln (gpg) oder an einem anderen sicheren Ort aufbewahren (r). Oder entfernen Sie als in diesem Kommentar vermerkt die Option -nodes in Schritt 1. Dadurch wird der Schlüssel mit einer Passphrase verschlüsselt.

31
Majal

Sie können Secure Boot (UEFI) im BIOS mit den folgenden Schritten deaktivieren:

  1. Starten Sie Ihren Computer neu und rufen Sie das BIOS-Menü auf (in meinem Fall drücken Sie F2)

  2. Suchen Sie nach Secure Boot und wechseln Sie zu Legacy

Auf einem ASUS-Motherboard:

  • Wechseln Sie in den erweiterten Modus (F7)
  • Gehen Sie in der Secure Boot-Option im Abschnitt Boot
  • Ändern Sie "Windows UEFI-Modus" mit "Anderes Betriebssystem"
  • Speichern und neu starten, um die Einstellungen zu übernehmen (F10)
6
Sputnik

Sie können Secure Boot auch deaktivieren, indem Sie Sudo update-secureboot-policy mit Shim-Signatur ausführen. Diese Wiki-Seite erklärt diese Methode:

  • Öffnen Sie ein Terminal (Strg + Alt + T), führen Sie Sudo update-secureboot-policy aus und wählen Sie dann Ja.
  • Geben Sie ein temporäres Passwort mit 8 bis 16 Stellen ein. (Zum Beispiel 12345678, wir werden dieses Passwort später verwenden
  • Geben Sie dasselbe Passwort zur Bestätigung erneut ein.
  • Starten Sie das System neu und drücken Sie eine beliebige Taste, wenn der blaue Bildschirm angezeigt wird (MOK - Verwaltung)
  • Wählen Sie Change Secure Boot state
  • Geben Sie das in Schritt 2 ausgewählte Passwort ein und drücken Sie die Eingabetaste.
  • Wählen Sie Ja, um Secure Boot in Shim-Signed zu deaktivieren.
  • Drücken Sie die Eingabetaste, um den gesamten Vorgang abzuschließen.

Sie können Secure Boot immer noch in Shim-Signed wieder aktivieren. Einfach ausführen

Sudo update-secureboot-policy - aktivieren Sie und folgen Sie dann den obigen Schritten

3
Kent Lin