Cómo degradar el kernel después de una mala actualización (16.04)

20

Las actualizaciones recientes al kernel Ubuntu 16.04 (4.4.0-89 y -91) fallaron gravemente en mi computadora portátil. Afortunadamente, todavía tengo instalada la versión anterior que funciona (4.4.0-57). Por ahora tengo Grub configurado para mostrarme un menú, y selecciono manualmente -57 en el arranque, pero esto parece frágil, es probable que se rompa en un futuro sudo apt upgrade.

Creo que quiero:

  • Para eliminar -89 y -91, ya que no me están haciendo ningún bien.
  • Para hacer -57 el valor predeterminado para Grub, de una manera que persistirá durante las actualizaciones.
  • Para asegurar que el -57 permanezca instalado, incluso si instalo una actualización posterior del kernel
  • Para poder probar fácilmente las actualizaciones posteriores del kernel, pero volver a -57 si falla. Mi principal preocupación es -57 se elimina automáticamente.
  • Si encuentro una actualización posterior que funcione, una ruta fácil para volver a deshacer todo esto y volver a las siguientes actualizaciones del kernel.

Intentar eliminar -91 sudo apt remove linux-image-4.4.0-91-genericrequiere que elimine linux-generic y linux-headers-generic. Eso parece malo, así que no lo he probado.

Puedo encontrar una variedad de preguntas sobre el problema general, pero ninguna parece abordar todos mis objetivos, y la mayoría son lo suficientemente mayores como para no pensar que se apliquen más.

¿Cuál es la mejor manera de hacer esto?

Anexo : Esto se marcó como un duplicado de ¿Cómo evitar la actualización de un paquete específico? . Esa respuesta podría abordar una parte de mi pregunta, pero no aborda el panorama general.

En términos generales, el problema es que el núcleo se maneja de una manera inusual. Se instala a través de linux-generic, que no es más que una dependencia de linux-image-generic y linux-image-headers. Esos, a su vez, son solo dependencias de linux-linux-image-VERSION-generic y headers-VERSION-generic, paquetes notables para hornear el número de versión en el nombre del paquete (presumiblemente para facilitar la instalación de múltiples en paralelo).

Específicamente no se abordan en esa respuesta son:

  • No aborda cómo eliminar -89 y -91.
  • No aborda cómo hacer que -57 sea el valor predeterminado para Grub, incluso si instalo actualizaciones posteriores.
  • No aborda cómo garantizar que -57 permanezca instalado, incluso si instalo actualizaciones posteriores. Incluso si la respuesta es retener uno o más paquetes, dados los varios paquetes involucrados, ¿cuáles retendría? Si se trata de mantener linux-generic, ¿cómo lo rebajo primero?
Alan De Smet
fuente
Es muy poco probable que los núcleos "hayan fallado" en su computadora portátil. Probablemente instaló algún controlador de forma incorrecta y "falló" después de una actualización del kernel. ¿Instalaste algún controlador de gráficos?
Pilot6
Si elimina el último núcleo y linux-generic con encabezados, logrará su objetivo. Pero como dije, el problema es diferente.
Pilot6
1
"falló" no había wifi y X descontento con mis gráficos. Ambos son controladores de stock integrados y usados ​​de Intel. El problema persistió a través de múltiples reinicios, incluido un apagado / encendido completo. Así que mi objetivo era una pausa hasta que pudiera investigar seriamente. Naturalmente, empiezo a recopilar información para una investigación seria y -91 comienza a funcionar como se esperaba. suspiro Cruzaré mis dedos por ahora.
Alan De Smet
1
Esto no es un duplicado. No se trata solo de congelar algún paquete. Quizás sea un duplicado pero no de la pregunta propuesta.
Pilot6

Respuestas:

19

Eliminar el último núcleo por

sudo apt remove linux-image-4.4.0-91-generic linux-headers-4.4.0-91-generic

Eso va a desinstalar paquetes de meta linux-generic, linux-image-genericy linux-headers-generic. Los núcleos nunca se actualizarán.

Para revertirlo puedes correr

sudo apt install linux-generic

Eso instalará el último núcleo y los núcleos recibirán actualizaciones.

linux-genericEs un meta paquete. Está vacío, pero depende de otros dos metapaquetes: linux-image-genericy linux-headers-generic.

Los dos últimos apuntan a la última imagen y encabezados del kernel.

Si elimina metapaquetes, no se eliminará nada de Linux, pero la imagen del núcleo y los encabezados no recibirán actualizaciones. Siempre puedes instalarlos más tarde. Extraerán los últimos paquetes de kernel "reales".

Entonces, la solución es eliminar manualmente los paquetes del núcleo que no desea y también los metapaquetes.

Piloto6
fuente
3

Aunque la solución de Pilot6 puede ser la mejor solución, puede tomar medidas menos drásticas.

Quitaría personalmente los núcleos que no desea del centro de software y luego pondría esos paquetes en espera. Consulte ¿Cómo evitar la actualización de un paquete específico?

Este es un cambio trivial y puede anular o revertir el cambio con bastante facilidad.

Pantera
fuente
¿Qué paquete sugiere mantener?
Pilot6
linux-generic es probablemente suficiente, no estoy seguro. Es posible que necesite agregar los otros y que necesite especificar el núcleo exacto, pero lo dudo.
Panther
3
sudo apt-mark hold linux-image-generic linux-headers-genericlo hará
Panther
1
@ Pilot6 - No, puede conservar los núcleos antiguos y marcar grub en qué núcleo arrancar. askubuntu.com/questions/216398/…
Panther
1
Sí tu puedes. Pero es demasiado complicado y no tiene sentido práctico.
Pilot6