J'essaie de faire do-release-upgrade
mais ensuite je reçois:
Pas assez d'espace disque libre
La mise à niveau a été annulée. La mise à niveau nécessite au total 25,7 M d’espace libre sur le disque '/ boot'. Veuillez libérer au moins 25,7 M d’espace disque supplémentaire sur '/ boot'. Videz votre corbeille et supprimez les paquets temporaires d'installations antérieures à l'aide de 'Sudo apt-get clean'.
Sortie 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
Comment se fait-il qu'il n'y ait plus d'espace au démarrage? Voici le résultat 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
Sortie 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
Votre partition/boot est remplie d'anciens noyaux. Parfois, on ne sait pas trop pourquoi cela n’est jamais résolu. Vous pouvez facilement supprimer les anciens noyaux si vous connaissez les paquets dans lesquels ils sont entrés.
Vérifiez d'abord uname -a
pour vérifier votre version actuelle.
Puis exécutez la commande suivante:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
Cette commande listera tous les paquetages dont vous n’avez plus besoin. Je n'aime pas les supprimer automatiquement, j'aime être en contrôle lorsqu'il s'agit de supprimer des noyaux. Pour chaque paquet répertorié, procédez comme suit:
Sudo apt-get -y purge some-kernel-package
Cet intermezzo décrit plus en détail le fonctionnement des commandes et tente de résoudre un problème avec linux-libc-dev:AMD64
. La plupart des utilisateurs peuvent ignorer ce paragraphe.
dpkg -l 'linux-*'
liste tous les paquets qui ont un nom commençant par 'linux-'sed '/^ii/!d; remove all lines that do *not* start with
ii`uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/"
trouve la version actuelle du noyau en cours d'exécution/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d
Supprime toutes les lignes, à l'exception de celles contenant le numéro de version du noyau en cours d'exécution.s/^[^ ]* [^ ]* \([^ ]*\).*/\1/
Pour chaque ligne, répertoriez uniquement le nom du package./[0-9]/!d
Supprime les lignes qui ne contiennent pas de nombres.Pour corriger problème de Frederick Nord Je pense que la commande peut être modifiée comme suit:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d;/^linux-\(headers\|image\)/!d'
Il ajoute essentiellement un filtre supplémentaire:
linux-headers
ou linux-image
Où some-kernel-package
peut être remplacé par l’un des packages répertoriés. Méfiez-vous simplement de ne pas supprimer les packages de noyau actuellement utilisés (comme indiqué dans le uname -a
), par exemple. Sudo apt-get purge -y linux-headers-3.0.0-12
etc.
Il peut être automatisé davantage en utilisant la commande xargs, mais je n'aime pas ça. C'est une chose personnelle. Cependant, voici la commande pour le faire:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs Sudo apt-get -y purge
Voici à quoi ressemble mon /boot
, un noyau disponible (2.6.38-11) juste au cas où et 3.2.0-24 étant à jour:
$ ls -l /boot
total 59388
-rw-r--r-- 1 root root 730545 Sep 13 2011 abi-2.6.38-11-generic
-rw-r--r-- 1 root root 791023 Apr 25 13:51 abi-3.2.0-24-generic
-rw-r--r-- 1 root root 130326 Sep 13 2011 config-2.6.38-11-generic
-rw-r--r-- 1 root root 140341 Apr 25 13:51 config-3.2.0-24-generic
drwxr-xr-x 3 root root 5120 May 27 17:46 grub
-rw-r--r-- 1 root root 20883146 Oct 1 2011 initrd.img-2.6.38-11-generic
-rw-r--r-- 1 root root 22474219 May 5 09:04 initrd.img-3.2.0-24-generic
drwxr-xr-x 2 root root 12288 Apr 16 2009 lost+found
-rw-r--r-- 1 root root 176764 Nov 27 11:00 memtest86+.bin
-rw-r--r-- 1 root root 178944 Nov 27 11:00 memtest86+_multiboot.bin
-rw------- 1 root root 2656297 Sep 13 2011 System.map-2.6.38-11-generic
-rw------- 1 root root 2884358 Apr 25 13:51 System.map-3.2.0-24-generic
-rw------- 1 root root 1369 Sep 13 2011 vmcoreinfo-2.6.38-11-generic
-rw------- 1 root root 4526784 Sep 13 2011 vmlinuz-2.6.38-11-generic
-rw------- 1 root root 4965776 Apr 25 13:51 vmlinuz-3.2.0-24-generic
Et utilisation du système de fichiers:
$ df -h /boot
Filesystem Size Used Avail Use% Mounted
/dev/sda5 228M 63M 154M 29% /boot
Sudo apt-get autoremove
fait le tour pour moi, il a nettoyé avec succès tous les paquets du noyau inutilisés.
Équivalent à la réponse acceptée - un autre moyen (éventuellement) plus simple consiste à installer l'outil ubuntu-Tweak
, qui peut être téléchargé à partir de ici . Allez dans "Concierge", et sélectionnez "Ancien noyau" pour nettoyer. Cela peut être fait en quelques clics. (testé sur le bureau 14.04)
Comparé aux autres réponses fournies ici, l’avantage de cette réponse est qu’Ubuntu Bash est utilisé sans installation d’applications tierces.
Zenity fournit au terminal une interface graphique conviviale permettant de traiter une liste et de sélectionner des éléments avec des boutons radio :
Le noyau actuel avec lequel vous avez démarré ne peut pas être supprimé et n'est pas inclus dans la liste. La taille indiquée est la quantité qui sera enregistrée dans le répertoire /boot
. Plus est enregistré sur votre disque, car les fichiers binaires du noyau résident également dans d’autres domaines. Remarque du 27 juillet 2017: Les répertoires /usr/src/*kernel_version*
et /lib/modules/*kernel_version*
sont également inclus.
La date de modification est découverte à l'aide de la commande stat
. Sur mon système, cette date est "touchée" chaque fois que le noyau est démarré à l'aide de cette méthode ( Comment savoir quand une version spécifique du noyau a été démarrée? =) cron redémarrez le script. Cependant, sur votre système, la date sera la date de publication du noyau, et non la dernière fois que vous l’avez initialisé.
apt-get purge
vous donne une chance d'abandonnerVous avez enfin la possibilité de voir tout ce qui sera purgé et de voir l’espace disque total (quelque peu trompeur) qui sera récupéré:
The following packages will be REMOVED:
linux-headers-4.7.1-040701* linux-headers-4.7.1-040701-generic*
linux-headers-4.7.2-040702* linux-headers-4.7.2-040702-generic*
linux-headers-4.7.3-040703* linux-headers-4.7.3-040703-generic*
linux-headers-4.8.1-040801* linux-headers-4.8.1-040801-generic*
linux-headers-4.8.10-040810* linux-headers-4.8.10-040810-generic*
linux-headers-4.8.11-040811* linux-headers-4.8.11-040811-generic*
linux-headers-4.8.4-040804* linux-headers-4.8.4-040804-generic*
linux-headers-4.8.5-040805* linux-headers-4.8.5-040805-generic*
linux-image-4.7.1-040701-generic* linux-image-4.7.2-040702-generic*
linux-image-4.7.3-040703-generic* linux-image-4.8.1-040801-generic*
linux-image-4.8.10-040810-generic* linux-image-4.8.11-040811-generic*
linux-image-4.8.4-040804-generic* linux-image-4.8.5-040805-generic*
0 upgraded, 0 newly installed, 24 to remove and 2 not upgraded.
After this operation, 2,330 MB disk space will be freed.
Do you want to continue? [Y/n]
Copiez ce code dans un fichier exécutable nommé rm-kernels
dans /usr/local/bin
:
#!/bin/bash
# NAME: rm-kernels
# PATH: /usr/local/bin
# DESC: Provide zenity item list of kernels to remove
# DATE: Mar 10, 2017. Modified Jul 28, 2017.
# NOTE: Will not delete current kernel.
# With 10 kernels on an SSD, empty cache from Sudo Prompt (#) using:
# # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
# First time for `du` 34 seconds.
# Second time for `du` 1 second.
# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
# By default `du` is not used and estimated size is displayed.
# Must be running as Sudo
if [[ $(id -u) != 0 ]]; then
zenity --error --text "root access required. Use: Sudo rm-kernels"
exit 99
fi
OLDIFS="$IFS"
IFS="|"
choices=()
current_version=$(uname -r)
for f in /boot/vmlinuz*
do
if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
[[ $f =~ vmlinuz-(.*) ]]
v=${BASH_REMATCH[1]} # example: 4.9.21-040921-generic
v_main="${v%-*}" # example: 4.9.21-040921
# Kernel size in /boot/*4.9.21-040921-generic*
s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')
if [[ $# -ne 0 ]] ; then # Was a parameter passed?
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
# Kernel headers size in /usr/src/*4.9.21-040921*
s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
else
s2="0M" # Linux Headers are not installed
fi
# Kernel image size in /lib/modules/4.9.21-040921-generic*
s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
else
# Estimate sizof of optional headers at 125MB and size of image at 220MB
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
s2="125M"
else
s2="0M" # Linux Headers are not installed
fi
s3="220M"
fi
# Strip out "M" provided by human readable option of du and add 3 sizes together
s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
t=$(( t + s ))
s=$s" MB"
d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
choices=("${choices[@]}" false "$v" "$d" "$s")
done
# adjust width & height below for your screen 640x480 default for 1920x1080 HD screen
# also adjust font="14" below if blue text is too small or too large
choices=(`zenity \
--title "rm-kernels - Total: $t MB excluding: $current_version" \
--list \
--separator="$IFS" \
--checklist --multiple \
--text '<span foreground="blue" font="14">Check box next to kernel(s) to remove</span>' \
--width=640 \
--height=480 \
--column "Select" \
--column "Kernel Version Number" \
--column "Modified Date" \
--column " Size " \
"${choices[@]}"`)
IFS="$OLDIFS"
i=0
list=""
for choice in "${choices[@]}" ; do
if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
((i++))
short_choice=$(echo $choice | cut -f1-2 -d"-")
header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)
# If -lowlatency and -generic are purged at same time the _all header directory
# remains on disk for specific version with no -generic or -lowlatency below.
if [[ $header_count -lt 3 ]]; then
# Remove all w.x.y-zzz headers
list="$list""linux-image-$choice- linux-headers-$short_choice"
else
# Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
list="$list""linux-image-$choice- linux-headers-$choice"
fi
done
if [ "$i" -gt 0 ] ; then
apt-get purge $list
fi
REMARQUE: Vous devez disposer de l'autorisation de Sudo pour créer le fichier, utilisez donc:
gksu gedit /usr/local/bin/rm-kernels
Pour rendre le fichier exécutable, utilisez:
Sudo chmod +x /usr/local/bin/rm-kernels
REMARQUE: Pour une version de ce script basée sur le texte et sur le serveur, voir: Comment puis-je supprimer les anciennes versions du noyau pour les nettoyer? le menu de démarrage?
La taille calculée de chaque noyau a été prise à partir de /boot/*kernel_version*
qui consistait en 5 fichiers totalisant environ 50 Mo. La formule a été modifiée pour inclure les fichiers dans /usr/src/*kernel_version*
et /lib/modules/*kernel_version*
. La taille calculée pour chaque noyau est maintenant d’environ 400 Mo. Le code ci-dessus pour rm-kernels
et rm-kernels-server
a été mis à jour. Toutefois, les exemples d'écrans ci-dessus ne reflètent pas encore ces modifications.
La valeur par défaut consiste à estimer la taille des fichiers pour les en-têtes linux à 125 Mo et celle de linux-image à 220 Mo, car du
peut être extrêmement lent, sauf si les fichiers sont en cache. Pour obtenir la taille réelle à l'aide de du
, transmettez un paramètre au script.
Le total de toutes les tailles de noyau (à l'exception de la version en cours d'exécution qui ne peut pas être supprimée) est maintenant affiché dans la barre de titre.
La boîte de dialogue utilisée pour afficher la date de dernier accès de chaque noyau . Cette date peut être écrasée en masse pour tous les noyaux lors d'une sauvegarde ou d'opérations similaires. La boîte de dialogue affiche maintenant la date modifiée .
Vous pouvez facilement gérer les noyaux via le gestionnaire de paquets synaptic. Mais vous devez d’abord connaître le nom de la version du noyau utilisée dans le terminal, Prompt:
linux@linux-desktop:~$ uname -r 4.4.0-75-generic
Donc au moins cette version, vous devriez la garder intacte. Ouvrez synaptic et commencez à remplir le filtre de substitution comme indiqué ci-dessous: Vous pouvez maintenant sélectionner tous les packages que vous souhaitez supprimer et procédez comme suit: Cochez pour suppression complète -> Appliquer . Je suggérerais de garder au moins le dernier paquetage du noyau actuel et un noyau précédent. Par exemple, dans ce cas, vous pouvez supprimer en toute sécurité linux-image-4.4.0-66-generic et linux-image-extra-4.4.0-66-generic , mais il est bon de garder 4.4.0-72 et bien sûr 4.4.0-75 .
Pour la facilité en ligne de commande:
https://github.com/erichs/bootnukem
git clone https://github.com/erichs/bootnukem.git
cd bootnukem
Sudo ./install.sh
Ensuite
Sudo bootnukem --dry-run
Fonctionne sur Linux Mint 18.3 (basé sur 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
Source: https://ubuntuforums.org/showthread.php?t=2248846&p=13146650#post1314665