Skripte/Alte Kernel entfernen

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Ein Terminal öffnen

  2. ⚓︎ Einen Editor verwenden, optional

Inhaltsverzeichnis
  1. Voraussetzungen
  2. Zu entfernende Kernel ermitteln
  3. Deinstallation alter Kernel
  4. Bestimmte Kernel behalten
  5. Kein Speicherplatz mehr frei
  6. Links

Betreibt man ein Ubuntu-System über einen längeren Zeitraum, so häufen sich die verschiedenen Kernel-Versionen an. Da ein Kernel zusammen mit Header-Dateien und Kernel-Modulen einiges an Platz auf der Festplatte belegen kann (ca. 200 MiB), sollte man im Rahmen der Systempflege bei Gelegenheit ältere Kernelversionen, die man nicht mehr nutzt, von Hand deinstallieren. Besonders wichtig ist das bei verschlüsselten Systemen, die für /boot eine eigene Partition nutzen: ist diese voll belegt, können Kernel-Aktualisierungen nicht mehr automatisch installiert werden.

Zum Entfernen nicht mehr benötigter Kernel gibt es mehrere Möglichkeiten. Wenn die Standard-Methoden nicht zum gewünschten Ergebnis führen und sehr viele alte Kernel vorhanden sind, dann ist es relativ zeitaufwendig, diese einzeln zu entfernen. Hier kann die folgende Anleitung weiterhelfen.

Voraussetzungen

Zuerst ermittelt man den aktiven Kernel, damit dieser nicht versehentlich entfernt wird:

uname -a 

Zu entfernende Kernel ermitteln

Mit dem Befehl [1]:

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | tee zu_entfernende_Kernel 

werden alle alten Kernel einschließlich der Header-Dateien bis auf den aktuellen aufgelistet sowie eine Kopie dieser Liste in der Datei zu_entfernende_Kernel gespeichert.

Deinstallation alter Kernel

Die Deinstallation der veralteten Kernel-Versionen leitet man nun mittels

cat zu_entfernende_Kernel | xargs sudo apt-get -y purge 

ein, um das System von nicht mehr benötigten Kernel-Versionen zu bereinigen. Nach erfolgter Deinstallation wird die temporär angelegte Liste gelöscht:

rm zu_entfernende_Kernel 

Bestimmte Kernel behalten

Möchte man mehrere der aufgelisteten Kernel behalten, um z.B. im Notfall auf bestimmte stabil laufende Kernel zurückgreifen zu können, öffnet man die erzeugte Liste zu_entfernende_Kernel mit einem Editor [2] und entfernt dort die Einträge derjenigen Kernel-Versionen, welche man behalten möchte. Hierbei ist zu beachten, dass zu einer Kernel-Version in der Regel mehrere Einträge gehören. Enthält die Liste schließlich nur noch Kernel-Versionen, welche man entfernen möchte, speichert man sie und verlässt den Editor.

Kein Speicherplatz mehr frei

In der Praxis kann es auch zu folgendem Sonderfall kommen: Es sollen Aktualisierungen installiert werden, aber auf der separaten /boot-Partition ist kein Speicherplatz mehr frei oder es sind keine freien Inodes mehr vorhanden. Die Paketverwaltung APT meldet beim Versuch, einen älteren Kernel zu deinstallieren, folgenden Fehler:

gzip: stdout: No space left on device

Nicht mehr benötigte Kernel sollten dann mittels dpkg entfernt werden. Dazu ermittelt man zunächst die nicht mehr benötigten Kernelversionen:

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' 

Nach Prüfung können die Kernelversionen dann entfernt werden:

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo dpkg -P 

Anschließend sollte noch kontrolliert werden, ob ggf. fehlerhafte oder unvollständig installierte Pakete vorhanden sind:

dpkg -l linux-[ihs]* | sed '1,6d'| grep -vE '^ii|^un|^rc' 

Falls die Ausgabe nicht leer ist, sollten die fehlenden/unkonfigurierten Pakete mittels:

sudo apt-get -f install 

nachinstalliert werden.

Je nachdem, wie lange bereits keine Aktualisierungen mehr eingespielt werden können, kann es vorkommen, dass nach der getätigten Aktualisierung erneut kein Speicherplatz mehr zur Verfügung steht. Dann sollten die aufgeführten Schritte wiederholt werden.

Hinweis:

In manchen Situationen (keine Inodes frei) können mit dpkg keine Pakete entfernt werden. Wie man dann Abhilfe schafft, steht im Artikel Festplatten Problembehebung (Abschnitt „Dateisystem-voll“).