vmlinuz-4.18.12-041812-generic tiene una firma no válida

15

Actualicé mi kernel hoy con ukuu, y desde entonces no puedo arrancar porque recibo estos errores:

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

Tengo arranque dual con Windows 10 y Ubuntu 18.10 (actualizado hoy)

Actualización: logré arrancar el kernel anterior que elegí de "Opciones avanzadas para Ubuntu" en grub

Pero necesito actualizar mi kernel y si lo hago, sigo teniendo el mismo problema ...

Nadav Shabtai
fuente
Estoy experimentando este mismo problema ahora después de actualizar el firmware de mi Lenovo T480 y no entiendo por qué los núcleos más antiguos aún funcionan.
user205301

Respuestas:

5

En lugar de firmar el núcleo en cuestión, acabo de desactivar el arranque seguro en el menú BIOS / UEFI de mi computadora portátil.

Por lo general, puede ingresar al menú presionando una tecla especial durante el arranque , puede buscar en Google la específica para su dispositivo o incluso puede mostrarse en la pantalla durante el arranque.

xjcl
fuente
¡Gracias! ¡Acabo de actualizar mi BIOS y olvidé desactivarlo!
Lucas Bustamante
5

https://github.com/jakeday/linux-surface/blob/master/SIGNING.md tiene instrucciones más específicas sobre la firma del núcleo (adaptadas del mismo tutorial vinculado en la respuesta aceptada). Las instrucciones se reproducen en su totalidad de la siguiente manera:

Firma de un kernel personalizado para arranque seguro

Las instrucciones son para ubuntu, pero deberían funcionar de manera similar para otras distribuciones, si están usando shim y grub como gestor de arranque. Si su distribución no está usando shim (por ejemplo, Linux Foundation Preloader), debe haber pasos similares para completar la firma (por ejemplo, HashTool en lugar de MokUtil para LF Preloader) o puede instalar shim para usar en su lugar. Se llama al paquete ubuntu para shim shim-signed, pero infórmese sobre cómo instalarlo correctamente, para no estropear su gestor de arranque.

Desde la actualización más reciente de GRUB2 (2.02 + dfsg1-5ubuntu1) en Ubuntu, GRUB2 ya no carga núcleos sin firmar, siempre y cuando Secure Boot esté habilitado. Los usuarios de Ubuntu 18.04 serán notificados durante la actualización del paquete grub-efi, que este kernel no está firmado y la actualización se cancelará.

Por lo tanto, tiene tres opciones para resolver este problema:

  1. Usted firma el núcleo usted mismo.
  2. Utiliza un núcleo genérico firmado de su distribución.
  3. Deshabilita el arranque seguro.

Como las opciones dos y tres no son realmente viables, estos son los pasos para firmar el núcleo usted mismo.

Instrucciones adaptadas del Blog de Ubuntu . Antes de seguir, haga una copia de seguridad de su directorio / boot / EFI para que pueda restaurar todo. Siga estos pasos bajo su propio riesgo.

  1. Cree la configuración para crear la clave de firma, guárdela como 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"

Ajuste todas las partes a sus detalles.

  1. Cree la clave pública y privada para firmar el núcleo:
openssl req -config ./mokconfig.cnf \
        -new -x509 -newkey rsa:2048 \
        -nodes -days 36500 -outform DER \
        -keyout "MOK.priv" \
        -out "MOK.der"
  1. Convierta la clave también a formato PEM (mokutil necesita DER, sbsign necesita PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
  1. Registre la clave para su instalación de cuñas:
sudo mokutil --import MOK.der

Se le pedirá una contraseña, solo la usará para confirmar su selección de clave en el siguiente paso, así que elija cualquiera.

  1. Reinicia tu sistema. Encontrará una pantalla azul de una herramienta llamada MOKManager. Seleccione "Registrar MOK" y luego "Ver clave". Asegúrese de que es la clave que creó en el paso 2. Luego continúe el proceso y debe ingresar la contraseña que proporcionó en el paso 4. Continúe con el arranque de su sistema.

  2. Verifique que su clave esté registrada a través de:

sudo mokutil --list-enrolled
  1. Firme el kernel instalado (debe estar en / 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. Copie el initram del kernel sin firmar, para que también tengamos un initram para el firmado.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
  1. Actualiza tu grub-config
sudo update-grub
  1. Reinicie su sistema y seleccione el núcleo firmado. Si el arranque funciona, puede eliminar el núcleo sin firmar:
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub

Ahora su sistema debería ejecutarse bajo un núcleo firmado y la actualización de GRUB2 funciona nuevamente. Si desea actualizar el kernel personalizado, puede firmar la nueva versión fácilmente siguiendo los pasos anteriores nuevamente desde el paso siete en adelante. Por lo tanto, COPIA DE SEGURIDAD de las teclas MOK (MOK.der, MOK.pem, MOK.priv).

Prusswan
fuente
Respuesta excelente, no podría haber llegado solo con las instrucciones de ubuntu
User632716
Gran acceso directo para renombrar y sobrescribir archivos con postfixes.
Tom
1

Resolví mi problema siguiendo este tutorial para firmar / arrancar / vmlinuz para un arranque seguro, solo observe la última parte del tutorial

Nadav Shabtai
fuente
66
¿Podría proporcionar información detallada sobre cómo resolver este problema? Tengo absolutamente el mismo error, pero no entiendo lo que tengo que hacer según el tutorial mencionado.
Slon
No lo recuerdo en este momento, intentaré ayudarte más tarde este día si aún es relevante
Nadav Shabtai
También es relevante para mí. Tengo el mismo problema
Vitalii Diravka el
Acabo de encontrar esto, yo también lo necesito
Mitch Talmadge
1
Esto parece ser una "respuesta de solo enlace". Edite la pregunta y proporcione algunos detalles para ayudar a otros usuarios que tienen el mismo problema. ¡Gracias!
mchid