Intento hacerlo do-release-upgrade
pero luego obtengo:
No hay suficiente espacio libre en el disco
La actualización ha abortado. La actualización necesita un total de 25.7 M de espacio libre en el disco '/ boot'. Libere al menos 25.7 M adicionales de espacio en disco en '/ boot'. Vacíe su basura y elimine los paquetes temporales de instalaciones anteriores utilizando 'sudo apt-get clean'.
Salida de df
:
237251272 214797108 10402504 96% /
udev 488120 4 488116 1% /dev
tmpfs 198676 668 198008 1% /run
none 5120 0 5120 0% /run/lock
none 496684 0 496684 0% /run/shm
/dev/sda1 233191 225867 0 100% /boot
¿Cómo es que no queda espacio en el arranque? Aquí está la salida de ls -as /boot
:
total 221839
4 .
4 ..
645 abi-2.6.32-34-generic-pae
698 abi-2.6.35-30-generic-pae
727 abi-2.6.38-12-generic-pae
727 abi-3.0.0-12-generic-pae
727 abi-3.0.0-13-generic-pae
727 abi-3.0.0-14-generic-pae
727 abi-3.0.0-15-generic-pae
727 abi-3.0.0-16-generic-pae
727 abi-3.0.0-17-generic-pae
727 abi-3.0.0-19-generic-pae
761 abi-3.0.0-20-generic-pae
115 config-2.6.32-34-generic-pae
128 config-2.6.35-30-generic-pae
136 config-2.6.38-12-generic-pae
140 config-3.0.0-12-generic-pae
140 config-3.0.0-13-generic-pae
140 config-3.0.0-14-generic-pae
140 config-3.0.0-15-generic-pae
140 config-3.0.0-16-generic-pae
140 config-3.0.0-17-generic-pae
140 config-3.0.0-19-generic-pae
140 config-3.0.0-20-generic-pae
5 grub
10773 initrd.img-2.6.32-34-generic-pae
13619 initrd.img-2.6.35-30-generic-pae
15365 initrd.img-2.6.38-12-generic-pae
16481 initrd.img-3.0.0-12-generic-pae
16487 initrd.img-3.0.0-13-generic-pae
16501 initrd.img-3.0.0-14-generic-pae
16476 initrd.img-3.0.0-15-generic-pae
16481 initrd.img-3.0.0-16-generic-pae
16478 initrd.img-3.0.0-17-generic-pae
12 lost+found
174 memtest86+.bin
176 memtest86+_multiboot.bin
1700 System.map-2.6.32-34-generic-pae
1841 System.map-2.6.35-30-generic-pae
2115 System.map-2.6.38-12-generic-pae
2141 System.map-3.0.0-12-generic-pae
2141 System.map-3.0.0-13-generic-pae
2143 System.map-3.0.0-14-generic-pae
2146 System.map-3.0.0-15-generic-pae
2147 System.map-3.0.0-16-generic-pae
2147 System.map-3.0.0-17-generic-pae
2148 System.map-3.0.0-19-generic-pae
2149 System.map-3.0.0-20-generic-pae
2 vmcoreinfo-2.6.32-34-generic-pae
2 vmcoreinfo-2.6.35-30-generic-pae
2 vmcoreinfo-2.6.38-12-generic-pae
2 vmcoreinfo-3.0.0-12-generic-pae
2 vmcoreinfo-3.0.0-13-generic-pae
2 vmcoreinfo-3.0.0-14-generic-pae
2 vmcoreinfo-3.0.0-15-generic-pae
2 vmcoreinfo-3.0.0-16-generic-pae
2 vmcoreinfo-3.0.0-17-generic-pae
2 vmcoreinfo-3.0.0-19-generic-pae
2 vmcoreinfo-3.0.0-20-generic-pae
4092 vmlinuz-2.6.32-34-generic-pae
4347 vmlinuz-2.6.35-30-generic-pae
4567 vmlinuz-2.6.38-12-generic-pae
4675 vmlinuz-3.0.0-12-generic-pae
4676 vmlinuz-3.0.0-13-generic-pae
4681 vmlinuz-3.0.0-14-generic-pae
4698 vmlinuz-3.0.0-15-generic-pae
4700 vmlinuz-3.0.0-16-generic-pae
4700 vmlinuz-3.0.0-17-generic-pae
4703 vmlinuz-3.0.0-19-generic-pae
4705 vmlinuz-3.0.0-20-generic-pae
Salida de uname -a
:
Linux kitsch 3.0.0-17-generic-pae #30-Ubuntu SMP Thu Mar 8 17:53:35 UTC 2012 i686 i686 i386 GNU/Linux
upgrade
kernel
disk-usage
abrazadera
fuente
fuente
ls -l /boot
yuname -a
a su pregunta.dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
a su pregunta.ls -as /boot
podría ser útil en su lugar. Incluirá solo los tamaños de los archivos.Respuestas:
Su partición / boot está llena de núcleos antiguos. A veces lo hace, sin saber por qué nunca se soluciona. Puede eliminar fácilmente los núcleos antiguos si sabe en qué paquetes vinieron.
Primero verifique
uname -a
para verificar su versión actual.Luego ejecute el siguiente comando:
Este comando enumerará todos los paquetes que ya no necesita. No me gusta eliminarlos automáticamente, me gusta tener el control cuando se trata de eliminar núcleos. Entonces, para cada paquete enumerado, haga lo siguiente:
Intermezzo
Este intermezzo describe con más detalle cómo funcionan los comandos e intenta solucionar un problema
linux-libc-dev:amd64
. La mayoría de los usuarios pueden omitir este párrafo.dpkg -l 'linux-*'
enumere todos los paquetes que tienen un nombre que comienza con 'linux-'sed '/^ii/!d; remove all lines that do *not* start with
ii`uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/"
encontrar la versión actual del kernel en ejecución/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d
Elimine todas las líneas, excepto las que contienen el número de versión actual del núcleo en ejecucións/^[^ ]* [^ ]* \([^ ]*\).*/\1/
Para cada línea enumere solo el nombre del paquete/[0-9]/!d
Eliminar líneas que no contienen números.Para solucionar el problema de Frederick Nord, creo que el comando se puede modificar de la siguiente manera:
Básicamente agrega un filtro adicional:
linux-headers
olinux-image
/Intermezzo
Donde
some-kernel-package
se puede reemplazar con uno de los paquetes enumerados. Solo tenga en cuenta que no elimina los paquetes del núcleo que están en uso actual (como se enumera en eluname -a
) por ejemplo.sudo apt-get purge -y linux-headers-3.0.0-12
etc.Se puede automatizar aún más usando el comando xargs, pero eso no me gusta. Es una cosa personal. Sin embargo, aquí está el comando para hacerlo:
Así es
/boot
como se ve mi , un kernel de repuesto (2.6.38-11) por si acaso y 3.2.0-24 es actual:Y uso del sistema de archivos:
fuente
It does that sometimes, not sure why it is never fixed
Ubuntu ha tomado la decisión, para bien o para mal, de proporcionar nuevos núcleos regulares como nuevos paquetes en lugar de como actualizaciones a los paquetes existentes, para dar la opción de tener múltiples núcleos instalados y cambiar entre ellos a voluntad. Estoy de acuerdo en que esta suposición no se adapta al 95% de las personas que solo quieren el último kernel (y tal vez una alternativa en caso de nuevos problemas de arranque), y que no quieren administrar los núcleos instalados ellos mismos. Quizás en el futuro Ubuntu cambie este comportamiento. Por ahora, asegúrese de que su / boot sea enorme.sudo apt-get autoremove
hizo el truco para mí, limpió con éxito todos los paquetes de kernel no utilizados.
fuente
man apt-get
autoremove se usa para eliminar paquetes que se instalaron automáticamente para satisfacer las dependencias de algunos paquetes y que ya no son necesarios. un kernel no se instalaría para satisfacer las dependencias, se instalan durante las actualizaciones./dev/sda1, 240M total, 171M used, 57M free, 75% used /boot
después:/dev/sda1, 240M total, 129M used, 98M free, 57% used /boot
Equivalente a la respuesta aceptada: otra forma (posiblemente) más fácil es instalar la
ubuntu-tweak
herramienta, se puede descargar desde aquí . Vaya a "Conserje" y seleccione "Kernel antiguo" para limpiar. Se puede hacer en unos pocos clics. (probado en el escritorio 14.04)fuente
/boot
ocurre todo el tiempo, así que esta es mi solución favorita: una aplicación fácil de ejecutar que hace el trabajo con un solo clic.En comparación con otras respuestas GUI aquí, la ventaja de esta respuesta es que Ubuntu Bash nativo se usa sin instalar aplicaciones de terceros.
Solución basada en Zenity y Bash
Zenity proporciona una agradable interfaz GUI al terminal para procesar una lista y seleccionar elementos con botones de radio :
El núcleo actual con el que arrancó no se puede eliminar y no se incluye en la lista. El tamaño informado es cuánto se guardará en el
/boot
directorio. Se guarda más en su disco porque los binarios del núcleo también residen en otras áreas. Nota del 27 de julio de 2017: los directorios/usr/src/*kernel_version*
y/lib/modules/*kernel_version*
ahora también están incluidos.La fecha de modificación se descubre con el
stat
comando En mi sistema, esa fecha se "toca" cada vez que se inicia el kernel usando este script de reinicio cron ( ¿Cómo saber cuándo se arrancó por última vez una versión específica del kernel? ) . Sin embargo, en su sistema, la fecha será la fecha de lanzamiento del kernel, no la última vez que lo inició.apt-get purge
te da la oportunidad de abortarSe le da una oportunidad final para ver todo lo que se purgará y ver el espacio total en disco (algo engañoso) que se recuperará:
El código
Copie este código en un archivo ejecutable nombrado
rm-kernels
en/usr/local/bin
:NOTA: Necesita permiso de sudo para crear el archivo, así que use:
Para hacer que el archivo sea ejecutable use:
NOTA: Para ver una versión del servidor (basada en texto, no GUI) de este script, consulte: ¿Cómo elimino las versiones antiguas del kernel para limpiar el menú de arranque?
28 de julio de 2017 Actualizaciones
Se tomó el tamaño calculado de cada núcleo, de los
/boot/*kernel_version*
cuales había 5 archivos con un total de ~ 50 MB. La fórmula ha cambiado para incluir los archivos en/usr/src/*kernel_version*
y/lib/modules/*kernel_version*
. El tamaño calculado para cada núcleo es ahora ~ 400 MB. El código anterior pararm-kernels
yrm-kernels-server
ha sido actualizado. Sin embargo, las pantallas de muestra anteriores aún no reflejan estos cambios.El valor predeterminado es estimar el tamaño de los archivos para los encabezados de Linux a 125 MB y la imagen de Linux a 220 MB porque
du
puede ser extremadamente lento a menos que los archivos estén en caché. Para obtener el tamaño real usandodu
pase cualquier parámetro al script.El total de todos los tamaños de kernel (excluyendo la versión actual que no se puede eliminar) ahora se muestra en la barra de título.
El cuadro de diálogo utilizado para mostrar la Fecha de último acceso de cada Kernel . Esta fecha puede sobrescribirse en masa para todos los núcleos durante la copia de seguridad u operaciones similares. El cuadro de diálogo ahora muestra la Fecha de modificación en su lugar.
fuente
Puede manejar fácilmente los núcleos a través del administrador de paquetes sináptico. Pero primero debe saber un nombre de lanzamiento de kernel utilizado actualmente, en el indicador de terminal:
linux@linux-desktop:~$ uname -r 4.4.0-75-generic
Entonces, al menos esta versión debe mantenerse intacta. Abra Synaptic y comience a completar el marcador de posición de filtro rápido como se muestra a continuación: Ahora puede seleccionar todos los paquetes que desea eliminar y hacer lo siguiente: Marcar para eliminación completa -> Aplicar . Sugeriría mantener al menos un último paquete de kernel actual y un kernel anterior. Por ejemplo, en este caso puede deshacerse de linux-image-4.4.0-66-generic y linux-image-extra-4.4.0-66-generic de forma segura , pero es bueno mantener 4.4.0-72 y, por supuesto, 4.4.0-75 .fuente
Para facilitar la línea de comandos:
https://github.com/erichs/bootnukem
Entonces
fuente
Funciona en Linux Mint 18.3 (basado en Ubuntu 16.04).
sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1) --assume-yes
Fuente: https://ubuntuforums.org/showthread.php?t=2248846&p=13146650#post13146650
fuente