Inicio de sesión interrumpido después de 15.10 -> 16.04 actualización LTS, relacionada con el controlador NVIDIA

10

Acabo de actualizar mi sistema de 15.10 a 16.04 a través de sudo do-release-upgrade. Durante este proceso, mostró una pantalla con el siguiente mensaje:

Su sistema tiene UEFI Secure Boot habilitado. UEFI Secure Boot no es compatible con el uso de controladores de terceros.

(...) Ubuntu aún podrá arrancar en su sistema, pero estos controladores de terceros no estarán disponibles para su hardware.

¿Deshabilitar el arranque seguro UEFI? (sí | no)

Como los únicos controladores de terceros que estoy usando son los controladores de gráficos NVIDIA, y dado que han funcionado bien con Ubuntu 15.10 y Secure Boot habilitado, elegí la opción "no" aquí. No veo por qué debería deshabilitar esto sin una buena razón, y asumí que puedo reinstalar el controlador de terceros a través de la GUI de configuración del sistema después de la actualización.

Por desgracia no. Al reiniciar, mi pantalla de inicio de sesión apareció en muy baja resolución. Cuando intento iniciar sesión, inmediatamente me devuelve a la pantalla de inicio de sesión.

He intentado lo siguiente para solucionar la situación:

sudo apt-get purge nvidia*
sudo reboot

Esto lleva a una pantalla púrpura y no hay reacción a Ctrl-Alt-F1. Iniciando sesión a través de SSH, luego hice:

sudo apt-get install nvidia-current
sudo reboot

lo que nuevamente me trae el escenario anterior, con una pantalla de inicio de sesión de muy baja resolución y sin forma de iniciar sesión.

Esta es una experiencia de actualización bastante mala. ¿Alguien más tiene esto y qué puedo hacer para solucionarlo? (mientras mantiene UEFI Secure Boot habilitado) Gracias.

kmhofmann
fuente
55
Echa un vistazo aquí
Videonauth
Wow, esto es malo. Hasta ahora he tenido que: instalar nvidia-364 a través de PPA y desactivar el arranque seguro. Ahora las cosas parecen funcionar, pero tampoco el controlador se actualizará automáticamente (si no me equivoco), ni puedo volver a habilitar el arranque seguro ...
kmhofmann
Sí, desafortunadamente no hay otra opción en este momento. No le importa que marque esta pregunta como duplicada.
Videonauth
No, no me importa
kmhofmann
No es un duplicado, al menos, no del todo. Esta pregunta agrega el nuevo giro de Secure Boot, que no es parte de la pregunta "duplicada" (aunque se menciona en un par de comentarios y respuestas), y eso merece más atención.
Rod Smith

Respuestas:

8

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.

Rod Smith
fuente
2
* Use Ubuntu 14.04 hasta que se solucione este problema. Hay muchas razones por las que Linux en el escritorio todavía no está a la vista. Este tipo de cosas realmente hace que sea más doloroso para las personas adoptar Linux.
Inverso
Firme los módulos relevantes: firme manualmente /lib/modules/x.y.z/updates/dkms/nvidia*.kousandokmodsign (también después de cada actualización del controlador) o automáticamente conapt install shim-signed .
Joel Purra