vmlinuz-4.18.12-041812-generic hat eine ungültige Signatur

15

Ich habe heute meinen Kernel mit Ukuu aktualisiert und seitdem kann ich nicht mehr booten, weil ich folgende Fehler bekomme:

error: /boot/vmlinuz-4.18.12-041812-generic has invalid signature
error: you need to load the kernel first

Ich habe Dual Boot mit Windows 10 und Ubuntu 18.10 (heute aktualisiert)

Update: Ich habe es geschafft, mit einem älteren Kernel zu booten, den ich unter "Erweiterte Optionen für Ubuntu" in grub ausgewählt habe

Aber ich muss meinen Kernel aktualisieren und wenn ich das tue, bekomme ich immer noch das gleiche Problem ...

Nadav Shabtai
quelle
Ich habe jetzt das gleiche Problem, nachdem ich die Firmware meines Lenovo T480 aktualisiert habe, und ich verstehe nicht, warum die älteren Kernel immer noch funktionieren.
user205301

Antworten:

5

Anstatt den betreffenden Kernel zu signieren, habe ich Secure Boot im BIOS / UEFI-Menü meines Laptops deaktiviert.

Normalerweise können Sie das Menü durch Drücken einer speziellen Taste während des Startvorgangs aufrufen, die für Ihr Gerät spezifische Taste googeln oder sie während des Startvorgangs sogar auf dem Bildschirm anzeigen.

xjcl
quelle
Vielen Dank! Ich habe gerade mein BIOS aktualisiert und vergessen, das zu deaktivieren!
Lucas Bustamante
5

https://github.com/jakeday/linux-surface/blob/master/SIGNING.md enthält spezifischere Anweisungen zum Signieren des Kernels (angepasst an dasselbe Tutorial, das in der akzeptierten Antwort verlinkt ist). Die Anweisungen werden wie folgt vollständig wiedergegeben:

Signieren eines benutzerdefinierten Kernels für Secure Boot

Die Anweisungen gelten für Ubuntu, sollten jedoch für andere Distributionen ähnlich funktionieren, wenn Shim und Grub als Bootloader verwendet werden. Wenn Ihre Distribution kein Shim verwendet (z. B. Linux Foundation Preloader), sollten ähnliche Schritte ausgeführt werden, um die Signatur abzuschließen (z. B. HashTool anstelle von MokUtil für LF Preloader), oder Sie können Shim installieren, um es stattdessen zu verwenden. Das Ubuntu-Paket für Shim heißt. shim-signedBitte informieren Sie sich jedoch über die korrekte Installation, damit Sie Ihren Bootloader nicht durcheinander bringen.

Seit dem letzten GRUB2-Update (2.02 + dfsg1-5ubuntu1) in Ubuntu lädt GRUB2 keine nicht signierten Kernel mehr, solange Secure Boot aktiviert ist. Benutzer von Ubuntu 18.04 werden während des Upgrades des grub-efi-Pakets darüber informiert, dass dieser Kernel nicht signiert ist und das Upgrade abgebrochen wird.

Sie haben also drei Möglichkeiten, um dieses Problem zu lösen:

  1. Sie signieren den Kernel selbst.
  2. Sie verwenden einen signierten, generischen Kernel Ihrer Distribution.
  3. Sie deaktivieren den sicheren Start.

Da Option zwei und drei nicht wirklich realisierbar sind, sind dies die Schritte, um den Kernel selbst zu signieren.

Anleitung aus dem Ubuntu Blog angepasst . Bevor Sie folgen, sichern Sie bitte Ihr Verzeichnis / boot / EFI, damit Sie alles wiederherstellen können. Befolgen Sie diese Schritte auf eigenes Risiko.

  1. Erstellen Sie die Konfiguration, um den Signaturschlüssel zu erstellen, und speichern Sie sie als mokconfig.cnf:
# This definition stops the following lines failing if HOME isn't
# defined.
HOME                    = .
RANDFILE                = $ENV::HOME/.rnd 
[ req ]
distinguished_name      = req_distinguished_name
x509_extensions         = v3
string_mask             = utf8only
prompt                  = no

[ req_distinguished_name ]
countryName             = <YOURcountrycode>
stateOrProvinceName     = <YOURstate>
localityName            = <YOURcity>
0.organizationName      = <YOURorganization>
commonName              = Secure Boot Signing Key
emailAddress            = <YOURemail>

[ v3 ]
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always,issuer
basicConstraints        = critical,CA:FALSE
extendedKeyUsage        = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment               = "OpenSSL Generated Certificate"

Passen Sie alle Teile mit Ihren Angaben an.

  1. Erstellen Sie den öffentlichen und privaten Schlüssel zum Signieren des Kernels:
openssl req -config ./mokconfig.cnf \
        -new -x509 -newkey rsa:2048 \
        -nodes -days 36500 -outform DER \
        -keyout "MOK.priv" \
        -out "MOK.der"
  1. Konvertieren Sie den Schlüssel auch in das PEM-Format (mokutil benötigt DER, sbsign benötigt PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
  1. Registrieren Sie den Schlüssel für Ihre Shim-Installation:
sudo mokutil --import MOK.der

Sie werden nach einem Passwort gefragt. Sie werden es nur verwenden, um Ihre Schlüsselauswahl im nächsten Schritt zu bestätigen. Wählen Sie also eines aus.

  1. Starten Sie Ihr System neu. Sie sehen einen blauen Bildschirm eines Tools namens MOKManager. Wählen Sie "MOK einschreiben" und dann "Ansichtstaste". Stellen Sie sicher, dass es sich um Ihren Schlüssel handelt, den Sie in Schritt 2 erstellt haben. Fahren Sie anschließend mit dem Vorgang fort und geben Sie das in Schritt 4 angegebene Kennwort ein. Fahren Sie mit dem Booten Ihres Systems fort.

  2. Stellen Sie sicher, dass Ihr Schlüssel registriert ist über:

sudo mokutil --list-enrolled
  1. Signieren Sie Ihren installierten Kernel (er sollte sich unter / boot / vmlinuz- [KERNEL-VERSION] -surface-linux-surface befinden):
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface.signed
  1. Kopieren Sie das Initram des nicht signierten Kernels, damit wir auch ein Initram für das signierte haben.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
  1. Aktualisieren Sie Ihre Grub-Konfiguration
sudo update-grub
  1. Starten Sie Ihr System neu und wählen Sie den signierten Kernel aus. Wenn das Booten funktioniert, können Sie den nicht signierten Kernel entfernen:
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub

Jetzt sollte Ihr System unter einem signierten Kernel laufen und das Upgrade von GRUB2 funktioniert wieder. Wenn Sie den benutzerdefinierten Kernel aktualisieren möchten, können Sie die neue Version einfach signieren, indem Sie die obigen Schritte ab Schritt 7 erneut ausführen. Sichern Sie also die MOK-Tasten (MOK.der, MOK.pem, MOK.priv).

prusswan
quelle
Hervorragende Antwort, ich hätte nicht alleine mit den Ubuntu-Anweisungen dorthin gelangen können
User632716
Tolle Verknüpfung zum Umbenennen und Überschreiben von Dateien mit Postfixes.
Tom
1

Ich habe mein Problem nach diesem Tutorial gelöst , um die Datei / boot / vmlinuz für einen sicheren Start zu signieren. Beachten Sie einfach den letzten Teil des Tutorials

Nadav Shabtai
quelle
6
Könnten Sie bitte einige detaillierte Informationen zur Lösung dieses Problems bereitstellen? Ich habe absolut den gleichen Fehler, aber ich verstehe nicht, was ich gemäß dem erwähnten Tutorial tun muss.
Slon
Ich erinnere mich noch nicht, ich werde versuchen, Ihnen später an diesem Tag zu helfen, wenn es noch relevant ist
Nadav Shabtai
Es ist auch für mich relevant. Ich habe das gleiche Problem
Vitalii Diravka
Ich habe es gerade gefunden, ich brauche es auch
Mitch Talmadge
1
Dies scheint eine "Nur-Link-Antwort" zu sein. Bitte bearbeiten Sie die Frage und geben Sie einige Details an, um anderen Benutzern mit demselben Problem zu helfen. Vielen Dank!
Mchid