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.