El inicio de sesión no funciona después de la actualización 15.10 -> 16.04 LTS, relacionado con el controlador NVIDIA

El inicio de sesión no funciona después de la actualización 15.10 -> 16.04 LTS, relacionado con el controlador NVIDIA

Acabo de actualizar mi sistema del 15.10 al 16.04 mediante sudo do-release-upgrade. Durante este proceso, mostró una pantalla con el siguiente mensaje:

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

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

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

Dado que los únicos controladores de terceros que estoy usando son los controladores de gráficos NVIDIA, y dado que han estado funcionando bien con Ubuntu 15.10 y el arranque seguro habilitado, elegí la opción "no" aquí. No veo por qué debería desactivar 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. Al intentar iniciar sesión, inmediatamente me devuelve a la pantalla de inicio de sesión.

Intenté lo siguiente para solucionar la situación:

sudo apt-get purge nvidia*
sudo reboot

Esto lleva a una pantalla violeta y no hay reacción a Ctrl-Alt-F1. Al iniciar 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 tuvo esto? ¿Qué puedo hacer para solucionarlo? (mientras se mantiene el arranque seguro UEFI habilitado) Gracias.

Respuesta1

A través de Ubuntu 15.10, el manejo del arranque seguro por parte de Ubuntu se detuvo en GRUB; es decir, la versión de Ubuntu de Shim iniciaría la versión de Ubuntu de GRUB, que iniciaríacualquierKernel de Linux, esté o no firmado. Esta era una barra de soporte muy baja para Secure Boot. A modo de comparación, GRUB de Fedora lanzaría sólo kernels de Linux firmados, y los kernels de Fedora, cuando detectaran que el arranque seguro estaba activo, cargarían sólo los archivos binarios del kernel firmados. La intención del soporte de arranque seguro más sólido de Fedora era proteger el sistema contra módulos del kernel "deshonestos", que, en teoría, podrían apoderarse de la computadora a un nivel muy bajo. Ubuntu 15.10 y versiones 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 ventajas en materia 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 Ubuntu del kernel de Linux reconozca como válida, no se cargará. Esto afecta principalmente a los controladores de vídeo de código cerrado Nvidia y AMD/ATI, pero hay otros controladores que también pueden verse afectados.

Existen (o podrían existir) varias soluciones a este problema:

  • Deshabilitar el arranque seguro-- Esta es la solución más sencilla. Puedes hacerlo modificando la configuración de tu firmware o (creo) ajustando la configuración de Shim. (No estoy seguro de cómo hacerlo modificando la configuración de Shim, pero estoy bastante seguro de que es posible).
  • No utilice módulos de kernel de terceros-- Si se limita a los controladores de código abierto incluidos en el kernel de Linux estándar de Ubuntu, debería estar bien, ya que Canonical firma todos esos controladores (AFAIK). Tenga en cuenta que debería haber un soporte bastante bueno de Nvidia para el uso de dichos controladores; Su sistema probablemente recurrió a controladores subóptimos porque pensó que los controladores de código cerrado estaban disponibles. No sé cómo pasar de uno a otro, peroesta preguntaSe trata de hacerlo con controladores AMD/ATI, por lo que puede ser un punto de partida útil.
  • Firmar los módulos relevantes-- En teoría, firmar los módulos comerciales usted mismo debería hacerlos funcionar. Desafortunadamente, no tengo instrucciones sobre cómo hacer esto y, de hecho, ni siquiera estoy completamente seguro de que sea posible hacerlo con un kernel de Ubuntu estándar; un kernel de este tipo podría respetar sólo los módulos que estén firmados con la clave de Canonical, que por supuesto usted no posee.
  • Compila tu propio kernel-- Si compila su propio kernel, puede configurar sus opciones como mejor le parezca, incluida la flexibilización de las restricciones sobre la carga de módulos sin firmar. Luego deberá firmar el kernel con su propia clave EFI y agregar la versión pública de esa clave a su lista MOK.Aquí estáuna pregunta y respuestas sobre cómo compilar su propio kernel.
  • Cambiar a un GRUB más antiguo-- Debido a que un GRUB más antiguo iniciará kernels sin firmar, puede instalar dicho GRUB (desde Ubuntu 15.10 o anterior) y hacer que inicie un kernel sin firmar. Tenga en cuenta que mantener ese GRUB anterior probablemente sea una molestia.
  • Cambie a un cargador de arranque que no respete el arranque seguro-- Si firmara un cargador de arranque como SYSLINUX o ELILO con su propia clave y agregara la versión pública de esa clave a su lista MOK, ese cargador de arranque ignoraría la configuración de Arranque seguro, al igual que una versión anterior de GRUB. Luego podrías iniciar un kernel sin firmar.

Tenga en cuenta que las únicas dos de estas opciones que estoy 100% seguro que funcionarán son deshabilitar el arranque seguro o evitar módulos de kernel de terceros. Evito los módulos del kernel de terceros como si fueran una plaga, por lo que no tengo experiencia personal en su uso en un entorno de arranque seguro. Además de deshabilitar el Arranque seguro, construir su propio kernel podría ser el siguiente con mayor probabilidad de funcionar, seguido de usar un GRUB más antiguo o usar un cargador de arranque que no respete el Arranque seguro. Construir su propio kernel alguna vez fue común, pero ya pocas personas lo hacen, y con los kernels modernos, la inversión de tiempo para aprender a configurar un kernel, sin mencionar cómo hacerlo, puede ser significativa. Usar un GRUB antiguo u otro cargador de arranque puede ser más fácil, pero necesitarás saber lo suficiente para poder configurarlo. Es probable que la forma más fácil sea realizar un arranque dual con un Ubuntu anterior que instale en segundo lugar, pero tenga en cuenta que es probable que Ubuntu 16.04 restaure su GRUB en algún momento, después de lo cual deberá volver a instalar el GRUB del Ubuntu anterior. .

información relacionada