Ich versuche es do-release-upgrade
aber dann bekomme ich:
Nicht genügend freier Speicherplatz
Das Upgrade wurde abgebrochen. Das Upgrade benötigt insgesamt 25,7 MB freien Speicherplatz auf der Festplatte '/ boot'. Bitte geben Sie mindestens 25,7 MB zusätzlichen Speicherplatz für '/ boot' frei. Leeren Sie Ihren Papierkorb und entfernen Sie temporäre Pakete früherer Installationen mit 'sudo apt-get clean'.
Ausgabe von 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
Wie kommt es, dass beim Booten kein Platz mehr ist? Hier ist die Ausgabe von 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
Ausgabe von 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
Klemme
quelle
quelle
ls -l /boot
unduname -a
Ihrer Frage hinzu.dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
zu Ihrer Frage hinzu.ls -as /boot
könnte stattdessen nützlich sein. Es wird nur die Größe der Dateien enthalten.Antworten:
Ihre / boot-Partition ist mit alten Kerneln gefüllt. Es tut das manchmal nicht sicher, warum es nie behoben wird. Sie können die alten Kernel problemlos entfernen, wenn Sie wissen, in welchen Paketen sie enthalten sind.
Überprüfen
uname -a
Sie zunächst Ihre aktuelle Version.Führen Sie dann den folgenden Befehl aus:
Dieser Befehl listet alle Pakete auf, die Sie nicht mehr benötigen. Ich mag es nicht, sie automatisch zu entfernen, ich mag es, die Kontrolle zu haben, wenn es darum geht, Kernel zu entfernen. Gehen Sie also für jedes aufgelistete Paket wie folgt vor:
Intermezzo
In diesem Intermezzo wird die Funktionsweise der Befehle genauer beschrieben und versucht, ein Problem zu beheben
linux-libc-dev:amd64
. Die meisten Benutzer können diesen Absatz überspringen.dpkg -l 'linux-*'
liste alle Pakete auf, deren Name mit 'linux-' beginntsed '/^ii/!d; remove all lines that do *not* start with
ii`uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/"
Finde die aktuelle Kernelversion/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d
Entfernen Sie alle Zeilen mit Ausnahme der Zeilen, die die Versionsnummer des aktuell ausgeführten Kernels enthaltens/^[^ ]* [^ ]* \([^ ]*\).*/\1/
Für jede Zeilenliste nur den Paketnamen/[0-9]/!d
Entfernen Sie Zeilen, die keine Zahlen enthalten.Um das Problem von Frederick Nord zu beheben , kann der Befehl meines Erachtens wie folgt geändert werden:
Grundsätzlich wird ein zusätzlicher Filter hinzugefügt:
linux-headers
oder beginnenlinux-image
/Intermezzo
Wo
some-kernel-package
kann mit einem der aufgeführten Pakete ersetzt werden. Achten Sie nur darauf, dass Sie nicht die Kernelpakete entfernen, die derzeit verwendet werden (wie von aufgeführtuname -a
), z.sudo apt-get purge -y linux-headers-3.0.0-12
usw.Es kann mit dem Befehl xargs weiter automatisiert werden, aber das gefällt mir nicht. Es ist eine persönliche Sache. Hier ist jedoch der Befehl dazu:
So
/boot
sieht es aus, ein Ersatzkernel (2.6.38-11) für alle Fälle und 3.2.0-24 aktuell:Und Dateisystemnutzung:
quelle
It does that sometimes, not sure why it is never fixed
Ubuntu hat die Entscheidung getroffen, regelmäßig neue Kernel als neue Pakete und nicht als Upgrades für vorhandene Pakete bereitzustellen, um die Möglichkeit zu haben, mehrere Kernel zu installieren und nach Belieben zwischen ihnen zu wechseln. Ich stimme zu, dass diese Annahme nicht den 95% der Leute entspricht, die nur den neuesten Kernel wollen (und vielleicht einen Fallback bei neuen Boot-Problemen) und die installierten Kernel nicht selbst verwalten wollen. Vielleicht wird Ubuntu in Zukunft dieses Verhalten ändern. Stellen Sie vorerst sicher, dass Ihr / boot riesig ist.sudo apt-get autoremove
Hat den Trick für mich getan, es hat alle nicht verwendeten Kernelpakete erfolgreich aufgeräumt.
quelle
man apt-get
autoremove wird verwendet, um Pakete zu entfernen, die automatisch installiert wurden, um Abhängigkeiten für ein Paket zu erfüllen, und die nicht mehr benötigt werden. Ein Kernel wird nicht installiert, um Abhängigkeiten zu erfüllen. Er wird während eines Upgrades installiert./dev/sda1, 240M total, 171M used, 57M free, 75% used /boot
nachher:/dev/sda1, 240M total, 129M used, 98M free, 57% used /boot
Entspricht die akzeptierte Antwort - andere (möglicherweise) einfacher Weg, um die Installation
ubuntu-tweak
Tool kann von folgenden Website heruntergeladen wird hier . Gehen Sie zu "Janitor" und wählen Sie "Old Kernel" zum Reinigen. Dies ist mit wenigen Klicks erledigt. (getestet auf 14.04 desktop)quelle
/boot
die ganze Zeit gegeben, daher ist dies meine Lieblingslösung - eine einfach auszuführende Anwendung, die den Job mit einem Klick erledigt.Im Vergleich zu anderen GUI-Antworten liegt der Vorteil dieser Antwort darin, dass Ubuntu Bash nativ verwendet wird, ohne dass Anwendungen von Drittanbietern installiert werden.
Zenity- und Bash-basierte Lösung
Zenity bietet eine schöne GUI-Oberfläche für das Terminal, um eine Liste zu verarbeiten und Elemente mit Optionsfeldern auszuwählen :
Der aktuelle Kernel, mit dem Sie gebootet haben, kann nicht entfernt werden und ist nicht in der Liste enthalten. Die angegebene Größe gibt an, wie viel im
/boot
Verzeichnis gespeichert wird . Auf Ihrer Festplatte wird mehr gespeichert, da sich die Kernel-Binärdateien auch in anderen Bereichen befinden. 27. Juli 2017 Hinweis: Die Verzeichnisse/usr/src/*kernel_version*
und/lib/modules/*kernel_version*
sind nun ebenfalls enthalten.Das Änderungsdatum wird mit dem
stat
Befehl ermittelt. Auf meinem System dieses Datum „berühren“ jedes Mal , wenn der Kernel dies mit Booten ( Wie finden Sie heraus , wenn eine bestimmte Kernel - Version zuletzt gestartet wurde? ) Cron Reboot - Skript. Auf Ihrem System ist das Datum jedoch das Veröffentlichungsdatum des Kernels und nicht das Datum, an dem Sie ihn zuletzt gestartet haben.apt-get purge
gibt Ihnen die Möglichkeit abzubrechenSie haben die letzte Möglichkeit, alles anzuzeigen, was gelöscht werden soll, und den gesamten (etwas irreführenden) Speicherplatz anzuzeigen, der wiederhergestellt werden soll:
Der Code
Kopieren Sie diesen Code in eine ausführbare Datei mit dem Namen
rm-kernels
in/usr/local/bin
:HINWEIS: Sie benötigen die Berechtigung sudo, um die Datei zu erstellen. Verwenden Sie dazu:
Um die Datei ausführbar zu machen, gehen Sie wie folgt vor:
ANMERKUNG: Eine Serverversion (textbasiert, nicht GUI) dieses Skripts finden Sie unter: Wie entferne ich alte Kernelversionen, um das Startmenü zu bereinigen?
Updates vom 28. Juli 2017
Die berechnete Größe jedes Kernels wurde aus
/boot/*kernel_version*
5 Dateien mit insgesamt ~ 50 MB entnommen . Die Formel wurde geändert, um die Dateien in/usr/src/*kernel_version*
und aufzunehmen/lib/modules/*kernel_version*
. Die berechnete Größe für jeden Kernel beträgt jetzt ~ 400 MB. Der obige Code fürrm-kernels
undrm-kernels-server
wurde aktualisiert. In den obigen Beispielbildschirmen sind diese Änderungen jedoch noch nicht enthalten.Standardmäßig wird die Dateigröße für Linux-Header auf 125 MB und für Linux-Image auf 220 MB geschätzt, da
du
dies schmerzhaft langsam sein kann, sofern sich keine Dateien im Cache befinden. Um die tatsächliche Größe zu ermitteln,du
übergeben Sie einen beliebigen Parameter an das Skript.Die Gesamtsumme aller Kernelgrößen (mit Ausnahme der aktuell ausgeführten Version, die nicht entfernt werden kann) wird jetzt in der Titelleiste angezeigt.
Das Dialogfeld, in dem das letzte Zugriffsdatum jedes Kernels angezeigt wird . Dieses Datum kann bei Backups oder ähnlichen Vorgängen für alle Kernel überschrieben werden. Das Dialogfeld zeigt jetzt stattdessen das Änderungsdatum an .
quelle
Über den synaptic package manager können Sie problemlos mit Kerneln umgehen. Aber zuerst sollten Sie einen aktuell verwendeten Kernel-Release-Namen in der Terminal-Eingabeaufforderung kennen:
linux@linux-desktop:~$ uname -r 4.4.0-75-generic
Zumindest diese Version solltest du also unangetastet lassen. Öffnen Sie synaptic und füllen Sie den Platzhalter für den Schnellfilter wie folgt aus: Jetzt können Sie alle Pakete auswählen, die Sie löschen möchten, und folgende Schritte ausführen : Zum vollständigen Entfernen markieren -> Übernehmen . Ich würde vorschlagen, mindestens ein aktuelles Kernelpaket und einen vorherigen Kernel beizubehalten. In diesem Fall können Sie beispielsweise Linux-Image-4.4.0-66-generic und Linux-Image-Extra-4.4.0-66-generic sicher entfernen , aber es ist gut, 4.4.0-72 und natürlich zu behalten 4.4.0-75 .quelle
Zur Vereinfachung der Befehlszeile:
https://github.com/erichs/bootnukem
Dann
quelle
Funktioniert unter Linux Mint 18.3 (basierend auf 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
Quelle: https://ubuntuforums.org/showthread.php?t=2248846&p=13146650#post13146650
quelle