"Der Volume-Boot hat nur noch 0 Byte Festplattenspeicher"


32

Nach einem kürzlichen Update erhalte ich eine Warnmeldung mit den Worten:

The volume boot has only 0 bytes disk space remaining

Mein Computer verfügt jedoch über ausreichend freien HD-Speicherplatz. Weiß jemand, wie ich das löse. (Wenn es relevant ist, verwende ich die gesamte Festplattenverschlüsselungsfunktion des alternativen Installationsimages für Ubuntu 12.04.)


Es hängt wirklich davon ab, wie Sie Ubuntu auf Ihrem Computer installiert haben. Können Sie "sudo fdisk -l" im Terminal und überprüfen, ob es eine kleine Partition gibt, die fast voll ist?
Paulius Šukys

4
Besser noch, führen Sie den Befehl 'df -H -x tmpfs -x devtmpfs' ohne die Anführungszeichen aus und fügen Sie die Ausgabe hier ein.
Fabricator4

Diese Frage und die Antworten beziehen sich auf das Problem und können hilfreich sein.
elomage

anscheinend ein bekanntes Problem für verschlüsselte Partition. Antwort askubuntu.com/a/230942/231504 ist groß - funktioniert für mich. Erhöhen
pestophagous

Antworten:


48

So listen Sie den gesamten Kernel auf:
dpkg --get-selections | grep "linux-image-[[:digit:]].*" | tr "\t" ";" | cut -d ";" -f1

Das Ergebnis sieht ungefähr so ​​aus:

linux-image-3.19.0-7-generic 
linux-image-3.18.0-13-generic  
linux-image-3.16.0-23-generic

Lösche nicht alle Kerne, nur alte!

Als nächstes entfernen wir den 3.16-Kernel,
sudo apt-get purge linux-image-3.16.0-23-generic

und dann alle nicht verwendeten Pakete aus dem System:
sudo apt-get autoclean && sudo apt-get autoremove


Ich habe auch einige angerufen extra, zB beide linux-image-3.13.0-40-genericund linux-image-extra-3.13.0-40-generic. Kann ich die mit löschen extra?
Mads Skjern

Dies war äußerst hilfreich, hat mein Problem jedoch nicht vollständig gelöst (das Löschen eines alten Kernels schlug immer noch fehl). Ich musste einige alte Kerneldateien manuell entfernen. Ich fand ein paar große mit find /boot/ -type f | xargs du | sort -n. Meine zur Zeit laufende Kernel ist 3.13.0-66-generic, so dass ich vorsichtig bin nicht zu löschen , alles zu , dass im Zusammenhang, aber ich habe folgende entfernen: sudo rm /boot/initrd.img-3.13.0-63-generic /boot/initrd.img-3.13.0-65-generic /boot/vmlinuz-3.13.0-65-generic /boot/vmlinuz-3.13.0-63-generic. Schließlich ist das Ausführen der Bereinigung auf einem alten Kernel erfolgreich.
Blong

4
Wenn Sie wirklich 0 Bytes frei haben, funktioniert dies nicht, wie @blong sagte. Sie müssen zuvor einige alte vmlinuz-Dateien manuell entfernen, da beim Bereinigen einige Dateien erstellt werden müssen und dies fehlschlägt, wenn 0 Byte verbleiben.
Pomarc

1
Woher weiß ich, welche Kernel alt sind? Meine Ausgabe ist linux-image-4.10.0-42-generic linux-image-4.13.0-26-generic linux-image-4.13.0-32-generic linux-image-4.13.0-37-generic linux-image -4.13.0-38-generisches Linux-Image-4.13.0-39-generisches Linux-Image-4.13.0-41-generisches Linux-Image-4.13.0-43-generisches Linux-Image-4.8.0-36 Generischer
jacob

25

Die Ursache waren in der Tat alte Kernel-Images.
Um aufzuräumen, musste ich nur eine Zeile ausführen:

sudo apt-get autoclean && sudo apt-get autoremove

Dadurch wurden alte Kernel automatisch erkannt und entfernt.


9

Möglicherweise hat Ihre /bootPartition im Laufe der Zeit zu viele Kernelversionen angesammelt. Diese Partition ist wahrscheinlich von Ihrer großen Festplattenpartition (gemountet als /) getrennt. Sie können den /bootPartitionsraum folgendermaßen überprüfen (suchen Sie die Zeile mit / boot):

df -h

Es gibt eine nette Seite darüber, wie man alte Kernel entfernt .

Kurz gesagt, überprüfen Sie Ihre aktuelle Kernel-Version, rufen Sie die Liste der installierten Versionen ab und entfernen Sie anschließend die alten Versionen. Es gibt auch einen "magischen" Einzeiler-Befehl auf der Seite, der all das für Sie erledigt. Verwenden Sie es jedoch auf eigenes Risiko.

Anweisungen im Detail:

  1. Holen Sie sich die aktuelle Kernel-Version, die Sie behalten möchten :

    uname -r
    
  2. Holen Sie sich die Liste aller installierten Kernel:

    dpkg -l | grep linux-image-
    
  3. Führen Sie apt-get remove auf den Kerneln aus, die Sie entfernen möchten. Nicht auf dem neuesten ! Beispielsweise:

    sudo apt-get remove linux-image-2.6.32-22-generic
    

Weitere Hinweise:

  • dpkg -lZeigt den Status des (Kernel-) Pakets vor dem Paketnamen an. Beispielsweise:

    rc  linux-image-3.13.0-39-generic  ...
    ii  linux-image-3.13.0-40-generic  ...
    
    • „RC“ bedeutet , dass das Paket r emoved und hat c ONFIGURATION Dateien. Diese brauchen Sie nicht mehr zu entfernen.
    • „ii“ bedeutet , dass das Paket markiert ist , für i nstallation und i nstalled

    Auf dieser Grundlage können Sie nur die installierten Kernelpakete auflisten:

    dpkg -l | grep "ii.*linux-image-"
    

Alternative Lösung mit dem GUI-Tool Ubuntu Tweak .

Installieren und gehen Sie zu Computer Janitor, überprüfen Sie die Pakete System-> Old Kernel und System-> Unneeded und klicken Sie auf Clean.


3

Verwenden Sie dieses Skript, um alle anderen alten Kernel zu entfernen, wobei die aktuelle und die vorherige Version (die letzte Kernelversion) erhalten bleiben.

KERNELMAGES=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-image/g'`

KERNELHEADERS=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-headers/g'`

for PURGEKERNEL in `echo $KERNELMAGES $KERNELHEADERS`; do

apt-get autoremove -y && apt-get purge $PURGEKERNEL -y

done

Funktionierte einwandfrei, auch wenn ich "Paradiesstaubs" Antwort von der Kommandozeile aus nicht machen konnte.
bulltorious

Ich bekomme "Erlaubnis verweigert" ...
Richard Hardy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.