Frage Meine / boot-Partition hat 100% erreicht und kann jetzt nicht aktualisiert werden. Alte Kernel können nicht entfernt werden, um Platz zu schaffen


Mein erstes Problem war, als ich es versuchte apt-get update oder apt-get upgrade. Beim Upgrade erhalte ich den folgenden Fehler:

You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed
E: Unmet dependencies. Try using -f.

Ich habe versucht, apt-get install -f auszuführen und dies war die Ausgabe (nachdem ich ja bei der Eingabeaufforderung ja gesagt habe)

(Reading database ... 186183 files and directories currently installed.)
Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ...
Done.
dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack):
 failed in write on buffer copy for backend dpkg-deb during `./boot/System.map-3.2.0-27-generic': No space left on device
 No apport report written because the error message indicates a disk full error
                                                                          dpkg-deb:    error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-27-generic   /boot/vmlinuz-3.2.0-27-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ich habe versucht zu rennen apt-get autoremove und es gibt mir den gleichen Fehler wie apt-get upgrade.

Wenn ich renne dfIch verstehe das /boot:

/dev/sda1                    233191     230297         0 100% /boot

Also las ich woanders, dass ich versuchen sollte, alte Kernel zu löschen. Ich habe überprüft, mit welchen Kernen ich hatte:

$ dpkg -l linux-image-\* | grep ^ii
ii  linux-image-2.6.38-13-server  2.6.38-13.52  Linux kernel image for version 2.6.38 on x86_64
ii  linux-image-3.0.0-13-server   3.0.0-13.22   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-14-server   3.0.0-14.23   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-15-server   3.0.0-15.26   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-16-server   3.0.0-16.29   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-17-server   3.0.0-17.30   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.2.0-24-generic  3.2.0-24.39   Linux kernel image for version 3.2.0  on 64 bit x86 SMP
ii  linux-image-3.2.0-25-generic  3.2.0-25.40   Linux kernel image for version 3.2.0  on 64 bit x86 SMP
ii  linux-image-3.2.0-26-generic  3.2.0-26.41   Linux kernel image for version 3.2.0  on 64 bit x86 SMP

Wenn ich versuche, das Älteste damit zu entfernen:

$ sudo apt-get purge linux-image-2.6.38-13-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be     installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Wie kann ich den Boot-Vorgang freigeben oder verlängern, ohne meine Installation zu beschädigen?


138
2017-08-02 15:17


Ursprung


Ich denke @ Herrers Antwort ist vielleicht die beste: Es benutzt den Paketmanager, und es funktionierte, wenn andere Paketmanagerbefehle fehlschlugen, zumindest für mich: askubuntu.com/a/205776/247661 - Aaron Hall
Ich habe ein Skript gemacht, das den Job macht. Ich werde es veröffentlichen, sobald mein Bounty-Ziel erreicht ist: bountysource.com/issues/... - jarno
help.ubuntu.com/community/RemoveOldKernels - dskrvk
@ dskrvk Ja! Warum ist Remove-Unused-Dependencies nicht der Standard? - Steven R. Loomis


Antworten:


Freigeben von Speicherplatz im Root-Dateisystem

Um Speicherplatz im Root-Dateisystem freizugeben, können Sie versuchen, das Programm auszuführen apt-get clean.

Wenn das nicht funktioniert, können Sie zu /var/cache/apt/archives und entfernen Sie manuell einige Dateien aus dem Cache, um Speicherplatz freizumachen, z.

sudo rm linux-headers-*

Es wird nicht schaden, alle zu entfernen .deb Dateien hier, wenn Sie brauchen - das ist was apt-get clean tut. Sie werden automatisch von wieder heruntergeladen werden apt wenn sie wieder benötigt werden.

Freigeben von Speicherplatz im / boot-Dateisystem

Das Original-Poster hat ein separates /boot Partition, und das ist, was ist voll und verhindert die apt System von der Arbeit. Es wird notwendig sein, dass er dort Platz frei macht.

Wenn dort fast genug Platz ist, gehe zu /boot und entfernen Sie eine oder zwei Konfigurationsdateien:

sudo rm config-3.2.0-19-generic-pae

B. den Namen einer der Kernel-Versionen verwenden, die Sie trotzdem entfernen möchten. Dies wird ein wenig Platz freisetzen (ca. 144K pro Stück).

Wenn Sie mehr Platz benötigen, entfernen Sie einzeln vmlinuz, initrd, abi und System.map Dateien, bis Sie genug Platz haben (ca. 22M für eine meiner i386 Kernel-Versionen).

Was auch immer Sie tun, entferne sie nicht alle. Sie sollten zumindest die letzten zwei übereinstimmenden Versionen jeder Art von Datei für jede Art von Kernel, die Sie verwenden, behalten.

Fahren Sie dann mit Ihren apt-get install-Befehlen fort. Wie oben erwähnt, müssen sie möglicherweise einige der gelöschten Debets erneut herunterladen, aber wenn dies der Fall ist, wird dies automatisch geschehen. Wenn Sie apt wieder arbeiten, bereinigen Sie apt-get, um die Pakete zu entfernen, die den entfernten Dateien entsprechen - damit alles übereinstimmt.


Die Konfigurationsdatei in /boot ist das Kernel-Config das wurde benutzt vom Kernel-Team zu bauen der Kernel mit dem gleichen Namen. Es sollte harmlos sein, es zu entfernen, es sei denn, Sie möchten es als Referenz verwenden oder Sie beim Aufbau Ihrer eigenen Kernel unterstützen.

Schließlich entfernen Sie manuell ein altes Kernel-Paket oder zwei aus dem /boot Partition, um noch mehr Platz für das neue zu schaffen.


116
2017-08-02 15:54



Ich habe versucht, fast alle Konfigurationen zu entfernen. Es scheint immer noch nicht genug Platz zu haben. Welche anderen Dateien wären sicher zu entfernen? Mein Root-Dateisystem ist nicht annähernd voll, also mache ich mir keine Sorgen. - Strifey16
Ich habe meine Antwort mit den weiteren Dateien aktualisiert, die von Hand entfernt werden müssen. Es scheint mir, dass das Entfernen der Sets 3.0.0.13 und 3.0.0.14 (fünf Dateien zu dem Set einschließlich der ABI-Datei) ausreichen würde. - John S Gruber
Das hat es behoben. Mir wurde klar, dass es wahrscheinlich darauf hinauslaufen würde, Dateien per Hand zu entfernen, aber ich zögere immer, das mit irgendetwas zu tun, das von apt installiert wurde, also dachte ich, ich würde hier zuerst fragen. - Strifey16
Verwende nicht sudo rm aus / boot entfernen. Verwenden Sie stattdessen sudo dpkg --purge um ein altes Linux-Image-Paket zu entfernen. Danach verwenden sudo apt-get -f install um die defekte Abhängigkeit zu beheben. - jarno
Obwohl manchmal System so voll sein kann, dass sogar dpkg nicht funktionieren kann. Aber rm kann dann verwendet werden. - jarno


In meinem Fall, der apt Befehle und dpkg Der Befehl konnte nicht abgeschlossen werden und konnte nicht entfernt werden. Das automatische Update ist bei der Installation fehlgeschlagen 2.6.32-56-server.

Mein erster Schritt war, den Raum zu identifizieren,

cd /boot
du -sk *|sort -n

Ich hatte ungefähr 30 Kernel und unterstützende Dateien.

Ich habe ein uname -a um den laufenden Kernel zu bekommen, Ich stellte fest, dass ich auf Linux-Alternative war 2.6.32-43-serverund tat a tar von 6 der Versionen, die nicht ausgeführt wurden, und alt waren.

tar -cvf ~username/boot.tar *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

Ich habe dann ein rm -rf von dem, was ich gesichert hatte:

rm -rf *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

Ich zeige diese Befehle als Beispiele, Sie müssen entscheiden, mit was Sie für Ihre Situation arbeiten werden.

Jetzt wo ich etwas Platz hatte /bootIch konnte rennen

apt-get -f install 

So bereinigen Sie die fehlgeschlagene Installation von 2.6.32-56-server.

Ich habe dann ein

apt-get remove linux-headers-2.6.32-38 linux-headers-2.6.32-38-server linux-image-2.6.32-38-server
apt-get remove linux-headers-2.6.32-39 linux-headers-2.6.32-39-server linux-image-2.6.32-39-server

Das gab mir Raum, um das zurückzugeben, was ich gesichert hatte.

tar -xf ~username/boot.tar
rm  ~username/boot.tar    

Um aufzuräumen, könnte ich dann laufen:

apt-get autoremove

Ich habe neu gestartet und verwende jetzt 4% von /boot.


60
2018-02-20 16:48



Dies war für mich von allen Vorschlägen am hilfreichsten. Vielen Dank! - Joshua F. Rountree
Das Entfernen von Dateien aus / boot bricht apt und dpkg auf schreckliche Weise, da ihre Installations- und Entfernungsskripts bei fehlenden Dateien HARD fehlschlagen. Ich sehe nicht, wie du das zur Arbeit gebracht hast. - FizxMike


Sie können verwenden dpkg Anstatt von apt-get ältere Kernel entfernen:

sudo dpkg -r linux-image-3.2.0-29-generic

19
2018-04-08 14:38



Vielleicht gibt es Pluspunkte für die Verwendung dieses, aber der @ mreiter-Vorschlag funktionierte für mich, als dieser nicht funktionierte (dieser wurde auf dem IRC-Support-Kanal von ubuntu vorgeschlagen). - Aaron Hall
@AaronHall Diese Antwort enthält einfach den wichtigsten Teil von Herrers Antwort (die letzte Zeile) und es ist viel kürzer, da es nicht die Reinigung von Headern (was im Falle von separaten nicht hilft /boot Partition). - Melebius


Ich habe bemerkt, dass noch einige Dateien der alten Versionen im Boot-Verzeichnis waren:

$ ls /boot
vmcoreinfo-2.6.31-17-server

Und der Paketmanager listet die alten Versionen auf:

dpkg -l | grep linux-image

Ich habe daher diesen Befehl verwendet (autoremove würde auch neuere Bilder entfernen, die ich nicht entfernen möchte)

sudo apt-get purge linux-image-2.6.31-17-server

Ich hatte noch einige Header übrig:

dpkg -l | grep linux-headers

Also habe ich das getan:

sudo apt-get purge linux-headers-2.6.32-34

Schließlich gab es noch ein Paket, das ich mit apt-get purge nicht entfernen konnte:

$ dpkg -l | grep linux-image
rc  linux-image-2.6.28-11-server

Quelle: Entfernen Sie ein Paket, das mit dpkg als rc markiert ist

sudo dpkg --purge linux-image-2.6.28-11-server

9
2017-10-24 13:56





Das habe ich benutzt:

sudo apt-get autoremove linux-image-xxxx

Tun Sie das für alle alten Kernel und behalten Sie nur die letzten zwei.

Wenn Sie die alten Kernel automatisch entfernen und GRUB aktualisieren möchten Sieh dir das an: Ubuntu-Dokumentation


2
2017-11-22 17:33



Dies sollte die akzeptierte Antwort sein. Wenn es Ihnen nichts ausmacht, alles zu bereinigen, müssen Sie nicht einmal das Linux-Image angeben. - CyberEd


Sie können nicht auf Pakete reagieren, sondern auf Sie kann Handeln Sie auf andere Dateien. Gehen Sie zuerst durch Ihren Home-Ordner und sehen Sie, ob es da ist etwas Sie können löschen. Wenn nicht, versuchen Sie, eine gute Anzahl von Dateien auf eine andere Partition (oder ein Flash-Laufwerk) zu verschieben und versuchen Sie es dann sudo apt-get install -f um die Probleme mit der Paketabhängigkeit zu bereinigen (höchstwahrscheinlich haben Sie eine .deb-Datei installiert dpkg) und lösche dann alle alten Kernel. Sobald Sie mindestens 10 MB sicher haben, versuchen Sie, nicht benötigte Software oder Dateien zu löschen.


2
2017-08-02 15:20



Der Basisordner befindet sich nicht in / boot - Thorbjørn Ravn Andersen


Verwenden Sie den Synaptic-Paketmanager. Wählen Sie einfach das Paket, das Sie entfernen möchten, und Sie werden aufgefordert, auch Pakete zu entfernen, die davon abhängen. Nach meiner Erfahrung kommen Kernel-Pakete immer in Gruppen von zwei (oder mehr, je nachdem, wie Sie zählen), die voneinander abhängig sind. Mit dem Filter "local / obsolete" können Sie in der Regel schnell alte finden.


1
2017-08-03 02:39



Z.B. Auf einem (Nur-Text-) Server gibt es kein Synaptic. Also keine wirklich brauchbare Lösung für Server. - nerdoc


Einfach laufen sudo apt-get -f autoremove löste mein Problem.


1
2018-04-26 08:26



Hatten Sie 100% Speicherplatz / Boot-Nutzung? - ubashu
Mit Blick auf meine Überwachungsgeschichte schien es nicht so zu sein. PS: Ich bin auf Vagrant Xenial und mein Boot-Dateisystem /dev/sda1 ist montiert auf / - forzagreen


Überprüfen Sie die Verwendung von /var/tmp mit du -sh /var/tmp/. Alle Dateien in diesem Ordner können gelöscht werden, um Platz zu schaffen.

Sie können dann Folgendes ausführen, um die alten Kernel zu entfernen:

sudo apt-get clean
sudo apt install byobu
sudo purge-old-kernels
sudo apt autoremove
sudo update-grub

1
2017-11-06 09:29



Was macht /var/tmp haben mit alten Kernen zu tun? Und es ist nicht immer sicher, alles zu löschen /var/tmp... - ubashu


Führe das aus:

sudo apt-get autoremove
sudo apt-get --purge remove && sudo apt-get autoclean
sudo apt-get -f install
sudo dpkg-reconfigure -a

Quelle: Ich bekomme diesen Fehler nach der Aktualisierung. bitte hilfe


1
2018-02-15 18:41



was macht sudo dpkg-reconfigure -a das tun? Auf Ubuntu 16 sagt es unbekannte Option -a - Shivam Kotwalia
Für diese Frage apt Fehler beim Entfernen von Kernel-Paketen, da der Entfernungsprozess selbst Dateien generiert /boot, die bereits voll ist. Deshalb apt-get autoremove schlägt fehl. Die Frage, die du suchst, ist askubuntu.com/q/142926/158442, die schon hat autoremove, aufgelistet. - muru
@muru Ich habe es gerade gepostet, weil es den Trick gemacht hat, für mich: D - Ardi Nusawan
Ich bin mir sicher, dass es das war, was ich sage ist, dass dein Problem die andere Frage gewesen wäre, nicht diese. - muru
@muru oh ok hab es geschafft: D - Ardi Nusawan


Ich fand, dass das einzige, was für mich funktionierte, Aptitude war.

sudo aptitude

Wenn es geöffnet wird, sagt es normalerweise etwas über unerfüllte Abhängigkeiten auf der Unterseite. Sie können den Brief treffen g um mit der vorgeschlagenen Entfernung fortzufahren. Es führt Sie zu einer Seite, auf der aufgelistet ist, was passieren wird.

Es sollte ein Minus geben - neben den gebrochenen Kernen. Drücken Sie g wieder und es wird die gebrochenen kerne entfernen. Drücken Sie q beenden. Dann sollten Sie in der Lage sein zu verwenden sudo apt-get autoremove um die alten Kerne loszuwerden und Platz zu schaffen.


0
2018-04-03 23:29