Tengo 200 MB asignados para la /boot
partición. Cada vez que intento actualizar el kernel, recibo un mensaje de error que básicamente dice que /boot
está lleno.
¿Qué puedo hacer para limpiar /boot
y eliminar / respaldar los núcleos más antiguos?
kernel
boot-partition
koba101
fuente
fuente
Respuestas:
Método de línea de comando:
Primero verifique la versión de su núcleo, para que no elimine la imagen del núcleo en uso, ejecutando:
Ahora ejecute este comando para obtener una lista de los núcleos instalados:
y elimine los núcleos que ya no desea / necesita ejecutando esto:
Reemplace la VERSIÓN con la versión del núcleo que desea eliminar.
Cuando haya terminado de eliminar los núcleos más antiguos, puede ejecutar esto para eliminar los paquetes que ya no necesitará:
Y finalmente puede ejecutar esto para actualizar la lista de kernel de grub:
fuente
sudo dpkg --list 'linux-image*' | grep ^ii
hace que sea un poco más fácil ver solo los núcleos instalados. También creo queupdate-grub
es inofensivo pero no estrictamente necesario, se ejecuta automáticamente cuando desinstala un núcleo.sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo ""
para obtener la lista de nombres de paquetes que se utilizaránsudo apt-get remove
.head -n -3
se usa para mantener los 3 núcleos más recientes que quedan en el sistema.apt-get remove `dpkg --list 'linux-image*' |grep ^ii | awk '{print $2}'\ | grep -v \`uname -r\``
sudo apt-get autoremove
debería ser suficiente (generalmente te deja con los últimos 3 núcleos)/boot
está lleno, porapt-get
lo que fallará con algún código de error u otro. La respuesta a continuación es una "hackier" bits (debo confesar que tuve que armarme de emitir querm -rf
en/boot
), pero el único que es probable que funcione en esta situación.NOTA: esto es solo si no puede usar apt para limpiar debido a un 100% lleno / arranque
Si apt-get no funciona porque su / boot está al 100%, primero deberá limpiar / boot. Es probable que esto haya detectado una actualización del kernel en una instalación parcial, lo que significa que apt se ha congelado por completo y seguirá diciéndole que se ejecute
apt-get -f install
a pesar de que ese comando sigue fallando.Obtenga la lista de imágenes del kernel y determine de qué puede prescindir. Este comando mostrará los núcleos instalados, excepto el que se está ejecutando actualmente
sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`
. Tenga en cuenta las dos versiones más recientes de la lista. No necesita preocuparse por el que se está ejecutando, ya que no figura aquí. Puedes verificar eso conuname -r
.Crea un comando para eliminar todos los archivos en / boot para los núcleos que no te importan usando la expansión de llaves para mantenerte cuerdo. Recuerde excluir las imágenes del kernel actuales y las dos más recientes. Ejemplo:
sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*
. También puede usar un rango con la sintaxis {80..84}.sudo apt-get -f install
para limpiar lo que hace que apt gruñona sobre una instalación parcial.Si se encuentra con un error que incluye una línea como "Error interno: no se pudo encontrar la imagen (/boot/vmlinuz-3.2.0-56-generic)", ejecute el comando
sudo apt-get purge linux-image-3.2.0-56-generic
(con su versión adecuada).Finalmente,
sudo apt-get autoremove
para borrar los paquetes de imágenes de kernel antiguos que han quedado huérfanos mediante la limpieza de arranque manual.Sugerencia, ejecute
sudo apt-get update
ysudo apt-get upgrade
cuide cualquier actualización que pueda haber realizado una copia de seguridad mientras espera que descubra la partición completa / de inicio.Sugerencia2, revise https://help.ubuntu.com/community/AutomaticSecurityUpdates y considere configurar Unattended-Upgrade :: Remove-Unused-Dependencies en true en /etc/apt/apt.conf.d/50unattended-upgrades. Esto será el equivalente a ejecutar Autoremove después de cada actualización de seguridad para asegurarse de que limpia los núcleos no utilizados, pero también eliminará otras cosas que cree que no se utilizan, lo que lo salvará de este problema en el futuro.
fuente
dpkg --purge
una bota completa, obtendrá lo siguiente$ sudo dpkg --purge linux-image-3.13.0-65-generic dpkg: dependency problems prevent removal of linux-image-3.13.0-65-generic: linux-image-extra-3.13.0-65-generic depends on linux-image-3.13.0-65-generic. dpkg: error processing package linux-image-3.13.0-65-generic (--purge): dependency problems - not removing Errors were encountered while processing: linux-image-3.13.0-65-generic
df -i
descubrí que yo también estaba quedando sin ínodos/
debido a la enorme cantidad de archivos para el código fuente de los núcleos antiguos en/usr/src
Hay documentación sobre esto en https://help.ubuntu.com/community/RemoveOldKernels
En resumen: uso
La
purge-old-kernels
herramienta se puede instalar a través desudo apt install byobu
. Aquí está la descripción de su página de manual:Si desea una solución de copiar y pegar, ReSearchIT Eng sugirió lo siguiente:
fuente
apt-get autoremove --purge
embargo, creo que debería ser suficiente.Descubrí que es mucho más fácil abandonar la pequeña partición y pasar
/boot
a la raíz. Esto también evita cualquier problema de falta de espacio en el futuro.Primero mueva sus datos de la partición de arranque a la raíz (ejecutar como
sudo -s
):Eliminar (o comentar) la
/boot
entrada en/etc/fstab
:Actualice grub y asegúrese de que todo esté correcto:
apt
ahora debería poder actualizar sin problemas.Esto deja una partición de 200mb sin usar (que podría usar para otra cosa si considera que vale la pena).
fuente
Eliminando Kernels viejos (para liberar espacio en / boot) ver: http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot
Entonces corre
fuente
sudo apt-get autoremove
Esto elimina todos menos los últimos 2 núcleos. Probado en Ubuntu 16.04 LTS cuando
/boot
estaba al 100% de su capacidad yapt-get upgrade
falló su última actualización del kernel. La eliminación automática del núcleo es iterativa, por lo que si tiene varios núcleos, se eliminarán de uno en uno. Sé paciente.fuente
¿Por qué hacerlo a mano cuando puedes hacerlo con una herramienta? Usted sabe que lo necesitará nuevamente en 30 segundos, porque les lleva 30 segundos impulsar una nueva actualización de kernel en estos días = P
Recomiendo usar esta herramienta, bootnukem
Entonces
Eliminar
--dry-run
una vez que confirme que parece segurofuente