A través de Ubuntu 15.10, el manejo de arranque seguro de Ubuntu se detuvo en GRUB, es decir, la versión de Shim de Ubuntu lanzaría la versión de Ubuntu de GRUB, que lanzaría cualquier kernel de Linux, ya sea que haya sido firmado o no. Esta fue una barra de soporte muy baja para Secure Boot. A modo de comparación, GRUB de Fedora lanzaría solo núcleos de Linux firmados, y los núcleos de Fedora, cuando detectaran que el Arranque seguro estaba activo, cargarían solo los archivos binarios de kernel firmados. La intención del soporte de arranque seguro más robusto de Fedora era proteger el sistema contra los módulos de kernel "corruptos", que podrían, en teoría, hacerse cargo de la computadora a un nivel muy bajo. Ubuntu 15.10 y anteriores carecían de dicha protección.
A partir de 16.04, Ubuntu sigue un módulo de arranque seguro más estricto, más parecido a lo que Fedora ha estado haciendo durante bastante tiempo. Esto tiene beneficios de seguridad, pero como has visto, también tiene problemas. Si un controlador de terceros no está firmado con una clave criptográfica que la versión de Ubuntu del kernel de Linux reconoce como válida, no se cargará. Esto afecta principalmente a los controladores de video Nvidia y AMD / ATI de código cerrado, pero también hay otros controladores que pueden verse afectados.
Hay (o podría haber) varias soluciones a este problema:
- Desactivar arranque seguro : esta es la solución más fácil. Puede hacerlo al modificar la configuración de firmware o (creo) ajustando la configuración de Shim. (No estoy seguro de cómo hacerlo ajustando la configuración de Shim, pero estoy bastante seguro de que eso es posible).
- No use módulos de kernel de terceros : si se limita a los controladores de código abierto incluidos en el kernel estándar de Linux de Ubuntu, debería estar bien, ya que Canonical firma todos esos controladores (AFAIK). Tenga en cuenta que debería haber bastante buen soporte de Nvidia usando tales controladores; su sistema probablemente recurrió a controladores subóptimos porque pensó que los controladores de código cerrado estaban disponibles. No sé de antemano cómo cambiar de uno a otro, pero esta pregunta se trata de hacerlo con los controladores AMD / ATI, por lo que puede ser un punto de partida útil.
- Firme los módulos relevantes : en teoría, firmar los módulos comerciales usted mismo debería hacer que funcionen. Desafortunadamente, no tengo un puntero para obtener instrucciones sobre cómo hacer esto, y de hecho ni siquiera estoy completamente seguro de que sea posible hacer esto con un núcleo de Ubuntu; tal núcleo podría honrar solo los módulos que están firmados con la clave de Canonical, que por supuesto no posee.
- Compile su propio kernel : si compila su propio kernel, puede establecer sus opciones como mejor le parezca, incluido el aflojamiento de las restricciones para cargar módulos sin firmar. Luego deberá firmar el núcleo con su propia clave EFI y agregar la versión pública de esa clave a su lista MOK. Aquí hay una pregunta y respuestas sobre cómo compilar su propio núcleo.
- Cambie a un GRUB anterior : debido a que un GRUB anterior lanzará núcleos sin firmar, puede instalar dicho GRUB (desde Ubuntu 15.10 o anterior) y hacer que inicie un núcleo sin firmar. Tenga en cuenta que mantener ese GRUB antiguo probablemente sea un dolor.
- Cambie a un cargador de arranque que no cumpla con el arranque seguro : si tuviera que firmar un cargador de arranque como SYSLINUX o ELILO con su propia clave y agregar la versión pública de esa clave a su lista MOK, ese cargador de arranque ignoraría el Secure Configuración de arranque, al igual que una versión anterior de GRUB. Entonces podría iniciar un kernel sin firmar.
Tenga en cuenta que las dos únicas opciones de las que estoy 100% seguro funcionarían son deshabilitar el Arranque seguro o evitar módulos de kernel de terceros. Evito los módulos de kernel de terceros como la plaga, por lo que no tengo experiencia personal con su uso en un entorno de arranque seguro. Además de deshabilitar el Arranque seguro, la construcción de su propio núcleo podría ser la siguiente más probable que funcione, seguido de un GRUB anterior o un cargador de arranque que no cumpla con el Arranque seguro. Construir su propio kernel fue una vez común, pero pocas personas lo hacen más, y con los kernel modernos, la inversión de tiempo para aprender cómo configurar un kernel, sin mencionar que realmente lo hace, puede ser significativa. Usar un GRUB anterior u otro cargador de arranque puede ser más fácil, pero necesitará saber lo suficiente para poder configurarlo.