Alte Kernel in Ubuntu entfernen

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

Bei Ubuntu Installationen (vor Ubuntu Version 15.10) mit separater /boot-Partition kann diese nach Installation von mehreren Updates volllaufen. Das Problem tritt auf, weil ältere Kernel Versionen nicht automatisch entfernt werden. In diesem Artikel zeigen wir, wie Sie ältere Kernel Versionen manuell deinstallieren, und damit Speicherplatz in der /boot-Partition frei machen.

Problem

Durch die Installation von neuen Kernel Versionen mittels apt-get upgrade befinden sich mit der Zeit immer mehr Kernel Versionen in /boot. Durch einen Aufruf von apt-get autoremove sollten ältere Kernel Versionen automatisch entfernt werden. Aufgrund eines Bugs werden jedoch Kernel Pakete als manuell installiert markiert, was das automatische Entfernen der älteren Kernel Versionen verhindert.[1][2][3]

Betroffene Systeme:

Workarounds

Manuelles Deinstallieren alter Kernel

Sie können ältere Kernel Versionen manuell deinstallieren.

Dazu rufen Sie zuerst die Liste der installierten Pakete ab (im Beispiel hier zeigen wir ein Ubuntu 14.04 mit Kernel Version 3.13.*):

user@ubuntu-14-04:~$ dpkg -l | awk '{print $2}' | grep -i 3.13 
linux-headers-3.13.0-67
linux-headers-3.13.0-67-generic
linux-headers-3.13.0-68
linux-headers-3.13.0-68-generic
linux-headers-3.13.0-74
linux-headers-3.13.0-74-generic
linux-image-3.13.0-67-generic
linux-image-3.13.0-68-generic
linux-image-3.13.0-74-generic
linux-image-extra-3.13.0-67-generic
linux-image-extra-3.13.0-68-generic
linux-image-extra-3.13.0-74-generic
linux-signed-image-3.13.0-67-generic
linux-signed-image-3.13.0-68-generic
linux-signed-image-3.13.0-74-generic

Fragen Sie nun die aktuell verwendete Kernel Version ab (im Beispiel 3.13.0-74). Diese Kernel Version darf NICHT entfernt werden!

user@ubuntu-14-04:~$ uname -a
Linux ubuntu-14-04 3.13.0-74-generic #118-Ubuntu SMP Thu Dec 17 22:52:10 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Ältere Kernel Versionen können Sie nun mittels sudo apt-get purge ... entfernen. Geben Sie dabei alle Pakete an. Achten Sie darauf, dass Sie ausschließlich Pakete der älteren Kernel Versionen entfernen und die Pakete der aktuell verwendeten Version belassen. Im Beispiel hier entfernen wir die Pakete der älteren Kernel Version 3.13.0-67:

user@ubuntu-14-04:~$ sudo apt-get purge linux-headers-3.13.0-67 linux-headers-3.13.0-67-generic linux-image-3.13.0-67-generic linux-image-extra-3.13.0-67-generic linux-signed-image-3.13.0-67-generic

apt-mark und apt-get autoremove

Alternativ können Sie die fälschlicherweise als manuell installiert markierten Kernel Pakete als automatisch installiert markieren:

sudo apt-mark auto $(dpkg -l | grep -e "^ii" | awk '{print $2}' | grep -e linux-signed-image-.*-generic -e linux-image-.*-generic -e linux-headers-.*-generic)

Danach überprüfen Sie, welchen Kernel Sie gerade verwenden und welche Kernel Versionen nach einem apt-get autoremove erhalten bleiben würden:

uname -r
cat /etc/apt/apt.conf.d/01autoremove-kernels

Beispiel:

wfischer@ubuntu-14-04:~$ uname -a
Linux ubuntu-14-04 3.13.0-95-generic #142-Ubuntu SMP Fri Aug 12 17:00:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
wfischer@tpw:~$ cat /etc/apt/apt.conf.d/01autoremove-kernels
// DO NOT EDIT! File autogenerated by /etc/kernel/postinst.d/apt-auto-removal
APT::NeverAutoRemove
{
   "^linux-image-3\.13\.0-87-generic$";
   "^linux-image-3\.13\.0-95-generic$";
   "^linux-headers-3\.13\.0-87-generic$";
   "^linux-headers-3\.13\.0-95-generic$";
   "^linux-image-extra-3\.13\.0-87-generic$";
   "^linux-image-extra-3\.13\.0-95-generic$";
   "^linux-signed-image-3\.13\.0-87-generic$";
   "^linux-signed-image-3\.13\.0-95-generic$";
   "^kfreebsd-image-3\.13\.0-87-generic$";
   "^kfreebsd-image-3\.13\.0-95-generic$";
   "^kfreebsd-headers-3\.13\.0-87-generic$";
   "^kfreebsd-headers-3\.13\.0-95-generic$";
   "^gnumach-image-3\.13\.0-87-generic$";
   "^gnumach-image-3\.13\.0-95-generic$";
   "^.*-modules-3\.13\.0-87-generic$";
   "^.*-modules-3\.13\.0-95-generic$";
   "^.*-kernel-3\.13\.0-87-generic$";
   "^.*-kernel-3\.13\.0-95-generic$";
   "^linux-backports-modules-.*-3\.13\.0-87-generic$";
   "^linux-backports-modules-.*-3\.13\.0-95-generic$";
   "^linux-tools-3\.13\.0-87-generic$";
   "^linux-tools-3\.13\.0-95-generic$";
};
wfischer@ubuntu-14-04:~$ 

Sofern der aktuell verwendete Kernel erhalten bleibt (dies müsste immer der Fall sein), entfernen Sie die älteren Kernel Pakete mit folgendem Kommando:

sudo apt-get autoremove --purge

Einzelnachweise

  1. Why doesn't apt-get autoremove remove my old kernels? (askubuntu.com)
  2. Kernel updates are being marked as manually installed (bugs.launchpad.net)
  3. New packages (e.g. kernels) not marked for autoremove iff update-manager set to "display" rather than "install automatically" (bugs.launchpad.net)


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer, tätig im Bereich Communications / Knowledge Transfer bei Thomas-Krenn, hat sein Studium zu Computer- und Mediensicherheit an der FH Hagenberg abgeschlossen. Er ist regelmäßig Autor in Fachzeitschriften und Speaker bei Konferenzen wie LinuxCon, OSDC, OSMC, LinuxTag u.v.m. Seine Freizeit gestaltet er sehr abwechslungsreich. In einem Moment absolviert er seinen Abschluss im Klavierspielen, im anderen läuft er beim Linzmarathon in der Staffel mit oder interessiert sich für OpenStreetMap.


Das könnte Sie auch interessieren

Implementierung eines FAI-Servers unter Ubuntu
Oracle Java JRE unter Ubuntu installieren
Samba-Server Grundlagen