Saltar al contenido

¿Cómo eliminar un kernel que no funciona después de la actualización?

Hacemos una verificación completa cada uno de los tutoriales en nuestro espacio con el objetivo de enseñarte siempre información con la mayor veracidad y actual.

Solución:

Si la última actualización del kernel falla (pregunta original), la mejor opción para la mayoría es volver al kernel que funcionaba anteriormente (siempre que mantenga al menos 1 opción de respaldo).

De lo contrario, use la solución de @ZAB para instalar una versión específica de la versión del kernel proporcionada a través del apt gerente de empaquetación.

En genérico, para eliminar los núcleos obsoletos no deseados, abra una sesión de terminal y ejecute el comando:

IMPORTANTE: Si /boot NO está en su partición pequeña (se está quedando sin espacio), evite purgar explícitamente los núcleos antiguos. Considérelas opciones de respaldo / reserva cuando la actualización presente problemas (módulos de controladores de hardware, etc.).

Buena lectura sobre el mecanismo de conservación y actualización del kernel: Cómo apt en Ubuntu decide cuántos kernels antiguos conservar

TL; DR: Echa un vistazo a /etc/apt/apt.conf.d/01autoremove-kernels archivo generado por el gancho postinstall (script).

Fragmento de Ubuntu 20.04 LTS en ejecución 5.4.0 para una mejor comprensión:

// DO NOT EDIT! File autogenerated by /etc/kernel/postinst.d/apt-auto-removal
APT::NeverAutoRemove

   "^linux-.*-5.4.0-28-generic$";
   "^linux-.*-5.4.0-29-generic$";
   "^linux-.*-5.4.0-31-generic$";
   "^kfreebsd-.*-5.4.0-28-generic$";
   "^kfreebsd-.*-5.4.0-29-generic$";
   "^kfreebsd-.*-5.4.0-31-generic$";
   "^gnumach-.*-5.4.0-28-generic$";
   "^gnumach-.*-5.4.0-29-generic$";
   "^gnumach-.*-5.4.0-31-generic$";
   "^.*-modules-5.4.0-28-generic$";
   "^.*-modules-5.4.0-29-generic$";
   "^.*-modules-5.4.0-31-generic$";
   "^.*-kernel-5.4.0-28-generic$";
   "^.*-kernel-5.4.0-29-generic$";
   "^.*-kernel-5.4.0-31-generic$";
;

Busque el nombre del paquete del kernel

dpkg -l | grep linux-image

En el momento de escribir este artículo, en amd64/x86_64 arquitectura el nombre de la imagen era: linux-image-$(uname -r)-generic

Para las imágenes del kernel sin firmar, como las creadas por los controladores de nvidia, la imagen podría ser: linux-image-unsigned-4.20.17-042017-generic

Eliminar (purgar: eliminar también todos los archivos de configuración)

sudo apt-get purge linux-image-3.5.0-40-generic

Si desea hacer una limpieza profunda (configuraciones de paquetes sobrantes …), USE CON PRECAUCIÓN:

dpkg -l | awk '/^rc/  print $2 ' | xargs apt-get purge -y
dpkg -l | awk '/^rc/  print $2 ' | xargs dpkg -P

NOTA: Para Ubuntu 18.04 LTS o posterior, es posible que también desee eliminar cualquier linux-modules o linux-headers paquetes de la misma versión para ahorrar espacio en disco / mantener su sistema esbelto.

Actualización – 2020-05-21

La purga explícita de núcleos antiguos puede provocar resultados inesperados. No recomendado a menos que /boot está en su propia partición pequeña (sin espacio).

Consulte el enfoque de @ZAB para deshacerse de la última actualización del kernel que introduce errores (rompe cosas).

Wiki de Ubuntu sobre la eliminación de núcleos antiguos

No hay (personalmente no he encontrado) un equivalente fácil al enfoque de Fedora / RHEL / CentOS configurando installonly_limit=2 para decirle a DNF o YUM que solo conserven los últimos 2 núcleos.

sudo apt-get remove linux-image-3.5.0-40*.

Le sugeriré que siempre mantenga al menos un kernel más antiguo disponible, en caso de que necesite arrancarlo por razones que nunca esperaría en este momento.

No hagas ciegamente lo que se sugiere en la respuesta aceptada. Romperá tu sistema. Leer que apt la utilidad le dice antes de presionar y.

Se realizaron los siguientes pasos para eliminar el kernel defectuoso 5.3.0-53 por ejemplo. El núcleo de trabajo anterior era 5.3.0-51.

Primer intento sudo apt remove linux-image-5.3.0-53-generic --verbose-versions y leer la salida:

...
The following NEW packages will be installed:
  linux-image-unsigned-5.3.0-53-generic (5.3.0.53.109)
...

No necesitamos este paquete, presione n y pide que se lo quite también
sudo remove linux-image-5.3.0-53-generic linux-image-unsigned-5.3.0-53-generic --verbose-versions ahora imprime esto:

....
The following packages will be REMOVED:
 linux-generic-hwe-18.04 (5.3.0.53.109)
 ....

Este paquete es importante, este es el paquete distributivo principal que nos proporciona actualizaciones del kernel. Necesitamos reinstalar la versión anterior. Así que presione y y busque la buena versión anterior del kernel. En mi caso es 5.3.0.51.104. Intenta reinstalarlo sudo apt install linux-generic-hwe-18.04=5.3.0.51.104 --verbose-versions, imprime esto:

The following packages have unmet dependencies:
 linux-generic-hwe-18.04 : Depends: linux-image-generic-hwe-18.04 (= 5.3.0.51.104)  but 5.3.0.53.109 is to be installed
                           Depends: linux-headers-generic-hwe-18.04 (= 5.3.0.51.104) but 5.3.0.53.109 is to be installed

Dejemos en la lista negra esta nueva versión que no nos gusta. Editar archivo /etc/apt/preferences y agregue esto:

Package: linux-generic-hwe-18.04 linux-image-generic-hwe-18.04 linux-headers-generic-hwe-18.04
Pin: version 5.3.0.53.109
Pin-Priority: -1

Repetir sudo apt install linux-generic-hwe-18.04=5.3.0.51.104 --verbose-versions verifique la salida, en mi caso todo parece estar bien, así que acepto y reinicio.

valoraciones y reseñas

Recuerda que puedes comunicar este ensayo si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *