Wie schaffe ich mehr Speicherplatz in / boot?


Zur akzeptierten Antwort gehen


Meine /boot Partition ist fast voll und ich erhalte jedes Mal eine Warnung, wenn ich mein System neu starte. Ich habe bereits alte Kernelpakete (Linux-Header ...) gelöscht. Eigentlich habe ich das getan, um eine neuere Kernel-Version zu installieren, die mit den automatischen Updates geliefert wurde.

Nach der Installation dieser neuen Version ist die Partition fast wieder voll. Was kann ich sonst noch löschen? Gibt es noch andere Dateien, die mit den alten Kernel-Images verknüpft sind?

Hier ist eine Liste der Dateien, die sich auf meiner /boot Partition befinden:

 :~$ ls /boot/
abi-2.6.31-21-generic         lost+found
abi-2.6.32-25-generic         memtest86+.bin
abi-2.6.38-10-generic         memtest86+_multiboot.bin
abi-2.6.38-11-generic         System.map-2.6.31-21-generic
abi-2.6.38-12-generic         System.map-2.6.32-25-generic
abi-2.6.38-8-generic          System.map-2.6.38-10-generic
abi-3.0.0-12-generic          System.map-2.6.38-11-generic
abi-3.0.0-13-generic          System.map-2.6.38-12-generic
abi-3.0.0-14-generic          System.map-2.6.38-8-generic
boot                          System.map-3.0.0-12-generic
config-2.6.31-21-generic      System.map-3.0.0-13-generic
config-2.6.32-25-generic      System.map-3.0.0-14-generic
config-2.6.38-10-generic      vmcoreinfo-2.6.31-21-generic
config-2.6.38-11-generic      vmcoreinfo-2.6.32-25-generic
config-2.6.38-12-generic      vmcoreinfo-2.6.38-10-generic
config-2.6.38-8-generic       vmcoreinfo-2.6.38-11-generic
config-3.0.0-12-generic       vmcoreinfo-2.6.38-12-generic
config-3.0.0-13-generic       vmcoreinfo-2.6.38-8-generic
config-3.0.0-14-generic       vmcoreinfo-3.0.0-12-generic
extlinux                      vmcoreinfo-3.0.0-13-generic
grub                          vmcoreinfo-3.0.0-14-generic
initrd.img-2.6.31-21-generic  vmlinuz-2.6.31-21-generic
initrd.img-2.6.32-25-generic  vmlinuz-2.6.32-25-generic
initrd.img-2.6.38-10-generic  vmlinuz-2.6.38-10-generic
initrd.img-2.6.38-11-generic  vmlinuz-2.6.38-11-generic
initrd.img-2.6.38-12-generic  vmlinuz-2.6.38-12-generic
initrd.img-2.6.38-8-generic   vmlinuz-2.6.38-8-generic
initrd.img-3.0.0-12-generic   vmlinuz-3.0.0-12-generic
initrd.img-3.0.0-13-generic   vmlinuz-3.0.0-13-generic
initrd.img-3.0.0-14-generic   vmlinuz-3.0.0-14-generic
 

Derzeit verwende ich den 3.0.0-14-generic Kernel.


566





2011-12-22




Anzahl der Antworten: 22


Sie haben viele unbenutzte Kernel. Entfernen Sie alle bis auf den letzten Kernel mit:

 sudo apt-get purge linux-image-{3.0.0-12,2.6.3{1-21,2-25,8-{1[012],8}}}
 

Dies ist eine Abkürzung für:

 sudo apt-get purge linux-image-3.0.0-12 linux-image-2.6.31-21 linux-image-2.6.32-25 linux-image-2.6.38-10 linux-image-2.6.38-11 linux-image-2.6.38-12 linux-image-2.6.38-8
 

Das Entfernen des linux-image-x.x.x-x Pakets wird ebenfalls entfernt linux-image-x.x.x-x-generic .

Die Header werden in /usr/src Kernel-Modulen installiert und beim Erstellen von Kernel-Modulen (wie dem proprietären NVIDIA-Treiber und der VirtualBox) verwendet. Die meisten Benutzer sollten diese Header-Pakete entfernen, wenn das entsprechende Kernel-Paket ( linux-image-* ) nicht installiert ist.

Führen Sie Folgendes aus, um alle installierten Kernel aufzulisten:

 dpkg -l linux-image-\* | grep ^ii
 

Ein Befehl zum Anzeigen aller Kernel und Header, die entfernt werden können, mit Ausnahme des aktuell ausgeführten Kernels:

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

Es wählt alle Pakete aus, deren Namen mit linux-headers-<some number> oder beginnen linux-image-<some number> , druckt die Paketnamen für installierte Pakete aus und schließt dann den aktuell geladenen / ausgeführten Kernel aus (nicht unbedingt den neuesten Kernel!). Dies entspricht der Empfehlung, einen neueren Kernel zu testen, bevor ältere, bekannte Kernel entfernt werden.

Nach dem Upgrade des Kernels und dem Neustart, um ihn zu testen, können Sie alle anderen Kernel folgendermaßen entfernen:

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

631


2011-12-24

Ihre Bootpartition ist voll. Da es sich um ein Kernel-Update handelt, werden diese Dateien auf die Boot-Partition kopiert, sodass Sie eine Bereinigung durchführen müssen. Hier ist ein Blog-Beitrag , der Ihnen zeigt, wie Sie die alten Kernel-Images mit einem Befehl löschen können. Ich werde eine grundlegende Übersicht über die Methode geben. Verwenden Sie diesen Befehl, um die aktuelle Version Ihres Kernels auszudrucken:

 uname -r
 

Verwenden Sie dann diesen Befehl, um alle von Ihnen installierten Kernel auszudrucken, die nicht Ihr neuester Kernel sind:

 dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'
 

Stellen Sie sicher, dass Ihr aktueller Kernel nicht auf dieser Liste steht. Beachten Sie, dass dies der größte Teil des endgültigen Befehls ist (siehe unten). Um diese alten Kernel zu deinstallieren und zu löschen, müssen Sie diese Argumente an folgende Adresse weiterleiten:

 sudo apt-get -y purge
 

Jetzt können wir alles tun, was wir wollen, indem wir die letzten beiden Befehle zu diesem unheiligen Durcheinander kombinieren:

 dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge
 

Und dieser eine Befehl erledigt alles für Sie. Ich werde bestätigen, dass dies perfekt funktioniert, aber niemals jemandem im Internet vertrauen. :) Für weitere Informationen bietet der Blog-Beitrag eine sehr gute Erklärung dafür, was die einzelnen Teile des Befehls tun. Lesen Sie sie durch, damit Sie zufrieden sind, dass sie das tun, was Sie wollen.


220


2013-02-21

 sudo apt-get autoremove
 

Dieser Befehl erledigt die Arbeit automatisch.


112


2012-11-05

Mit dem Synaptic Package Manager können alte Kernel-Images einfach ausgewählt und entfernt werden.
Screenshot von Synaptic Package Manager

Wenn Sie Synaptic noch nicht installiert haben:

 sudo apt-get install synaptic
 

Starten Sie die Anwendung und wählen Sie die angezeigten Optionen aus.

Sie sollten in der Lage sein, alle "Linux" -Pakete mit der Version "2.6.x" hervorzuheben, wobei x zwischen 31 und 38 liegt, je nach den Dateien in Ihrem / boot-Ordner.

Klicken Sie mit der rechten Maustaste auf jedes dieser Linux-Pakete und wählen Sie die Option "Zum vollständigen Entfernen markieren". Klicken Sie abschließend auf die Schaltfläche Übernehmen. Dadurch werden alle Dateien und alle zugehörigen Dateien entfernt. Ihr /boot Ordner sollte jetzt etwas aufgeräumter sein.


40


2011-12-24

Vielen Dank für Ihren ausführlichen Beitrag zu Ihrem Problem. Dadurch bin ich in die richtige Richtung gegangen. Obwohl es nützlich ist , vorherigen Kernel - Dateien halten Sie sie alle in einem Rutsch entfernen können, lesen Sie in diesem Beitrag:
Wie alle Nicht verwendete Linux - Kernel - Header, Bilder und Module entfernen

Erledigt über die Kommandozeile. Wenn Sie dies per Fernzugriff tun, öffnen Sie mit WINSCP eine Terminalsitzung und fügen Sie sie einfach ein. Dies funktioniert sehr gut.

Hier ist es aus dem Artikel-Link kopiert, ich schlage vor, Sie lesen den vollständigen Artikel:

 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
 

25


2012-06-01

Dies ist eine neue Antwort auf eine alte Frage, aber eine einfache Möglichkeit, diese Sache (und mehr) zu bereinigen, ist die Installation von Ubuntu Tweak . So installieren Sie es :

 sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak
 

Dann können Sie Ubuntu Tweak ausführen und zur Registerkarte "janitor" wechseln. Von hier aus sind es nur noch drei Klicks:


Ubuntu Tweak Hausmeister für alte Kernel

Es ist jedoch besser, aus Sicherheitsgründen den letzten Kernel (den Sie nie kennen) oder einen bekannten funktionierenden Kernel zu belassen. aber das ist leicht anpassbar.

Mit demselben Tool können Sie viele Dinge bereinigen. Denken Sie jedoch daran, dass das System sie bei Bedarf neu erstellen muss, wenn Sie den Thumbnail-Cache oder den TB-Cache bereinigen.


23


2014-11-25

Ich konnte das Problem beheben, indem ich dpkg die Pakete direkt entfernte. Obwohl die Pakete weiterhin in aufgeführt sind dpkg -l , werden die Dateien entfernt /boot , um Speicherplatz freizugeben.

 [email protected]:/boot$ sudo dpkg --remove linux-image-2.6.32-30-server
(Reading database ... 145199 files and directories currently installed.)
Removing linux-image-2.6.32-30-server ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-35-server
Found linux image: /boot/vmlinuz-2.6.32-34-server
Found initrd image: /boot/initrd.img-2.6.32-34-server
Found linux image: /boot/vmlinuz-2.6.32-33-server
Found initrd image: /boot/initrd.img-2.6.32-33-server
Found linux image: /boot/vmlinuz-2.6.32-32-server
Found initrd image: /boot/initrd.img-2.6.32-32-server
Found linux image: /boot/vmlinuz-2.6.32-31-server
Found initrd image: /boot/initrd.img-2.6.32-31-server
Found memtest86+ image: /memtest86+.bin
done

# Repeat for kernels -31 and -32 and -33, up to (but not including)
# the version listed by `uname -a`
 

Nach diesem apt-get -f install fixierte meine Abhängigkeitsprobleme, und alles war gut mit der Welt.

Ich werde meine Antwort jedoch nicht akzeptieren, da ich immer noch wissen muss, ob ich mich /boot vergrößern oder etwas anderes tun soll.


19


2011-12-03

Sie können aufhören, eine separate / boot-Partition zu verwenden, dann haben Sie dort nicht mehr so ​​wenig Speicherplatz. Hängen Sie dazu die Partition aus, hängen Sie sie an einer anderen Stelle ein und kopieren Sie alle Dateien in das Verzeichnis / boot in Ihrer Root-Partition. Entfernen Sie dann den Eintrag aus / etc / fstab und installieren Sie grub erneut. Zum Beispiel (Sie müssen die richtige Partition verwenden):

 sudo -s
umount /boot
mount /dev/sda2 /mnt
cp -a /mnt/* /boot/
umount /mnt
gedit /etc/fstab
grub-install /dev/sda
 

Anschließend können Sie mit gparted die alte / boot-Partition löschen und möglicherweise die Root-Partition erweitern, um diesen Speicherplatz zu nutzen. Um die Root-Partition zu erweitern, müssen Sie von der Live-CD booten und der freie Speicherplatz muss sofort rechts sein. Befindet sich die / boot-Partition derzeit links von der Root-Partition, müssen Sie die Root-Partition zuerst nach links verschieben und dann erweitern. Dies kann jedoch sehr, sehr lange dauern und ist möglicherweise nicht wert Ärger.


15


2011-12-22

Ausgehend von den obigen Antworten lautet mein bewährter Ansatz wie folgt:

  • uname -a um den laufenden Kernel zu finden.
  • dpkg -l linux-{headers,image}-\* | grep ^ii um alle aktuell installierten Kernel-bezogenen Pakete aufzulisten. Dies beinhaltet den laufenden Kernel.
  • sudo apt-get purge linux-{image,headers}-3.16.0-{xx,yy,zz} um die alten kerne zu entfernen. Ersetzen Sie xx,yy,zz durch eine Liste der Kernel-Builds, die Sie entfernen möchten. Dies sind alle Builds, die im vorherigen Befehl aufgeführt sind und älter als der aktuell ausgeführte Kernel sind. Stellen Sie sicher, dass Sie den aktuell ausgeführten Kernel nicht entfernen - Ihr System wird nicht mehr bootfähig . Möglicherweise müssen Sie auch die Kernelversion von 3.16.0 auf die auf Ihrem System installierte Version ändern .
  • Optional können Sie eine zusätzliche sudo apt-get autoremove Aktion ausführen, um alle verbleibenden Abhängigkeiten der alten Kernel zu entfernen, die von den aktuellen nicht mehr benötigt werden, und so mehr Speicherplatz freizugeben.

Möglicherweise sind Header-Dateien ohne passende Kernel-Versionen installiert oder umgekehrt. Fügen Sie einfach alle diese Versionen in den Befehl ein. APT wird sich beschweren, dass einige Pakete nicht entfernt werden können, weil sie nicht installiert sind, aber das schadet nicht.

Wenn etwas fehlschlägt ...

  • Wenn der apt - Befehl an eine aufgrund nicht auf dem Gerät ließ keinen Raum Fehler, verwenden Sie den entsprechenden Befehl dpkg statt: sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz} .
  • Wenn der Befehl dpkg immer noch nicht funktioniert, weil die linux-image Pakete von den linux-headers Paketen der gleichen Version (die Sie ebenfalls deinstallieren möchten) benötigt werden, hat dpkg das möglicherweise nicht gelöst. Überprüfen Sie die Ausgabe von erneut dpkg -l und geben Sie in der Befehlszeile alle Paketnamensuffixe an. Zum Beispiel war auf einem meiner Systeme der Befehl, der schließlich funktionierte sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz}-generic-pae .
  • Wenn Sie einen anderen Fehler bemerken, suchen Sie Hilfe - Sie haben möglicherweise ein anderes Problem als gedacht.

10


2015-07-09

Für mich haben beide apt-get purge und dpkg --remove beide versagt. Also musste ich ein paar ältere Kernel-Images aus / boot mit löschen rm -f .


5


2013-10-14

Alle Kernel auflisten:

 dpkg --list 'linux-image*'
 

Aktuellen Kernel anzeigen:

 uname -r
 

Alle Kernel auflisten, AUSSER den aktuellen:

 dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'
 

Stellen Sie sicher, dass Ihr aktueller Kernel nicht auf dieser Liste steht.

Entferne alle Kernel AUSSER dem aktuellen:

 dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge
 

Andere Sachen löschen:

 sudo apt-get autoremove
 

Wenn Sie beim Installieren / Deinstallieren von Dateien immer noch einen Boot-Speicherplatzfehler feststellen, entfernen Sie direkt eines der ALTEN Images aus dem Verzeichnis / boot.

 ls -lh /boot/*-3.13.0-119*;

rm /boot/*-3.13.0-119*; 
 

HINWEIS: Bitte überprüfen Sie das aktuelle Kernel-Image erneut, bevor Sie ein Image löschen.


5


2018-07-10

Ich habe bereits alte Kernelpakete (Linux-Header ...) gelöscht

linux-headers-* sind keine Kerne. Kernel-Pakete sind die genannten linux-image-* . Die genannten linux-headers-* Pakete sind Entwicklungspakete zum Kompilieren von Kernelmodulen: Sie befinden sich nicht im Verzeichnis / boot und sind nicht für den alltäglichen Gebrauch Ihres Systems erforderlich.

Die Dateien , die Sie in / boot aufgelistet tun umfassen mehr alten Kernel - Images ( vmlinuz* ) und kompilierten initrd Bilder ( initrd.img* ) für die Kerne, die ein Anzeichen dafür ist , dass Sie noch installierten eine Menge alten Kernel - Pakete haben.

Sie sollten in der Lage sein, Ihre installierten Kernel mit aufzulisten

 aptitude search ~ilinux-image
 

(Beachten Sie, dass dies wahrscheinlich auch Pakete zurückgibt, die keine Kernel sind.)

Normalerweise müssen nicht mehr als zwei Kernel installiert werden - der derzeit verwendete und der vorherige (als Fallback). So können Sie die älteren nacheinander entfernen:

 sudo apt-get autoremove linux-image-3.2.0-23-generic
 

Stellen Sie sicher, dass Sie "3.2.0-23-generic" durch die aktuelle Kernel-Version ersetzen, die Sie entfernen möchten! Entfernen Sie auch keine Pakete wie linux-image-generic . Sie müssen wirklich vorsichtig sein, um den aktuell ausgeführten Kernel nicht zu entfernen, sonst können Sie nicht booten (Ubuntu kann Sie möglicherweise davor warnen oder nicht).

Sie finden Ihren aktuell ausgeführten Kernel mit:

 uname -r
 

2


2014-08-29

Ich hatte dieses Problem und mehr, als ich einige initrd-img-xxx Dateien manuell aus dem / boot entfernte und ein Problem damit hatte, dass diese alten Versionen weiterhin generiert wurden und den /boot Ordner füllten . Um das Problem zu beheben, folgte ich den folgenden Schritten:

  • Ich habe die generierte alte Kernel-Version manuell entfernt, um Speicherplatz freizugeben.
  • Sie bearbeiten eine Textkonfigurationsdatei als Superuser. Fügen Sie daher Folgendes in ein Terminal ein:

     sudo gedit /etc/initramfs-tools/update-initramfs.conf
     
  • Suchen Sie die Zeile update_initramfs=yes und ändern Sie sie in update_initramfs=no . Speichern und beenden Sie die Datei und führen Sie dann Folgendes aus:

     sudo dpkg --configure -a
     

Das hat mein Problem gelöst. Das basierte auf diesem Blog

Hoffentlich sollte beim Neustart alles in Ordnung sein, und später können Sie versuchen, das no Zurück zu yes in zu ändern update-initramfs.conf .


1


2017-03-23

Ich zeige, dass diese Frage auch 2017 neue Kommentare und Antworten hat, aber eine Antwort fehlt, die ich hier für sehr nützlich halte:

Ubuntu als Desktop-Betriebssystem für den einfachen alltäglichen Gebrauch hat keinen Grund, mit einer separaten \ boot-Partition installiert zu werden, und so etwas wird "normalen Benutzern" NICHT etwas bieten ... Eine Lösung ist also eine Neuinstallation ohne \ boot-Partition und so weiter So wirst du nie ein solches Problem haben

PS: Meine Antwort kann in der akzeptierten Antwort gelöscht oder hinzugefügt werden ... (Ich denke, es wird einigen Leuten auf diese Weise helfen)


1


2017-08-20

Super hilfreiches Dienstprogramm , das Ihre Boot-Partition löscht

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

Benutzung auf eigene Gefahr, aber bei mir hat es geklappt:

 sudo bootnukem
 

1


2016-08-14

In aptitude oder synaptic gibt es einen Abschnitt "alt oder manuell installiert verpackt". Dort sollten sich die alten Linux-Pakete befinden.


0


2011-12-22

Es gibt ein Bash-Skript, das ich unten geschrieben habe und das den Prozess ein bisschen benutzerfreundlicher macht.

YMMV - es wurde für Mint 14 gemacht. Ich lerne noch BASH, also ist es wahrscheinlich ein bisschen klobig. Verwenden Sie auf eigenes Risiko, aber es funktioniert bei mir!

 #!/bin/bash

endCol='\e[0m'
bold_red='\e[1;31m'
bold_green='\e[1;32m'
bold_yellow='\e[1;33m'

title_color='\e[0;30;47m'

function show_kernel_info {
clear
current_kernel=$(uname -r)
echo "Current ACTIVE kernel is:"
echo -e "  "$bold_yellow$current_kernel$endCol
echo "This kernel will be TOTALLY EXCLUDED from all actions in this script."
echo "Also, one fallback non-active kernel will be always left untouched."
echo ""
echo "These are the non-active kernels stored in /boot:"
count_of_old_kernels_in_boot=$(ls -o /boot/initrd* | grep -c -v "$current_kernel")
if [ $count_of_old_kernels_in_boot = 0 ]; then
  echo " * No non-active kernels found! *"
else
  ls -o /boot/initrd* | grep -v "$current_kernel"
fi
echo ""
list_of_old_kernels=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic")
current_old_kernel=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic" | head -n 1)
count_of_old_kernels_installed=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -c -v "linux-image-generic")
echo "Listing of all unused kernels still installed in the system (these may not exist in /boot):"
if [ $count_of_old_kernels_installed = 0 ]; then
  echo " * No unused kernel installs found! *"
else
  dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic"
fi
echo ""
}

function exit_script {
free_space_after=$(df -BM /boot | tail -n 1 | awk -F' ' '{ print $4 }' | tr -d M)
let freed_space=$free_space_after-$free_space_before
echo ""
echo "Results (in MB)"
echo "---------------"
echo "Free space in /boot before script was run: "$free_space_before
echo "Free space now: "$free_space_after
echo ""
echo "Amount of space freed up = "$freed_space
echo ""
echo "Press any key to exit."
read -s -n 1
echo ""
exit
}

# Main code
echo ""
echo -e $title_color" --------------------------- "$endCol
echo -e $title_color" -   Kernel Cleanup v1.0   - "$endCol
echo -e $title_color" --------------------------- "$endCol
echo ""
echo "Maximise this window for readability."
echo "Press any key to continue."
read -s -n 1
echo ""
echo "This script will remove old unused kernels, but it will prompt you before removing each one."
echo "It will never remove the current running kernel, and will also leave one fallback kernel."
echo "It can also remove source files from /usr/src for each kernel removed."
echo "This is normally safe to do and will free up lots more space."
echo ""
echo "Do you want that done as well? (y/n, enter=yes)"
valid_input=0
while [ "$valid_input" = "0" ]; do
  read -s -n 1 YesNo_input
  if [ "$YesNo_input" = "" ]; then
    YesNo_input="y"
  fi
  case $YesNo_input
  in
    y)
    RemoveSource="y"
    valid_input=1
    ;;

    Y)
    RemoveSource="y"
    valid_input=1
    ;;

    n)
    RemoveSource="n"
    valid_input=1
    ;;

    N)
    RemoveSource="N"
    valid_input=1
    ;;
  esac
done

free_space_before=$(df -h /boot | tail -n 1 | awk -F' ' '{ print $4 }' | tr -d M)
show_kernel_info
while [ $count_of_old_kernels_in_boot -gt 1 ]; do
  # failsafe check if somehow the current kernel is about to be removed!
  if [ "$current_old_kernel" = "$current_kernel" ]; then
    echo -e $bold_red"ERROR!"$endCol" Somehow the current kernel has crept into the removal process!"
    echo "I refuse to do that! Aborting script."
    exit_script
  fi
  # failsafe check if somehow a linux-image-generic entry is about to be removed
  if [ "$current_old_kernel" = "linux-image-generic" ]; then
    echo -e $bold_red"ERROR!"$endCol" Somehow one of the linux-image-generic entries has crept into the removal process!"
    echo "I refuse to do that! Aborting script."
    exit_script
  fi
  echo "Command about to be executed is:"
  echo "  $ sudo apt-get purge \"$current_old_kernel\""
  check_in_boot=$(echo $current_old_kernel | sed 's/linux-image/initrd.img/g')
  if [ -e /boot/$check_in_boot ]; then
    echo -e $bold_yellow"Note:"$endCol" This kernel exists in /boot but it NON-active, so it's OK to remove."
  else
    echo -e $bold_green"Totally safe to remove:"$endCol" This kernel does NOT exist in /boot."
  fi
  echo ""
  echo "Are you sure you want to remove this kernel?"
  echo "(*upper case* Y=yes / any other key will exit the script)"
  read -s -n 1 yes_no
  echo ""
  # Only entering a single upper case Y will work!
  if [ "$yes_no" != "Y" ]; then
    echo "Aborting script."
    exit_script
  fi
  echo "Removing kernel "$current_old_kernel"..."
  sleep 1
  sudo apt-get -y purge $current_old_kernel
  if [ "$RemoveSource" = "y" ]; then
    current_old_source=$(echo $current_old_kernel | sed 's/linux-image/linux-headers/g')
    current_old_source=$(echo $current_old_source | sed 's/-generic//g')
    current_old_source=$(echo $current_old_source | sed 's/-pae//g')
    sudo apt-get -y purge $current_old_source
  fi
  show_kernel_info
done

if [ $count_of_old_kernels_in_boot = 0 ]; then
  echo -e $bold_red"There are no NON-active kernels to remove!"$endCol
else
  echo -e $bold_red"There is only one NON-active kernel left in /boot!"$endCol
  echo "This script will not remove the last non-active kernel so that you have at least one backup kernel."
fi
echo "Aborting script."
exit_script
 

0


2014-03-08

[Als AskUbuntu-Noob kann ich erst einen Kommentar abgeben, wenn der Ruf gleich 50 ist.]

Mein Server hat das auch gemacht. Im wahrsten Sinne des Wortes hat keine der hier erwarteten Antworten funktioniert, da diese einen gewissen Arbeitsbereich beim / booten erfordern, um abgeschlossen zu werden. Wenn die Startpartition voll ist, wird sie abrupt beendet, ohne dass eines der Images gelöscht wird.

Das einzige, was mir geholfen hat, war das aktuelle Bild zu überprüfen und dann manuell sudo rm filename nach den ältesten Bilddateien zu suchen (jede hatte -3.16.0-30 im Namen). Sobald das erledigt war, sudo apt-get autoremove hatte er den Wackelraum, den er brauchte, um seine Arbeit zu erledigen. Es wurden einige mit dieser Version verbundene Fehler hervorgehoben, zum Beispiel: "depmod: FATAL: konnte /boot/System.map-3.16.0-30-generic: Keine solche Datei oder kein solches Verzeichnis laden", aber das ist zu erwarten.

Nach Abschluss des df Vorgangs wurden 42% für / boot zurückgegeben, um anzuzeigen, dass der Computer wieder funktionsfähig ist.


0


2017-02-08

Ich habe dieses Bash-Skript geschrieben , um alte Kernel auf einmal selektiv zu löschen:


RM-Kernel in Originalgröße

Alle Bash-Codes und Anweisungen sind im Link enthalten.


0


2017-07-30

Speichern Sie dieses Skript unter /usr/local/bin/remove_kernels.sh (denken Sie daran, Ausführungsberechtigungen zu erteilen sudo chmod 755 /usr/local/bin/remove_kernels.sh ):

 #!/bin/sh
if test $(id -u) != 0; then
 echo Error: You must be root to run this script!
 exit 1
fi
apt purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )
update-grub
 

Um dann alle alten Kernel zu entfernen, tippe einfach: sudo remove_kernels.sh


0


2018-10-08

/ boot Partition kann manchmal etwas seltsam sein

Starten Sie nicht direkt, um Kernedateien zu löschen.

Schritte zum folgen

  1. Überprüfen Sie, ob das aktuell installierte Betriebssystem vom Linux-System verwendet wird

    uname -r

    Dies sollte den Namen des aktuell auf dem System installierten Kernel-Images anzeigen

  2. Beginnen Sie nun mit dem Löschen zusätzlicher Dateien, mit Ausnahme derjenigen, die auf Ihrem System installiert sind

    apt-get remove linux-image-XXXXX

  3. Entfernen Sie auch die Header-Datei

    apt-get remove linux-headers-XXXXX

  4. Es kann auch vorkommen, dass ein Fehler aufgetreten apt ist. Wechseln Sie in diesem Fall zu / boot

    cd /boot

  5. Beginnen Sie mit dem manuellen Entfernen von Dateien, aber denken Sie auch sehr sorgfältig daran, die Kerndateien nicht installed one's von Ihrem System zu löschen .

    rm linux-image-XXXXX

    rm linux-image-extra-XXXXXX

  6. Nach dem Entfernen der korrekten Dateien wird die Bereinigung, falls vorhanden, teilweise installiert

    apt-get -f install

  7. Entfernen Sie zusätzliche Dateien, die sich dort befinden, als manuell bereinigte Startdateien

    apt-get autoremove

  8. Aktualisiere grub

    update-grub

  9. Zuletzt aktualisieren Sie Ihre Systempakete

    apt-get update


0


2019-05-03

Wenn Sie nicht mehr unbenutzte Dateien entfernen können und wenn Sie eine andere Partition mit / oder freiem Speicherplatz auf demselben Gerät haben, können Sie die Größe der / boot-Partition nach parted / gparted ändern . (Es ist auch auf den Installationsmedien enthalten.)

Warnung : Das Ändern der Partitionsgröße ist ein gefährlicher Vorgang. Speichern Sie Ihre wichtigen Daten auf einem anderen Datenträger, bevor Sie dies tun!


-1


2015-01-02