Skip to content

3 Methoden um alte Kernel unter Ubuntu, Linux Mint oder Elementary OS zu entfernen

Fehler oder Lücken im Kernel von Linux Systemen werden immer mal wieder entdeckt oder einfach neue Kernel mit neuen Funktionen veröffentlicht. 
Bei regemäßigen Updates kann eine ganze Sammlung an alten Kernel Versionen auf einem System entstehen.
Dies macht eine Bereinigung der betroffenen Systeme von Zeit zu Zeit notwendig.

Im Normalfall reicht ein apt-get autoremove autoclean aus, um ein System relativ sauber zu halten. 
Allerdings füllen alte Linux Kernel die Festplatte und werden im Normalfall nicht mehr benötigt.
Um diese zu entfernen gibt es verschiedene Möglichkeiten. Drei Varianten möchte ich heute vorstellen.

kernels-anzeigen

Erste Variante - Händisch

Die erste Variante hatte ich bereits im Blog erwähnt und wird mit Hilfe des Paketmanagers dpkg/apt durchgeführt und bedeutet etwas Handarbeit.

Zunächst werden die vorhandenen Kernels aufgelistet 

dpkg --list |grep linux

um sie danach händisch zu entfernen.

sudo dpkg --purge linux-image-4.4.0-xx-headers-generic linux-image-4.4.0-xx-generic linux-image-extra-4.4.0-xx-generic

Mit ein paar Tricks lässt sich dies auch vereinfachen.

sudo dpkg --purge linux-{image,headers}-4.x.x-{61,62,..}

Zweite Variante - Halbautomatisch

Ubuntu 16.04 hat das Tool byobu an Bord, welches das Kommando purge-old-kernels mitbringt. 

Sollte dies nicht der Fall sein, lässt es sich mit sudo apt install byobu nachinstallieren.

Danach kann eine Bereinigung des Systems relativ einfach durchgeführt werden.

sudo purge-old-kernels

Der Befehl löscht alle Kernel bis auf die zwei letzen. Sollte dies nicht gewünscht sein, kann das Verhalten mit dem --keep Parameter geändert werden.

sudo purge-old-kernels --keep 3

Dieser Befehl behält die letzten drei Kernel und löscht den Rest.

purge-old-kernels

Dritte Variante - Automatisch

Für automatische Updates und andere Aufgaben bringt Ubuntu das Tool unattended-upgrades mit.

Hiermit lässt sich eine Bereinigung komplett automatisieren.

sudo dpkg-reconfigure -plow unattended-upgrade

Nun muss unter /etc/apt/apt.conf.d/50unattended-upgrades folgendes freigeschaltet werden:

Unattended-Upgrade::Remove-Unused-Dependencies "true";

autoremove-kernelFazit

Sollte Zeit eine Rolle spielen, bietet sich die automatische Methode wohl am ehesten an, allerdings ist man hier nicht mehr ganz Herr über das Systemverhalten,was Risiken mit sich bringt. 

Debiananwender werden die erste Variante kennen und nicht missen wollen.

Die zweite Variante purge-old-kernels stellt sicherlich die einfachste und schnellste Methode dar, um ein System von Altlasten zu befreien.
 

Mehrere Ubuntu Kernel Images auf einmal entfernen

Vor Jahren hatte ich einen kleinen Beitrag über das Entfernen alter Kernels aus einem Linux System geschrieben (Artikel).

Bei diesem Vorgehen hat sich nicht viel geändert, ich möchte die Anleitung lediglich um den folgenden Punkt erweitern.

Entfernen mehrerer Kernel Images auf einmal

Suche nach installierten Kernels

dpkg -l |grep linux-image*

dpkg -l |grep linux-header*

Einzelnes Image entfernen

sudo apt-get purge linux-image-3.16.0-40.54

sudo apt-get purge linux-header-3.16.0-40.54


logo-ubuntu

Mehrere Images auf einmal entfernen

Oft haben sich mehrere alte Kernels angesammelt, welche auf einmal entfernt werden könnten, mit einem kleinen Trick ist dies in der Bash ohne weiteres möglich

sudo apt-get purge linux-image-3.16.0-{54,55,56,57,58}

sudo apt-get purge linux-header-3.16.0-{54,55,56,57,58}

Die beiden Befehle entfernen alle Images mit den genannten Versionsnummern in einem Rutsch.

Ubuntu Updates funktionieren nicht "zu wenig Speicher vorhanden" - Alte linux-header entfernen

Wer regelmäßig sein System aktualisiert, wird ebenfalls Aktualisierungen des linux-header (Kernel) erhalten. Mit der Zeit sammeln sich mehrere Kernel auf dem System an und nehmen Platz in Anspruch. Erkennbar ist das beim Bootvorgang, hier kann bei einem neuen Linux Kernel zusätzlich noch von den alten gestartet werden. Bei Problemen kann so das alte System verwendet werden.
Ist Ubuntu aber über längere Zeit im Betrieb, sind die verschiedenen Pakete unter /boot teilweise nicht mehr nötig und blockieren weitere Updates, da kein Speicher  mehr vorhanden ist. Besonders wenn dafür eine eigene Partition verwendet wird, kann es zu Platzproblemen kommen. Darum ist es notwendig von Zeit zu Zeit alte Dateien zu entfernen.

Linux Header richtig entfernen

Neben dem linux-header sind noch weitere Dateien unter /boot zu finden, wie:

abi-**-generic-pae
config-**-generic-pae
initrd.img-**-generic-pae
System.map-**-generic-pae
vmcoreinfo-**-generic-pae
vmlinuz-**-generic-pae


linux-header-entfernen


Mit dpkg -l | grep linux-image können die installierten Kernel aufgelistet und mit

sudo apt-get remove --purge linux-image-***-generic-pae

entfernt werden. Wer möchte kann alle Kernel außer dem aktiven löschen. Der aktuelle ist üblicherweise an der höchsten Nummer zu erkennen, kann aber auch mit "uname -a" angezeigt werden.

Eventuell empfiehlt sich noch ein "sudo update-grub", normalerweise wird dies aber automatisch durchgeführt.


The following packages have been kept back - Debian bzw. Ubuntu installiert keine Updates

Zuweilen kann es vorkommen, dass bei einem Updateversuch mit "apt-get upgrade" folgende Meldung erscheint:

Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following packages have been kept back:
  linux-generic linux-headers-generic linux-image-generic
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

Dabei handelt es sich um Kernel Updates, welche evtl. eine "apt-get dist-upgrade" voraussetzen.

Alternativ kann es auch sein, dass Pakete doppelt zur Verfügung gestellt werden, hier hilft die Angabe des Paketes "apt-get install linux generic"

Eine weitere Möglichkeit Problemen mit "apt-get upgrade" aus dem Weg zu gehen, ist die Verwendung von "apitude upgrade", diese funktioniert meistens ohne Probleme.

apt-get_update

Wie erkenne ich, welche Ubuntu oder Linux Version installiert ist?

Bei Linux Systemen wie Ubuntu, Mint, Debian oder anderen Linuxsystemen kann die installierte Version schnell über die Konsole ausgelesen werden. Daneben können noch weitere Werte wie die Architektur (32bit oder 64bit) oder die Kernel Version angezeigt werden.

ubuntu

Auf der Konsole gibt es verschiedene Befehle um Daten anzuzeigen:

Version auslesen

  • lsb_release –a oder cat /etc/lsb-release
    • No LSB modules are available.
    • Distributor ID: Ubuntu
    • Description: Ubuntu 10.04.4 LTS
    • Release: 10.04
    • Codename: lucid
  • less /etc/issue
    • Ubuntu 10.04.4 LTS 

Bit Version auslesen

  • getconf LONG_BIT
    • 64
  • dpkg --print-architecture
    • amd64

Version und Kernel auslesen

  • uname –a oder rm
    • Linux Hostname 2.4.32-41-server #89-Ubuntu SMP Fri Apr 12 21:31:11 UTC 2012 x86_64 GNU/Linux

Befehlsoptionen

  • -a, --all print all information, in the following order,
  • except omit -p and -i if unknown:
  • -s, --kernel-name print the kernel name
  • -n, --nodename print the network node hostname
  • -r, --kernel-release print the kernel release
  • -v, --kernel-version print the kernel version
  • -m, --machine print the machine hardware name
  • -p, --processor print the processor type or "unknown"
  • -i, --hardware-platform print the hardware platform or "unknown"
  • -o, --operating-system print the operating system