Arranque Seguro
El Arranque Seguro es el firmware comprobando una firma antes de ejecutar nada. En Fedora funciona de serie, y sigue funcionando hasta que instalas un módulo del kernel que Fedora no ha firmado — el controlador de NVIDIA, VirtualBox, algunos controladores de Wi-Fi y de panel táctil, cualquier cosa construida por akmods o DKMS. Entonces el kernel se niega a cargar el módulo.
Esa negativa es silenciosa. No hay ningún error en la salida de la instalación, y el síntoma llega un reinicio más tarde: una pantalla en negro, o un escritorio funcionando con un controlador de reserva a la resolución equivocada. Esta página cubre las dos salidas.
Comprueba qué tienes
mokutil --sb-state
SecureBoot enabled significa que todo lo que sigue te aplica.
SecureBoot disabled significa que los módulos sin firmar se cargan sin
problema y puedes saltarte esta página, al coste descrito en
Desactivarlo.
Inscribir tu propia clave
El enfoque que documentan Fedora y RPM Fusion: generar un par de claves, inscribir la mitad pública en la lista de Machine Owner Key del firmware, y dejar que akmods firme con ella cada módulo que construya. Haz esto antes de instalar un controlador — hacerlo después funciona, pero te llevas un mal arranque de por medio.
Esto reproduce el Secure Boot HowTo de RPM Fusion.
sudo dnf install akmods mokutil openssl
Genera el par de claves. -a acepta los valores por defecto en lugar de irte
preguntando por la configuración de un certificado:
sudo kmodgenca -a
Eso escribe el certificado en /etc/pki/akmods/certs/ y la clave privada en
/etc/pki/akmods/private/. akmods genera esta clave por su cuenta en su
primera ejecución si te saltas el paso; hacerlo a propósito significa que
sabes dónde está.
La clave privada vive sin cifrar en tu sistema de archivos raíz. Cualquier cosa que pueda leerla puede firmar un módulo del kernel en el que tu máquina confiará. Si el disco no está cifrado, ese es el intercambio que estás haciendo. RPM Fusion trata el cifrado de disco completo como un requisito aquí.
Pon la clave pública en cola para su inscripción:
sudo mokutil --import /etc/pki/akmods/certs/public_key.der
mokutil te pide establecer una contraseña de un solo uso. La escribes en el
siguiente arranque, así que elige algo corto y sin ambigüedades.
sudo systemctl reboot
El siguiente arranque se detiene en una pantalla azul de MOK Management antes de que el gestor de arranque ceda el control. Esto no es un error. Elige Enroll MOK → Continue → Yes, y después introduce la contraseña que acabas de establecer.
El teclado del MOK Manager está fijado a QWERTY de EE. UU. sea cual sea tu distribución de teclado. En AZERTY, Dvorak o cualquier otra, la contraseña que escribes no es la contraseña que crees estar escribiendo. Elige en consecuencia.
El sistema se reinicia otra vez. Confirma que la clave ha surtido efecto:
sudo mokutil --test-key /etc/pki/akmods/certs/public_key.der
A partir de aquí akmods firma con esa clave cada módulo que construye, para este kernel y para todos los futuros.
Si usas DKMS en su lugar
DKMS firma con su propia clave por sistema en /var/lib/dkms/mok.pub,
inscrita con el mismo paso de mokutil --import. El resto del proceso es
idéntico. negativo17 ofrece DKMS como
alternativa a akmods; RPM Fusion usa únicamente akmods.
Desactivarlo
Desactiva el Arranque Seguro en la configuración de tu firmware y el módulo
sin firmar se carga. A lo que renuncias es a la verificación de la cadena de
arranque por parte del firmware: el gestor de arranque y el kernel ya no se
comprueban contra una firma antes de ejecutarse, así que un compromiso que
llegue a tu ESP o a /boot puede persistir entre reinstalaciones sin ser
detectado.
Comprueba dos cosas primero. Algunos sistemas atan BitLocker o una política de TPM al estado del Arranque Seguro, lo que importa en una máquina con arranque dual. Y algunos firmwares esconden la opción hasta que estableces una contraseña de supervisor.
En escritorios atómicos
Silverblue, Kinoite y los
demás construyen los
módulos mientras componen un despliegue, lo que significa que la clave de
firma tiene que estar disponible durante la composición — tiene que ir
empaquetada en lugar de estar en /etc. RPM Fusion apunta al repositorio de
terceros silverblue-akmods-keys para esto. No ha tenido commits
desde 2023, así que verifícalo contra tu versión antes de confiar en él.
Las imágenes precompiladas esquivan el
problema distribuyendo módulos ya firmados con la clave del proyecto; esa
clave la inscribes una vez. Las imágenes de Universal Blue lo envuelven en
ujust enroll-secure-boot-key, donde la contraseña la establece la imagen en
vez de establecerla tú.
Qué lo rompe más adelante
- Las actualizaciones de firmware pueden borrar las claves MOK inscritas.
Si un módulo deja de cargarse después de una actualización de BIOS o UEFI,
vuelve a ejecutar el paso de
mokutil --importe inscríbela de nuevo. - Esta clave firma módulos, no kernels. Un kernel compilado por uno mismo es un problema aparte con una solución aparte.
- Un intento por reinicio. Equivocarse con la contraseña de MOK significa reiniciar y empezar de nuevo el diálogo de inscripción.
Resolución de problemas
El módulo se ha construido pero no se carga. Confirma que el módulo existe para el kernel en ejecución, y después comprueba el estado de la firma:
sudo dmesg | grep -i 'Loading of unsigned module\|module verification failed'
mokutil --test-key /etc/pki/akmods/certs/public_key.der
Pantalla en negro después de instalar un controlador. Arranca el kernel
anterior desde el menú de GRUB, o añade nomodeset a la línea de comandos del
kernel desde el editor de GRUB, y después trabaja desde una TTY.
Controladores de NVIDIA
tiene la secuencia de recuperación completa para ese caso.
mokutil --test-key dice que la clave no está inscrita, pero la
inscribiste. O bien la contraseña del MOK Manager se escribió mal — mira la
nota sobre QWERTY más arriba — o una actualización de firmware borró el
almacén de claves.
Fuentes
- RPM Fusion, Secure Boot HowTo
- Documentación de Fedora, firmar módulos del kernel
- silverblue-akmods-keys, para el caso atómico