“El inicio del volumen solo tiene 0 bytes de espacio en disco restante”


32

Después de una actualización reciente, recibo una alerta que dice:

The volume boot has only 0 bytes disk space remaining

Pero mi computadora tiene mucho espacio libre en HD. ¿Alguien sabe cómo resuelvo esto? (Si es relevante, estoy usando la función de cifrado de disco completo de la imagen de instalación alternativa para Ubuntu 12.04).


Realmente depende de cómo instaló Ubuntu en su máquina. ¿Puedes "sudo fdisk -l" en la terminal y verificar si hay una pequeña partición que está casi llena?
Paulius Šukys

44
Mejor aún, ejecute el comando 'df -H -x tmpfs -x devtmpfs' sin las comillas y pegue la salida aquí.
fabricator4

Esta pregunta y respuestas están relacionadas con el problema y pueden ayudar.
elomage

aparentemente un problema conocido para la partición encriptada. responder askubuntu.com/a/230942/231504 es genial, funciona para mí. También, sin embargo, incremente el recuento de usuarios afectados en el rastreador de ubuntu: bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/…
pesófago

Respuestas:


48

Para enumerar todo el núcleo:
dpkg --get-selections | grep "linux-image-[[:digit:]].*" | tr "\t" ";" | cut -d ";" -f1

Los resultados se parecen a esto:

linux-image-3.19.0-7-generic 
linux-image-3.18.0-13-generic  
linux-image-3.16.0-23-generic

¡No elimines todos los núcleos, solo los viejos!

A continuación, eliminemos el kernel 3.16,
sudo apt-get purge linux-image-3.16.0-23-generic

y luego todos los paquetes no utilizados del sistema:
sudo apt-get autoclean && sudo apt-get autoremove


También he llamado algunos extra, por ejemplo, ambos linux-image-3.13.0-40-genericy linux-image-extra-3.13.0-40-generic. ¿Puedo eliminar los que tengo extra?
Mads Skjern

Esto fue extremadamente útil, pero no resolvió por completo mi problema (la purga de un núcleo antiguo todavía fallaba). Tuve que eliminar manualmente algunos archivos antiguos del kernel. Encontré algunos grandes usando find /boot/ -type f | xargs du | sort -n. Mi kernel actualmente en ejecución es 3.13.0-66-generic, por lo que no tengo cuidado a nada de eliminación relacionado con eso, pero lo hice quitar el siguiente: sudo rm /boot/initrd.img-3.13.0-63-generic /boot/initrd.img-3.13.0-65-generic /boot/vmlinuz-3.13.0-65-generic /boot/vmlinuz-3.13.0-63-generic. Finalmente, se ejecuta la purga en un núcleo antiguo.
blong

44
si realmente tiene 0 bytes libres, esto no funcionará como dijo @blong. tiene que eliminar manualmente algunos archivos vmlinuz antiguos antes, porque el proceso de purga necesita crear algunos archivos y, si quedan 0 bytes, esto falla.
pomarc

1
¿Cómo sé qué núcleos son viejos? Mi salida es linux-image-4.10.0-42-generic linux-image-4.13.0-26-generic linux-image-4.13.0-32-generic linux-image-4.13.0-37-generic linux-image -4.13.0-38-generic linux-image-4.13.0-39-generic linux-image-4.13.0-41-generic linux-image-4.13.0-43-generic linux-image-4.8.0-36 -generic
jacob

25

La causa fue de hecho viejas imágenes del núcleo.
Para limpiar todo lo que tenía que hacer era correr una línea:

sudo apt-get autoclean && sudo apt-get autoremove

Esto reconoció automáticamente los kernals antiguos y los eliminó.


9

Es posible que su /bootpartición haya acumulado demasiadas versiones del kernel mientras realiza actualizaciones con el tiempo. Es probable que esta partición esté separada de su partición de disco grande (montada como /). Puede verificar el /bootespacio de partición de esta manera (busque la línea con / boot):

df -h

Hay una buena página sobre cómo eliminar núcleos antiguos .

En resumen, verifique su versión actual del kernel, obtenga la lista de lo que está instalado y luego apt-get elimine las versiones anteriores. También hay un comando "mágico" de una sola línea en la página que hará todo eso por usted. Pero úselo bajo su propio riesgo.

Instrucciones en más detalle:

  1. Obtenga la versión actual del kernel, la que desea conservar :

    uname -r
    
  2. Obtenga la lista de todos los núcleos instalados:

    dpkg -l | grep linux-image-
    
  3. Ejecute apt-get remove en los núcleos que desea eliminar. ¡No en el último ! Por ejemplo:

    sudo apt-get remove linux-image-2.6.32-22-generic
    

Más notas:

  • dpkg -lle dirá el estado del paquete (kernel) antes del nombre del paquete. Por ejemplo:

    rc  linux-image-3.13.0-39-generic  ...
    ii  linux-image-3.13.0-40-generic  ...
    
    • "RC" significa que el paquete es r emoved y tiene c onfiguration archivos. Estos ya no es necesario eliminarlos.
    • medios "II" que el paquete está marcado para i nstalaci ó y es i nstalado

    En base a esto, puede enumerar solo los paquetes del kernel que están instalados:

    dpkg -l | grep "ii.*linux-image-"
    

Solución alternativa , utilizando la herramienta GUI Ubuntu Tweak .

Instale y vaya a Computer Janitor, verifique el Sistema-> Kernel antiguo y Sistema-> Paquetes innecesarios, y presione Limpiar.


3

Use esta secuencia de comandos para eliminar todos los otros núcleos antiguos que dejan la versión actual y la anterior (última versión del núcleo 1)

KERNELMAGES=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-image/g'`

KERNELHEADERS=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-headers/g'`

for PURGEKERNEL in `echo $KERNELMAGES $KERNELHEADERS`; do

apt-get autoremove -y && apt-get purge $PURGEKERNEL -y

done

Funcionó perfecto, incluso cuando no pude hacer la respuesta de "Paradiesstaub" desde la línea de comandos.
tormentoso

Recibo "Permiso denegado" ...
Richard Hardy
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.