vmlinuz-4.18.12-041812-generic ha una firma non valida


15

Ho aggiornato oggi il mio kernel con ukuu e da allora non riesco ad avviare perché sto ricevendo questi errori:

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

Ho doppio avvio con Windows 10 e Ubuntu 18.10 (aggiornato oggi)

Aggiornamento: sono riuscito ad avviare il kernel più vecchio che ho scelto da "Opzioni avanzate per Ubuntu" in grub

Ma devo aggiornare il mio kernel e se lo faccio ottengo ancora lo stesso problema ...


Sto riscontrando lo stesso problema ora dopo l'aggiornamento del firmware del mio Lenovo T480 e non capisco perché i kernel più vecchi funzionino ancora.
user205301

Risposte:


5

Invece di firmare il kernel in questione, ho appena disattivato Secure Boot nel menu BIOS / UEFI del mio laptop.

Di solito puoi accedere al menu premendo un tasto speciale durante l'avvio , puoi cercare su Google quello specifico per il tuo dispositivo o potrebbe anche essere visualizzato sullo schermo durante l'avvio.


Grazie! Ho appena aggiornato il mio BIOS e ho dimenticato di disabilitarlo!
Lucas Bustamante,

Questo funziona per me!
Jonathan,

5

https://github.com/jakeday/linux-surface/blob/master/SIGNING.md ha istruzioni più specifiche sulla firma del kernel (adattata dallo stesso tutorial collegato nella risposta accettata). Le istruzioni sono riprodotte per intero come segue:

Firma di un kernel personalizzato per Secure Boot

Le istruzioni sono per Ubuntu, ma dovrebbero funzionare in modo simile per altre distro, se usano shim e grub come bootloader. Se la distro non utilizza shim (ad es. Linux Foundation Preloader), ci dovrebbero essere passaggi simili per completare la firma (ad es. HashTool invece di MokUtil per LF Preloader) oppure è possibile installare shim da utilizzare. Si chiama il pacchetto ubuntu per shim shim-signed, ma per favore informati su come installarlo correttamente, in modo da non confondere il tuo bootloader.

Dall'ultimo aggiornamento di GRUB2 (2.02 + dfsg1-5ubuntu1) in Ubuntu, GRUB2 non carica più kernel senza segno, purché Secure Boot sia abilitato. Gli utenti di Ubuntu 18.04 riceveranno una notifica durante l'aggiornamento del pacchetto grub-efi, che questo kernel non è firmato e che l'aggiornamento si interromperà.

Quindi hai tre opzioni per risolvere questo problema:

  1. Firmi tu stesso il kernel.
  2. Usi un kernel generico e firmato della tua distribuzione.
  3. Si disabilita l'avvio protetto.

Poiché le opzioni due e tre non sono realmente praticabili, questi sono i passaggi per firmare il kernel da soli.

Istruzioni adattate dal blog di Ubuntu . Prima di seguire, eseguire il backup della directory / boot / EFI, in modo da poter ripristinare tutto. Seguire questi passaggi a proprio rischio.

  1. Crea la configurazione per creare la chiave di firma, salva come 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"

Regola tutte le parti con i tuoi dettagli.

  1. Creare la chiave pubblica e privata per firmare il kernel:
openssl req -config ./mokconfig.cnf \
        -new -x509 -newkey rsa:2048 \
        -nodes -days 36500 -outform DER \
        -keyout "MOK.priv" \
        -out "MOK.der"
  1. Converti la chiave anche in formato PEM (mokutil necessita di DER, sbsign ha bisogno di PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
  1. Registrare la chiave per l'installazione di shim:
sudo mokutil --import MOK.der

Ti verrà chiesta una password, la userai solo per confermare la selezione della chiave nel passaggio successivo, quindi scegli una.

  1. Riavvia il tuo sistema. Incontrerai una schermata blu di uno strumento chiamato MOKManager. Seleziona "Registra MOK" e poi "Visualizza tasto". Assicurati che sia la chiave che hai creato al passaggio 2. Successivamente, continua il processo e devi inserire la password fornita al passaggio 4. Continua con l'avvio del sistema.

  2. Verifica che la tua chiave sia registrata tramite:

sudo mokutil --list-enrolled
  1. Firma il tuo kernel installato (dovrebbe essere in / boot / vmlinuz- [KERNEL-VERSION] -surface-linux-surface):
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. Copia l'initram del kernel unsigned, quindi abbiamo anche un initram per quello firmato.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
  1. Aggiorna il tuo grub-config
sudo update-grub
  1. Riavvia il sistema e seleziona il kernel firmato. Se l'avvio funziona, puoi rimuovere il kernel non firmato:
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub

Ora il tuo sistema dovrebbe funzionare con un kernel firmato e l'aggiornamento di GRUB2 funziona di nuovo. Se si desidera aggiornare il kernel personalizzato, è possibile firmare facilmente la nuova versione seguendo nuovamente i passaggi precedenti dal passaggio sette in poi. Quindi BACKUP dei tasti MOK (MOK.der, MOK.pem, MOK.priv).


Risposta ecxellent, non avrei potuto arrivarci solo con le istruzioni ubuntu
User632716

Ottima scorciatoia per rinominare e sovrascrivere i file con i postfix.
Tom

1

Ho risolto il mio problema seguendo questo tutorial per firmare il file / boot / vmlinuz per l'avvio sicuro, basta notare l'ultima parte del tutorial


6
Potresti fornire per favore alcune informazioni dettagliate sulla risoluzione di questo problema? Ho assolutamente lo stesso errore, ma non capisco cosa devo fare secondo il tutorial menzionato.
Slon

Non ricordo adesso, cercherò di aiutarti più tardi in questo giorno se è ancora rilevante
Nadav Shabtai,

È rilevante anche per me. Ho lo stesso problema
Vitalii Diravka,

Ho appena trovato questo, ne ho bisogno anche io
Mitch Talmadge,

1
Questa sembra essere una "risposta solo link". Modifica la domanda e fornisci alcuni dettagli per aiutare altri utenti che hanno lo stesso problema. Grazie!
mchid,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.