Eliminar nuevos núcleos / arranque completo


8

Tenemos algunos servidores Ubuntu 16.04. unattended-upgradesse habilitan automáticamente desde 16.04 y la partición de arranque está en una partición separada. Debido a las actualizaciones de seguridad automáticas, la partición de arranque se está quedando sin espacio con nuevos núcleos.

No podemos simplemente reiniciar los sistemas para que la máquina siga usando el penúltimo kernel.

¿Qué granos debo eliminar? ¿Todos menos el actual, el más antiguo y el más nuevo?

¿Ustedes tienen algunas recomendaciones?

También he notado que el kernel más nuevo tiene el estado "Medio configurado". Este kernel probablemente no funcionaría, así que debería eliminar este y usar un kernel más antiguo.

Salida de dpkg -l | grep linux image:

    ii  linux-image-4.4.0-21-generic --> old kernel
    ii  linux-image-4.4.0-34-generic --> current kernel
    ii  linux-image-4.4.0-36-generic --> new kernel
    ii  linux-image-4.4.0-38-generic --> new kernel
    ii  linux-image-4.4.0-42-generic --> new kernel
    ii  linux-image-4.4.0-45-generic --> new kernel
    ii  linux-image-4.4.0-47-generic --> new kernel
    ii  linux-image-4.4.0-51-generic --> new kernel
    ii  linux-image-4.4.0-53-generic --> new kernel
    iF  linux-image-4.4.0-57-generic --> new kernel

Respuestas:


7

Para purgar el núcleo antiguo, puede usar la purge-old-kernelsherramienta de línea de comandos.

Este programa eliminará los paquetes antiguos de kernel y encabezado del sistema, liberando espacio en disco. Nunca eliminará el núcleo actualmente en ejecución. Por defecto, mantendrá al menos los 2 núcleos más recientes, pero el usuario puede anular ese valor utilizando el parámetro --keep. Cualquier parámetro adicional se pasará directamente aapt-get

Para instalar purge-old-kernels, ejecute:

sudo apt install byobu

o

sudo apt install bikeshed

Para mantener la última nejecución del kernel:

sudo purge-old-kernels --keep n

e, g: n = 2

sudo purge-old-kernels --keep 2

Actualización grub:

sudo update-grub

2
byobues probablemente el paquete que desea para 16.04 Xenuial: purge-old-kernelsse trasladó de bikeshedun byobumomento a otro entre Trusty y Xenial, aunque bikeshedahora lo recomienda, byobupor lo que aún obtendrá el programa a menos que no tenga recomendaciones de instalación.
Wolfgang

4

Para Ubuntu, Grub2 muestra automáticamente el núcleo más reciente y oculta los núcleos más antiguos. Si desea verlos, puede presionar Shift mientras arranca.

Entonces, antes de eliminar los núcleos más antiguos, inicie con el último núcleo disponible (grub2 lo carga por defecto en el arranque). Para verificar qué núcleo está utilizando, puede usar el comando:

uname -r

La recomendación es mantener al menos dos o preferiblemente tres núcleos, incluido el último. La razón es que tendrá al menos uno / dos núcleos más para iniciar si ocurre que no puede iniciar con el último núcleo.

Para eliminar los núcleos más antiguos, abra la terminal y verifique su núcleo actual:

uname -r 

Luego, para enumerar todos los núcleos instalados en su sistema.

dpkg --list | grep linux-image 

Encuentre todos los núcleos que sean inferiores a su núcleo actual. Ejecute los siguientes comandos para eliminar el núcleo que seleccionó:

sudo apt-get purge linux-image-x.x.x.x-generic 

Finalmente, ejecute los siguientes comandos para actualizar grub2

sudo update-grub2 

Y reinicie su sistema.


1
De la pregunta: "no podemos simplemente reiniciar los sistemas" . Su respuesta requiere hacerlo dos veces.
Carreras de ligereza en órbita

3

apt-get autoremove, se ejecuta periódicamente, debería poder ayudarlo a lograr lo que desea. El núcleo en ejecución, el núcleo anterior y los dos núcleos más recientes deberían ser suficientes.


1
Dada la lista de núcleos instalados, y el hecho de que el núcleo en ejecución es antiguo, diría "el núcleo en ejecución, el núcleo anterior y los dos núcleos más recientes".
Stephen Kitt

2

Arranque uno del núcleo anterior.

Primer intento apt autoremove --purge

Si no funciona dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Controla lo que se desinstalará.

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo dpkg -P Esto purgará el núcleo de escucha del comando a continuación.

sudo apt -f install

y seguro

 sudo update-grub
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.