Einen Editor verwenden, optional
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.
Zuerst ermittelt man den aktiven Kernel, damit dieser nicht versehentlich entfernt wird:
uname -a
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.
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
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.
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.
In manchen Situationen (keine Inodes frei) können mit dpkg
keine Pakete entfernt werden. Wie man dann Abhilfe schafft, steht im Artikel Festplatten Problembehebung.
Diese Revision wurde am 3. Dezember 2016 08:19 von aasche erstellt.