Frage Was ist der sicherste Weg, die Partition zu bereinigen?


Ich habe 200 MB zugewiesen für die /boot Partition. Immer wenn ich versuche, den Kernel zu aktualisieren, erhalte ich eine Fehlermeldung, die grundsätzlich besagt /boot ist voll.

Was kann ich tun, um aufzuräumen? /boot und entferne / backup die älteren Kernel?


258
2017-09-14 19:41


Ursprung


Siehe die Ubuntu Community Wiki - jarno


Antworten:


Befehlszeilenmethode:

Überprüfen Sie zuerst Ihre Kernel-Version, damit Sie das in Benutzung befindliche Kernel-Image nicht löschen und folgendes ausführen:

uname -r

Führen Sie diesen Befehl nun für eine Liste installierter Kernel aus:

dpkg --list 'linux-image*' | grep ^ii

und löschen Sie die Kernel, die Sie nicht mehr benötigen / brauchen, indem Sie Folgendes ausführen:

sudo apt-get remove linux-image-VERSION

Ersetzen Sie VERSION durch die Version des Kernels, den Sie entfernen möchten.

Wenn Sie die älteren Kernel entfernt haben, können Sie dies ausführen, um alle Pakete zu entfernen, die Sie nicht mehr benötigen:

sudo apt-get autoremove

Und schließlich können Sie dies ausführen, um die Grub-Kernel-Liste zu aktualisieren:

sudo update-grub

312
2017-09-14 20:34



Die Befehlszeile funktionierte wie ein Zauber, danke! - koba101
sudo dpkg --list 'linux-image*' | grep ^ii macht es ein wenig einfacher, nur die installierten Kernel zu sehen. Auch ich denke das update-grub ist harmlos, aber nicht unbedingt notwendig, das wird automatisch ausgeführt, wenn Sie einen Kernel deinstallieren. - Nelson
Benutzen sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo "" um die Liste der zu verwendenden Paketnamen zu erhalten sudo apt-get remove. head -n -3 wird verwendet, um die 3 letzten Kernel im System zu behalten. - Sithsu
sudo apt-get autoremove sollte ausreichen (normalerweise bleiben Sie mit den letzten 3 Kernen) - mbx
Dies ist eine gute Antwort, aber ich bezweifle, dass es in den meisten (wenn nicht allen) Fällen funktionieren kann: Das Problem ist das /boot ist voll, also apt-get wird mit irgendeinem Fehlercode oder anderem fehlschlagen. Die Antwort unten ist ein bisschen "hackier" (ich muss gestehen, ich musste mich selbst aussteifen, um das auszugeben rm -rf im /boot) aber der einzige, der wahrscheinlich in dieser Situation arbeiten wird. - Marco


HINWEIS: Dies ist nur möglich, wenn Sie apt nicht zum Bereinigen verwenden können, da 100% voll / boot sind

Wenn apt-get nicht funktioniert, weil Ihr / boot auf 100% steht, müssen Sie zuerst / booten. Dies hat wahrscheinlich ein Kernel-Upgrade in einer partiellen Installation gefangen, was bedeutet, dass apt ziemlich vollständig eingefroren ist und Ihnen sagen wird, dass Sie laufen apt-get -f install obwohl dieser Befehl weiterhin fehlschlägt.

Holen Sie sich die Liste der Kernel-Images und bestimmen Sie, worauf Sie verzichten können. Dieser Befehl zeigt installierte Kernel mit Ausnahme der aktuell laufenden sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`. Beachten Sie die zwei neuesten Versionen in der Liste. Sie müssen sich nicht um den laufenden kümmern, da er hier nicht aufgeführt ist. Sie können das mit überprüfen uname -r.

Erstellen Sie einen Befehl, um alle Dateien in / boot für Kernel zu löschen, die für Sie keine Rolle spielen. Denken Sie daran, die aktuellen und die zwei neuesten Kernel-Images auszuschließen. Beispiel: sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*. Sie können auch einen Bereich mit der Syntax {80..84} verwenden.

sudo apt-get -f install zu bereinigen, was apt mürrisch über eine Teilinstallation macht.

Wenn Sie auf einen Fehler stoßen, der eine Zeile wie "Interner Fehler: Bild nicht gefunden (/boot/vmlinuz-3.2.0-56-generic)" enthält, führen Sie den Befehl aus sudo apt-get purge linux-image-3.2.0-56-generic (mit deiner passenden Version).

Endlich, sudo apt-get autoremove um die alten Kernel-Image-Pakete zu löschen, die durch das manuelle Boot-Clean verwaist wurden.

Vorschlag, lauf sudo apt-get update und sudo apt-get upgrade um Upgrades zu erledigen, die möglicherweise gesichert wurden, während Sie darauf warten, dass Sie die vollständige Partition / boot erkennen.

Suggestion2, Bewertung https://help.ubuntu.com/community/AutomaticSecurityUpdates und erwägen, Unattended-Upgrade :: Remove-Unused-Dependencies in /etc/apt/apt.conf.d/50unattended-upgrades auf true zu setzen. Dies entspricht dem Ausführen von autoremove nach jeder Sicherheitsaktualisierung, um sicherzustellen, dass Sie unbenutzte Kernel bereinigen, aber auch andere Dinge entfernen, von denen Sie denken, dass sie nicht verwendet werden, sodass Sie in Zukunft von diesem Problem verschont bleiben.


254
2018-03-07 16:54



Auf diese Weise habe ich die neuesten für den nächsten Neustart und dann die vorherige, nur für den Fall, dass etwas in diesem bricht. Normalerweise habe ich viel Platz, also tut es nicht weh, ein paar zu haben und es befriedigt meine Paranoia, weil ich in einem gegebenen Szenario nicht genug Backup-Optionen habe. - flickerfly
Ich hatte noch nie ein Problem durch unbeaufsichtigte Upgrades. Ich kann Szenarien vorstellen, in denen dies ein Problem sein könnte, das hauptsächlich um Abhängigkeiten geht, die bei nicht-deb-verpackten Installationen verloren gehen. Sagen Sie, dass Sie php installieren, entscheiden, es zu deinstallieren und eine neuere Version von der Quelle zu installieren. Diese Version verfügt über Abhängigkeiten, die von der vorherigen Installation bereitgestellt wurden, aber apt ist sich nicht bewusst, dass es noch benötigt wird. Wenn Sie das nächste Mal auto-remove ausführen, sind diese Abhängigkeiten weg. Wenn automatisiert, könnte dies ein wenig verwirrend sein. Wenn Sie nicht außerhalb der Repositories installieren, glaube ich, dass es absolut sicher ist. - flickerfly
Nachdem ich das gesehen habe mehrere vsphere virtuelle Server (wo Kernel automatisch aktualisiert wurden, aber später nicht entfernt wurden), schrieb ich ein Python-Skript um es zu automatisieren. Ich hätte gerne mehr Augen darauf - EvanK
Wenn du benutzt dpkg --purge Bei einem vollständigen Boot erhalten Sie Folgendes $ sudo dpkg --purge linux-image-3.13.0-65-generic dpkg: dependency problems prevent removal of linux-image-3.13.0-65-generic: linux-image-extra-3.13.0-65-generic depends on linux-image-3.13.0-65-generic. dpkg: error processing package linux-image-3.13.0-65-generic (--purge): dependency problems - not removing Errors were encountered while processing: linux-image-3.13.0-65-generic - flickerfly
Das ist sehr hilfreich. hat für mich gearbeitet. - deepdive


Es gibt Dokumentation darüber unter https://help.ubuntu.com/community/RemoveOldKernels

Zusammenfassend: Verwenden

sudo apt-get autoremove --purge
# and/or:
sudo purge-old-kernels

Das purge-old-kernels Werkzeug kann über installiert werden sudo apt install byobu. Hier ist die Beschreibung von seiner Manpage:

Dieses Programm entfernt alte Kernel - und Header - Pakete von der   System, Speicherplatz freizugeben. Es wird nie die aktuell entfernen   laufender Kernel. Standardmäßig werden mindestens die letzten 2 Kernel beibehalten,   Der Benutzer kann diesen Wert jedoch mithilfe des Befehls überschreiben --keep  Parameter.

Wenn Sie eine Copy-Paste-Lösung wünschen, schlug ReSearchIT Eng Folgendes vor:

sudo apt install -y byobu
sudo purge-old-kernels -y --keep 1
sudo apt-get -y autoremove --purge

43
2017-08-09 09:12



In meinem Fall funktioniert apt aufgrund eines ausstehenden Kernels nicht und der vorgeschlagene Fix ist ein catch-22: - James Bowery
Ich musste zuerst kaputte Pakete reparieren askubuntu.com/a/304388/284313 Danach hat deine Lösung funktioniert. - James Bowery
Ich denke, das sollte ab sofort die akzeptierte Lösung sein. - Fran Marzoa
Das ist viel sicherer als die angenommene Antwort. Ich denke apt-get autoremove --purge sollte aber ausreichen. - Woodrow Barlow


Ich fand, dass es viel einfacher ist, die kleine Partition zu verlassen und sich zu bewegen /boot zur Wurzel. Dies verhindert auch zukünftige Probleme.

Verschieben Sie zuerst Ihre Daten von der Startpartition in das Stammverzeichnis (Ausführen als sudo -s):

cp -a /boot /boot2
umount /boot
rmdir /boot
mv /boot2 /boot

Entfernen Sie (oder kommentieren Sie) die /boot Eintritt in /etc/fstab:

vim /etc/fstab

Aktualisieren Sie grub und stellen Sie sicher, dass alles korrekt ist:

update-grub

apt sollte jetzt problemlos upgraden können.

Dies hinterlässt eine unbenutzte 200mb-Partition (die Sie für etwas anderes verwenden könnten, wenn Sie es die Mühe wert finden).


6
2018-04-14 07:43



Dies ist eine gute Idee, funktioniert aber nicht, wenn Sie eine vollständige Festplattenverschlüsselung für Ihre Root-Partition wünschen. - Paŭlo Ebermann


Alte Kernel entfernen (um Speicherplatz auf / boot freizugeben) sehen: http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")

Dann renne

sudo apt-get update

3
2017-08-14 14:09



Das war die einzige, die funktionierte .... großartige Lösung - John
Beste Antwort! Dies ist die einzige Lösung, die für mich funktioniert hat; Autoremove ist dumm; Es versucht, alle Kernel mit nicht erfüllten Abhängigkeiten neu zu installieren, bevor sie offiziell entfernt werden. Ich ging im Kreis und rannte immer wieder aus dem Weltraum. Diese Antwort ist Gold. - Lonnie Best


sudo apt-get autoremove

Dies entfernt alle bis auf die letzten 2 Kernel. Getestet unter Ubuntu 16.04 LTS /boot war bei 100% Kapazität und apt-get upgrade gescheitert es ist das letzte Kernel-Upgrade. Der Kernel Autoremove ist iterativ. Wenn Sie also mehrere Kernel haben, werden diese nacheinander entfernt. Also sei geduldig.


2
2017-10-03 16:39





Warum es von Hand machen, wenn Sie es mit einem Werkzeug tun können? Du weißt, dass du es in 30 Sekunden wieder brauchen wirst, weil es 30 Sekunden dauert, um ein neues Kernel-Update in diesen Tagen zu pushen = P

Ich empfehle dieses Tool zu verwenden, Bootnukem

git clone https://github.com/erichs/bootnukem.git
cd bootnukem
sudo ./install.sh

Dann

sudo bootnukem --dry-run

Löschen --dry-run Sobald Sie bestätigen, dass es sicher aussieht


0
2018-05-04 17:28