¿Por qué obtengo la "clave obligatoria no disponible" cuando instalo módulos de kernel de terceros o después de una actualización de kernel?

56

Este problema solo ocurre en los sistemas UEFI con Arranque seguro habilitado.

Cuando intento instalar módulos DKMS como VirtualBox, Nvidia o Broadcom, no se instalan y obtengo Required key not available cuando intento modprobe them.

VirtualBox se queja de que vboxdrv no está cargado.

El controlador Broadcom wl se muestra en lspci -k como un módulo kernel pero no está en uso. sudo modprobe wl arroja Required key not available .

También este problema puede ocurrir cuando instalo algunos módulos kernel de fuentes git.

Este problema puede aparecer después de una actualización del núcleo como un adaptador inalámbrico desactivado, una pantalla negra después de un reinicio, etc.

¿Cómo puedo solucionarlo?

    
pregunta Pilot6 25.04.2016 - 09:48

4 respuestas

63

Desde Ubuntu kernel 4.4.0-20 el EFI_SECURE_BOOT_SIG_ENFORCE kernel config ha sido habilitado. Eso evita cargar módulos de terceros sin firmar si UEFI Secure Boot está habilitado.

La forma más sencilla de solucionar este problema es desactivar el arranque seguro en la configuración UEFI (BIOS).

En la mayoría de los casos, puede ingresar a la configuración de UEFI usando el menú de grub. Presione el botón ESC al arrancar, entre en el menú de grub y seleccione Configuración del sistema. La opción de Arranque seguro debe estar en la sección "Seguridad" o "Arranque" de la UEFI.

Puede ingresar directamente a UEFI, pero depende de su hardware. Lea el manual de su computadora para ver cómo llegar allí. Puede ser Del , o F2 en el arranque, o algo más.

Una forma alternativa es deshabilitar el inicio seguro utilizando mokutil .

Desde Ubuntu kernel build 4.4.0-21.37 esto se puede arreglar ejecutando

sudo apt install mokutil
sudo mokutil --disable-validation

Se requerirá crear una contraseña. La contraseña debe tener al menos 8 caracteres de largo. Después de reiniciar, UEFI le preguntará si desea cambiar la configuración de seguridad. Elija "Sí".

Luego se le pedirá que ingrese la contraseña creada anteriormente. Algunos firmware de UEFI no solicitan la contraseña completa, sino que ingresan algunos caracteres, como 1 °, 3 °, etc. Tenga cuidado. Algunas personas no entienden esto. No lo obtuve desde el primer intento tampoco; -)

Actualización: ahora esta configuración del kernel está habilitada en todos los núcleos de Ubuntu compatibles. Ubuntu 16.04, 15.10 y 14.04 se ven afectados.

    
respondido por el Pilot6 25.04.2016 - 09:51
24

Como sugerido por usuario @zwets, estoy copiando (con ediciones) una respuesta aquí:

Desde la versión 4.4.0-20 del kernel, se impuso que los módulos del kernel unsigned no podrán ejecutarse con Secure Boot habilitado. Si desea mantener Secure Boot y también ejecute estos módulos, entonces el siguiente paso lógico es firmar esos módulos.

Probémoslo.

  1. Crear claves de firma

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"
    
  2. Firme el módulo

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /path/to/module
    
  3. Registre las claves para el arranque seguro

    sudo mokutil --import MOK.der
    

    Proporcione una contraseña para usarla luego de reiniciar

  4. Reboot y siga las instrucciones para inscribirse en MOK (Clave de propietario de la máquina). Aquí hay una muestra con imágenes. El sistema se reiniciará una vez más.

Por favor, avíseme si sus módulos funcionarían de esta manera en Ubuntu 16.04 (en kernel 4.4.0-21, creo).

Recursos: Sitio web detallado artículo para Fedora y Implementación de Ubuntu de la firma del módulo. (han estado trabajando en eso) ;-)

Nota adicional para la seguridad (extra) consciente:; -)

Dado que la clave privada que creó ( MOK.priv en este ejemplo) puede ser utilizada por cualquier persona que pueda tener acceso a ella, es una buena práctica mantenerla segura. Puede chmod it, encriptar ( gpg ) it, o almacenarlo en otro lugar seguro (r). O bien, como se menciona en este comentario , elimine la opción -nodes en el paso número 1. Esto cifrará la clave con una frase de contraseña.

    
respondido por el Majal 09.05.2016 - 17:19
4

Puede deshabilitar el inicio seguro (UEFI) en el BIOS con los siguientes pasos:

  1. Reinicia tu máquina e ingresa al Menú de la BIOS (En mi caso, presionando F2)

  2. Buscar arranque seguro y cambiar a Legacy

En una placa madre ASUS:

  • Vaya al Modo avanzado (F7)
  • Vaya a la opción Arranque seguro debajo de la sección Boot
  • Cambia "Modo UEFI de Windows" con "Otro sistema operativo"
  • Guarde y reinicie para aplicar configuraciones (F10)
respondido por el Sputnik 28.04.2016 - 18:08
1

También puede deshabilitar el Arranque seguro en la ejecución con signo de shim sudo update-secureboot-policy . Esta página wiki explica este método:

  
  • Abra una terminal (Ctrl + Alt + T), y ejecute sudo update-secureboot-policy y luego seleccione Yes.
  •   
  • Ingrese una contraseña temporal entre 8 y 16 dígitos. (Por ejemplo, 12345678, usaremos esta contraseña más adelante
  •   
  • Ingrese la misma contraseña nuevamente para confirmar.
  •   
  • Reinicia el sistema y presiona cualquier tecla cuando veas la pantalla azul (gestión de MOK
  •   
  • Seleccione Cambiar estado de arranque seguro
  •   
  • Ingrese la contraseña que seleccionó en el Paso 2 y presione Entrar.
  •   
  • Seleccione Sí para deshabilitar el inicio seguro en shim-signed.
  •   
  • Presione la tecla Entrar para finalizar todo el procedimiento.
  •   

Todavía puede habilitar el inicio seguro en shim-signed nuevamente. Simplemente ejecuta      

sudo update-secureboot-policy --habilitado   y luego siga los pasos anteriores

    
respondido por el Kent Lin 04.08.2016 - 16:48

Lea otras preguntas en las etiquetas