Ik probeer het te doen do-release-upgrade
maar dan krijg ik:
Niet genoeg vrije schijfruimte
De upgrade is afgebroken. De upgrade vereist in totaal 25,7 M gratis
ruimte op schijf '/ boot'. Gelieve ten minste een extra 25,7 M van te bevrijden
schijfruimte op '/ boot'. Maak je prullenbak leeg en verwijder tijdelijke pakketten
van eerdere installaties met 'sudo apt-get clean'.
Output van 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
Waarom is er bij het opstarten geen ruimte meer? Dit is de uitvoer van 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
Output van 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
Uw / boot-partitie is gevuld met oude kernels. Het doet dat soms, niet zeker waarom het nooit wordt opgelost. Je kunt eenvoudig de oude kernels verwijderen als je weet in welke pakketten ze zijn binnengekomen.
Controleer eerst uname -a
om uw huidige versie te controleren.
Voer vervolgens de volgende opdracht uit:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
Met deze opdracht worden alle pakketten weergegeven die u niet langer nodig hebt. Ik vind het niet leuk om ze automatisch te verwijderen, ik hou ervan om de controle te hebben als het gaat om het verwijderen van kernels. Dus doe voor elk pakket het volgende:
sudo apt-get -y purge some-kernel-package
Intermezzo
Dit intermezzo beschrijft in meer detail hoe de commando's werken en probeert een probleem op te lossen linux-libc-dev:amd64
. De meeste gebruikers kunnen deze paragraaf overslaan.
dpkg -l 'linux-*'
lijst alle pakketten die een naam hebben beginnend met 'linux-'
sed '/^ii/!d; remove all lines that do *not* start with
II`
uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/"
zoek de huidige draaiende kernelversie
/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d
Verwijder alle regels, behalve degene met het huidige versie-nummer van de actieve kernel
s/^[^ ]* [^ ]* \([^ ]*\).*/\1/
Voor elke regellijst alleen de pakketnaam
/[0-9]/!d
Verwijder lijnen zonder nummers.
Repareren Het probleem van Frederick Nord Ik denk dat het commando als volgt kan worden gewijzigd:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d;/^linux-\(headers\|image\)/!d'
Het voegt in feite een extra filter toe:
- / ^ linux- (headers \ | image) /! d Verwijder alle regels die niet beginnen met
linux-headers
of linux-image
/Intermezzo
Waar some-kernel-package
kan worden vervangen door een van de vermelde pakketten. Pas echter op dat u de kernelpakketten die momenteel in gebruik zijn niet verwijdert (zoals vermeld door de uname -a
) bijv. sudo apt-get purge -y linux-headers-3.0.0-12
enz.
Het kan verder worden geautomatiseerd met de opdracht xargs, maar dat vind ik niet leuk. Het is een persoonlijke zaak. Hier is echter het bevel om dit te doen:
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
Dit is wat mijn /boot
ziet eruit als één reserve kernel (2.6.38-11) voor het geval dat 3.2.0-24 actueel is:
$ 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
En bestandssysteemgebruik:
$ df -h /boot
Filesystem Size Used Avail Use% Mounted
/dev/sda5 228M 63M 154M 29% /boot
sudo apt-get autoremove
heeft het voor mij gedaan, het heeft met succes alle ongebruikte kernelpakketten opgeschoond.
Gelijk aan het geaccepteerde antwoord - een andere (mogelijk) eenvoudigere manier is om het ubuntu-tweak
tool, het kan worden gedownload van hier. Ga naar "Conciërge" en selecteer "Old Kernel" om op te ruimen. Het kan in een paar klikken worden gedaan. (getest op 14.04 desktop)

In vergelijking met andere GUI-antwoorden hier, is het voordeel van dit antwoord native Ubuntu Bash wordt gebruikt zonder applicaties van derden te installeren.
Zenity and Bash-gebaseerde oplossing
Zenity biedt een mooie GUI-interface naar de terminal om een lijst te verwerken en items te selecteren met Radio knoppen:

De huidige kernel waarmee je hebt opgestart kan niet worden verwijderd en is niet opgenomen in de lijst. De gerapporteerde grootte is hoeveel er wordt opgeslagen /boot
directory. Er wordt meer op uw schijf opgeslagen, omdat kernel-binaire bestanden zich ook in andere gebieden bevinden. 27 juli 2017: De mappen /usr/src/*kernel_version*
en /lib/modules/*kernel_version*
zijn nu ook inbegrepen.
De Aangepaste datum wordt ontdekt met behulp van de stat
opdracht. Op mijn systeem is die datum "Geraakt" elke keer dat de kernel wordt geboot met deze (Hoe kom je erachter wanneer een specifieke kernelversie voor het laatst is opgestart?) cron herstart script. Op uw systeem is de datum echter de releasedatum van de kernel, niet de laatste keer dat u deze hebt opgestart.
apt-get purge
geeft je de kans om te stoppen
U krijgt een laatste kans om alles te bekijken dat zal worden opgeschoond en de totale schijfruimte (enigszins misleidend) te zien die zal worden hersteld:
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]
De code
Kopieer deze code naar een uitvoerbaar bestand met de naam rm-kernels
in /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
NOTITIE: Je hebt sudo permissie nodig om het bestand aan te maken, gebruik dus:
gksu gedit /usr/local/bin/rm-kernels
Om het uitvoerbare bestand te gebruiken:
sudo chmod +x /usr/local/bin/rm-kernels
NOTITIE: Voor een server (op tekst gebaseerde, geen GUI) -versie van dit script, zie: Hoe verwijder ik oude kernelversies om het opstartmenu op te ruimen?
28 juli 2017 Updates
De berekende grootte van elke kernel is overgenomen /boot/*kernel_version*
bestaande uit 5 bestanden van ~ 50 MB. De formule is gewijzigd en bevat de bestanden in /usr/src/*kernel_version*
en /lib/modules/*kernel_version*
. De berekende grootte voor elke kernel is nu ~ 400 MB. De bovenstaande code voor rm-kernels
en rm-kernels-server
is geupdate. De voorbeeldschermen hierboven geven deze wijzigingen echter nog niet.
De standaard is om de grootte van bestanden in te schatten voor linux-headers op 125 MB en linux-image op 220 MB omdat du
kan pijnlijk traag zijn, tenzij de bestanden zich in de cache bevinden. Om de ware grootte te krijgen met du
geef elke parameter door aan het script.
Het totaal van alle kernelgroottes (met uitzondering van de huidige actieve versie die niet kan worden verwijderd) wordt nu weergegeven in de titelbalk.
Het dialoogvenster dat wordt gebruikt om elke kernel weer te geven Laatste toegangsdatum. Deze datum kan massa overschreven worden voor alle kernels tijdens back-up of soortgelijke operaties. Het dialoogvenster toont nu de Aangepaste datum in plaats daarvan.
Je kunt eenvoudig kernels verwerken via synaptic package manager.
Maar eerst zou je een huidige gebruikte kernel-release naam moeten weten, in terminal prompt:
linux@linux-desktop:~$ uname -r
4.4.0-75-generic
Dus deze versie moet je tenminste niet bijhouden.
Open de synaptic en begin met het invullen van de quickfilter-plaatsaanduiding, zoals hieronder wordt getoond:
Nu kunt u alle pakketten selecteren die u wilt verwijderen en het volgende doen:
Markeer voor volledige verwijdering -> Toepassen.
Ik zou willen voorstellen om op zijn minst een recent huidig kernelpakket en één vorige kernel te behouden. In dit geval kunt u bijvoorbeeld veilig van de hand doen linux-image-4.4.0-66-generic en linux-image-extra-4.4.0-66-generic, maar het is goed om te houden 4.4.0-72 en natuurlijk 4.4.0-75.
Voor het gemak van de commandline:
https://github.com/erichs/bootnukem
git clone https://github.com/erichs/bootnukem.git
cd bootnukem
sudo ./install.sh
Dan
sudo bootnukem --dry-run
Werkt op Linux Mint 18.3 (gebaseerd op 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
Bron: https://ubuntuforums.org/showthread.php?t=2248846&p=13146650#post13146650