Cómo eliminar versiones antiguas del kernel del arranque en Ubuntu 18.04

Canonical proporciona actualizaciones periódicas para el sistema Ubuntu 18.04, incluidas actualizaciones del kernel para administrar los recursos del sistema de la mejor manera posible. Este artículo le proporcionará algunos métodos diferentes para eliminar núcleos antiguos del menú de inicio de su Ubuntu 18.04. Cuando instala un nuevo kernel, los viejos no se eliminan porque pueden ayudarlo a arrancar si comete un error con el nuevo o por alguna otra razón. Observe que el kernel antiguo consume algunos espacios que pueden ser útiles para otra cosa. A veces necesitamos actualizar el kernel para compatibilidades porque es responsable de interconectar todas las aplicaciones.

Compruebe si hay granos antiguos

Para evitar errores con el kernel de arranque actual de su sistema Ubuntu 18.04, asegúrese de verificar su versión

# uname -r
4.15.0-23-generic

Antes de intentar eliminar el núcleo antiguo, primero debe comprobar si hay núcleos antiguos presentes en los sistemas. Para hacer eso, puede mirar el grub cuando se inicia el sistema

puede seleccionar “opción avanzada para Ubuntu”. Puede ver el kernel actual en la parte superior de la lista con el kernel anterior justo después de 4.15.0.13-generic

Hay otro método para verificar el kernel antiguo en la línea de comandos. Esto le ayudará a enumerar el kernel antiguo y no el actual.

# dpkg -l | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
ii  linux-image-4.15.0-13-generic    4.15.0-13.14        amd64      Linux kernel image for version 4.15.0 on 64 bit x86 SMP

Puede ver que efectivamente tiene instalado un kernel antiguo marcado con ii. Puede ver kernels más antiguos si ha realizado alguna actualización o instalación manual. Hay algún estado cuando verifica el kernel

  • ii: significa que el kernel / los paquetes están instalados y son elegibles para su eliminación.
  • rc: indica que el kernel ya ha sido eliminado.
  • iU: es algo así como una advertencia que dice NO QUITAR. Eso significa que no está instalado sino en cola para instalarlo en apt.

Asegúrese de ver el estado antes de hacer nada. Ahora que hemos encontrado algunos núcleos instalados, veamos los diferentes métodos para eliminar cada uno o la totalidad.

1) Elimina los núcleos antiguos en la línea de comandos

Hay algunos comandos útiles para eliminar los núcleos antiguos, ya sea que los haya instalado manualmente o directamente a través de las actualizaciones del sistema. Normalmente, lo instala a través de las actualizaciones regulares del sistema, pero por algunas razones, puede decidir realizar una instalación manual.

a) comando apt

El comando apt ayuda a desinstalar paquetes, incluidos los núcleos antiguos que no necesita en sus sistemas Ubuntu 18.04. Puede verificar los que se instalaron automáticamente como se muestra a continuación

# apt-mark showauto 'linux-image-.*'
linux-image-4.15.0-13-generic
linux-image-4.15.0-23-generic
linux-image-extra-4.15.0-13-generic
linux-image-generic

y puede verificar los que se instalaron manualmente como se muestra a continuación

# apt-mark showmanual 'linux-image-.*'

Como puede ver, no tenemos ningún kernel instalado manualmente. Puede eliminar todo el kernel antiguo con el parámetro de eliminación de la siguiente manera:

# apt remove linux-image-4.15.0-13-generic
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following packages will be REMOVED:
 linux-image-4.15.0-13-generic* linux-image-extra-4.15.0-13-generic
....
....
you may need to re-run your boot loader[grub]

Cuando elimine un kernel, asegúrese de actualizar el grub para ver si ocurre algún error al generar el grub

# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-23-generic
Found initrd image: /boot/initrd.img-4.15.0-23-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done

Ahora puedes comprobar de nuevo si se ha eliminado.

# dpkg -l | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
rc  linux-image-4.15.0-13-generic    4.15.0-13.14     amd64      Linux kernel image for version 4.15.0 on 64 bit x86 SMP

Puedes ver el estado rc que muestran que se ha eliminado. También puede verificar en el menú de inicio y ver que solo aparece el kernel de inicio actual

También puede utilizar el apt autoremove comando, pero debe notar que el comando se usa para eliminar paquetes que se instalaron automáticamente para satisfacer las dependencias de otros paquetes y que ya no son necesarios como dependencias. Así que verifique si no hay un paquete que necesite estar presente en la lista de paquetes para eliminar

# apt autoremove --purge

b) comando dpkg

También puede usar el comando dpkg para eliminar un kernel específico en su sistema Ubuntu 18.04. Esta vez deberá indicar el paquete y las dependencias adicionales

# dpkg --purge linux-image-4.15.0-13-generic linux-image-extra-4.15.0-13-generic 
(Reading database ... 165680 files and directories currently installed.)
...
...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-23-generic
Found initrd image: /boot/initrd.img-4.15.0-23-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done
...

Puede verificar nuevamente los rastros, pero verá que se eliminaron por completo porque no tendrá una salida que muestre que se ha eliminado (rc)

# dpkg -l | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)

También puedes buscar la larva.

c) Usando un guión

Hemos encontrado un interesante guión interactivo de Kivisade en Github lo que le ayuda a eliminar los viejos núcleos. Utiliza el comando dpkg pero lo interesante es el hecho de que enumera los kernels a eliminar y pide tu opinión. Primero instale git

# apt install git

Ahora clona el proyecto

# git clone https://github.com/kivisade/kernel-purge.git
Cloning into 'kernel-purge'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Unpacking objects: 100% (3/3), done.

entrar a la carpeta y dar el permiso

# cd kernel-purge && chmod +x kernel-purge.sh

Ahora ejecuta el script

# ./kernel-purge.sh 
Running kernel version is: 4.15.0-23
The following (unused) KERNEL packages will be removed:
linux-headers-4.15.0-13
linux-headers-4.15.0-13-generic
linux-image-4.15.0-13-generic
linux-image-extra-4.15.0-13-generic
Do you want to continue [yN]? y
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following packages will be REMOVED:
 linux-headers-4.15.0-13* linux-headers-4.15.0-13-generic*
 linux-image-4.15.0-13-generic* linux-image-extra-4.15.0-13-generic*
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
After this operation, 335 MB disk space will be freed.
(Reading database ... 168812 files and directories currently installed.)
...
...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-23-generic
Found initrd image: /boot/initrd.img-4.15.0-23-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done
...
...

Ahora puede comprobar si los núcleos se han eliminado de forma eficaz. No tendrá una salida, por lo que se eliminaron los núcleos antiguos

# dpkg -l | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)

2) Utilice herramientas gráficas para eliminar núcleos antiguos

También puede utilizar la herramienta gráfica para desinstalar los paquetes del kernel. La herramienta le pedirá su contraseña durante el proceso porque necesita tener el permiso administrativo.

a) limpiador de Ubuntu

Ubuntu Cleaner es una utilidad de sistema fácil de usar diseñada para limpiar cachés del navegador, eliminar aplicaciones innecesarias y obtener imágenes de kernels antiguos. Ubuntu puede ser útil si desea eliminar:

  • Cachés de aplicaciones que incluyen la mayoría de los principales navegadores
  • Caché apto
  • Núcleo antiguo
  • Paquetes innecesarios

El paquete no está presente de forma predeterminada en el repositorio oficial, por lo que debemos agregar el PPA. Recuerde que en Ubuntu 18.04 no necesita actualizar la caché de paquetes después de agregar el PPA porque se inicia automáticamente. Así que agregue el PPA como se muestra a continuación

~# add-apt-repository ppa:gerardpuig/ppa
 Official Ubuntu Cleaner stable repository
 More info: https://launchpad.net/~gerardpuig/+archive/ubuntu/ppa
Press [ENTER] to continue or Ctrl-c to cancel adding it.

Hit:1 https://cm.archive.ubuntu.com/ubuntu bionic InRelease                    
Get:2 https://cm.archive.ubuntu.com/ubuntu bionic-updates InRelease [83.2 kB]  
Get:3 https://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]   
Get:4 https://cm.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:5 https://security.ubuntu.com/ubuntu bionic-security/main amd64 DEP-11 Metadata [204 B]
...
...

Ahora puedes instalar la herramienta

# apt install ubuntu-cleaner
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following additional packages will be installed:
 libpython-stdlib python python-apt python-aptdaemon
...
...

Luego inicie el software

Luego elija la sección de kernel anterior y seleccione los kernels para eliminar

Se le pedirá la contraseña y se iniciará el proceso.

Ahora puede comprobar si los núcleos todavía están presentes. Puede ver el estado que indica que se eliminó

# dpkg -l | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
rc  linux-image-4.15.0-13-generic    4.15.0-13.14     amd64      Linux kernel image for version 4.15.0 on 64 bit x86 SMP

b) sináptico

Synaptic es una interfaz gráfica para la Herramienta de empaquetado avanzada (APT) utilizada por el sistema basado en Debian para manejar la instalación de los paquetes / software. No es una herramienta fácil de usar por lo que puede resultar muy confuso de usar, por eso hay que tener mucho cuidado.

# apt install synaptic
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following additional packages will be installed:
 docbook-xml libept1.5.0 libgtk2-perl libpango-perl librarian0 rarian-compat
 sgml-base sgml-data xml-core

Ahora inicia la aplicación

Ahora vaya a Sección -> Núcleo y módulos, elija los núcleos que desee eliminar y márquelos para una eliminación completa. Asegúrese de elegir los núcleos correctos en la lista

Te pedirá confirmación

Puede ver que marca automáticamente la dependencia. Aplicar para quitar los granos

Pedirá la confirmación. Solicitar

Puede ver una ventana que muestra el proceso. Si observa con atención, verá al final que el grub se ha generado y los núcleos antiguos no están presentes.

Conclusión

Ahora sabe cómo puede eliminar el kernel antiguo del arranque de su Ubuntu 18.04. Debe notar que se recomienda eliminar todo el kernel anterior porque si no puede arrancar con su kernel actual por cualquier motivo. Por lo que recomendó mantener al menos dos o preferiblemente tres núcleos, incluido el último. El motivo de la recomendación es que tendrá al menos uno o dos núcleos más para arrancar.

Leer también

  • Cómo utilizar las herramientas de seguimiento del kernel de BCC para el análisis del rendimiento de Linux
  • Cómo quitar y agregar PPA en Ubuntu 18.04
  • 6 comandos para borrar la terminal de Linux