Alte Kernel-Pakete entsorgen

Aus LinuxUser 10/2018

Alte Kernel-Pakete entsorgen

© Sebastian Duda, 123RF

Hausputz

Bei einem Update des Kernels bleibt die alte Version auf der Platte. Wer hier aufräumt, wird mit mehreren Hundert MByte freiem Plattenplatz belohnt.

Nichts bleibt wie es ist, alles entwickelt sich weiter. Das gilt auch für die Linux-Langzeitversionen, wie beispielsweise Ubuntu LTS und CentOS. Die wichtigsten Gründe für regelmäßige Updates liegen im Bereich der Sicherheit und der Fehlerbeseitigung. Da tut sich auch im Kernel was. Die Kernel-Patches für Spectre und Meltdown sind gute Beispiele hierfür.

Doch was passiert nach einem Update mit dem alten Kernel? Zunächst mal ist der Kernel ein ganz normales Softwarepaket. Er unterliegt damit der jeweiligen Softwareverwaltung und deren Tools; bei einem Debian- oder Ubuntu-System also Apt, bei auf Red Hat basierenden Systemen Rpm und dessen Freunde Yum und Dnf.

Genauer betrachtet, gibt es kein Update des Kernel-Pakets: Der Paketmanager ersetzt nicht einfach die alte Version gegen die neue, stattdessen wandert das neue Kernel-Paket zusätzlich zum vorigen auf die Platte. Meistens bleiben mehrere alte Versionen auf der Platte liegen (siehe Kasten “Zurückgedreht”) – da sammelt sich auf die Dauer einiges an.

Zurückgedreht

Der Linux-Kernel ist der Dreh- und Angelpunkt eines Linux-Systems. Er verwaltet unter anderem die Hardware-Ressourcen, ermöglicht den Zugriff auf die einzelnen Systemkomponenten und bietet Schnittstellen für die Systemkommunikation. Die vielfältigen Erscheinungsformen der Hardware stören mitunter die harmonische Zusammenarbeit. Im schlimmsten Fall bootet das System nach einem Kernel-Update nicht mehr. Sollte es nach dem Update Probleme geben, hilft vielleicht der alte Kernel weiter, zumindest bis zum nächsten Kernel-Update. Aus diesem Grund, behalten die meisten Distributionen eine, meist jedoch mehrere der vorhergehenden Kernel-Pakete auf der Platte.

Dieser Artikel zeigt, wie Sie alte Kernel-Images von Ihrem System entfernen. Als Referenzsysteme dienen Debian 9, Fedora 28, Ubuntu LTS 16.04 und CentOS 7.5. Die genannten Distributionen begrenzen von Haus aus die Anzahl der auf einem System installierten Kernel-Versionen – zumindest dann, wenn diese auf dem üblichen Weg auf das System gelangt sind, sprich: via Update. Für manuell installierte Versionen oder für zusätzliche, Kernel-nahe Pakete gilt das nicht oder zumindest nicht in vollem Umfang (siehe Kasten “Kernel-nahe Pakete”).

Im Rahmen dieses Artikels bezeichnet der Begriff “Kernel-Paket” alle zum Kernel gehörigen Pakete, inklusive der Kernel-nahen Pakete. Wie Abbildung 1 zeigt, belegen diese relativ viel Festplattenplatz.

Abbildung 1: Die Kernel-Header brauchen auch Platz (Debian).

Abbildung 1: Die Kernel-Header brauchen auch Platz (Debian).

Kernel-nahe Pakete

Kernel-nahe Pakte sind Pakete, deren Dateien direkt mit der Version des jeweiligen Kernels zusammenhängen. Dazu gehören beispielsweise die Kernel-Module, die beim Systemstart verwendeten RAM-Disks, bedarfsweise die Kernel-Header und mitunter ein paar direkt von der Kernel-Version abhängigen Zusatzprogramme. Welche dieser Komponenten in welchen Paketen stecken, bestimmt die jeweilige Distribution.

Hinweis: Die Softwareverwaltung merkt sich, welche Pakete installiert sind. Haben Sie beispielsweise die Kernel-Header installiert, gelangt das entsprechend neue Paket der Kernel-Header bei jedem Kernel-Update auf die Platte. Die vorhergehende Version behält das System wie schon beim eigentlichen Kernel bei.

Manuelles Entfernen

Der Umgang mit der auf dem System installierten Software unterliegt typischerweise der Paketverwaltung. Die zugehörigen Tools gelangen mit der Standardinstallation auf die Platte. Daher liegt es nahe, diese auch zu verwenden.

Das grundlegende Vorgehen ähnelt sich bei allen Distributionen: Zunächst ermitteln Sie die Version des laufenden und funktionierenden Kernels. Dieser soll auch nach dem Vorgang noch vorhanden sein. Anschließend lassen Sie sich alle Kernel-Pakete anzeigen. Im letzten Schritt löschen Sie die nicht mehr benötigten Pakete. Beachten Sie dabei die Hinweise aus dem Kasten “Achtung”.

Achtung

Im Umgang mit dem Paketverwaltungssystem kann es zu Problemen und zu Datenverlust kommen. Nehmen Sie daher vor dem Löschen alter Kernel-Versionen eine Datensicherung vor.

Einige Distributionen erlauben das Löschen der aktuellen Kernel-Version. Beachten Sie daher unbedingt die Bildschirmausgaben. Löschen Sie nicht den letzten funktionierenden Kernel. Deinstallieren Sie ältere Kernel-Versionen nur von einem funktionierenden System aus.

Verwenden Sie die abstrahierten Kommandos des Paketmanagements, beispielsweise bei CentOS das Kommando yum anstelle von rpm. Die abstrahierten Kommandos geben vor dem Ausführen der Aktionen eine entsprechende Übersicht aus und ermöglichen an dieser Stelle einen Abbruch.

Ermitteln der laufenden Version

Typischerweise zeigt der Bootloader, meist Grub, beim Systemstart eine Auswahl mit den installierten Kernel-Versionen an. Bei den auf Red Hat basierenden Versionen erfolgt diese Ausgabe direkt, bei Debian erscheint die Liste im Bereich Erweiterte Optionen …, bei Ubuntu ist sie gar erst nach dem Betätigen der Umschalttaste zu sehen (Abbildung 2).

Abbildung 2: Debian liefert in den <span class="ui-element">Erweiterten Optionen</span> eine vollst&auml;ndige Liste der installierten Kernel-Versionen.

Abbildung 2: Debian liefert in den Erweiterten Optionen eine vollständige Liste der installierten Kernel-Versionen.

Das bei allen Distributionen verfügbare Kommando uname -r, zeigt die Version des laufenden Kernels an. Die Ausgabe eines Debian-Systems sehen Sie in Listing 1.

Listing 1

$ uname -r
4.9.0-6-rt-amd64

Paketdienst

Die betrachteten Distributionen unterscheiden sich bezüglich der vorhandenen Tools, dem Namen und dem Inhalt der Kernel-Pakete. Die Tabelle “Ermitteln der Paketnamen” gibt eine nach Distributionen getrennte Übersicht über mögliche Kommandos zum Ermitteln der Paketnamen. Die in der Tabelle aufgeführten Kommandos liefern die vollständigen Namen. Schon aus dem Namen der Pakete lässt sich schließen, dass es sich um Kernel-Pakete oder -Komponenten handelt.

Distribution

Kommando

Beispiele für Paketnamen

CentOS

rpm -qa "kernel*

kernel-3.10.0-862.9.1, kernel-headers-3.10.0-862.9.1, kernel-devel-3.10.0-862.9.1

Fedora

rpm -qa "kernel*"

kernel-4.16.3-301, kernel-modules-4.16.3-301, kernel-devel-4.16.3-301

Debian

apt list --installed linux-*

linux-image-4.9.0-6-amd64, linux-headers-4.9.0-4-amd64

Ubuntu LTS

apt list --installed linux-*

linux-image-4.15.0-30-generic, linux-headers-4.15.0-30-generic, linux-image-extra-4.15.0-15-generic

Platz frei

Haben Sie die Vorbereitungen abgeschlossen, geht es an das Entfernen der nicht mehr benötigten Pakete. Dank der Funktion “Autovervollständigen” mit der Tabulatortaste, die auch bei der Eingabe des Paketnamens ihren Dienst verrichtet, und der Linux-typischen Mausfunktion “Kopieren-Einfügen” über die mittlere Maustaste ist der Umgang mit den langen Dateinamen kein Problem.

Die Tabelle “Kernel-Pakete entfernen” zeigt einige Kommandos zum Löschen der Kernel-Pakete. Dazu benötigen Sie, wie bei allen aktiven Tätigkeiten der Paketverwaltung, Root-Rechte auf dem System. Diese erhalten Sie beispielsweise, indem Sie den Kommandos ein sudo voranstellen.

Distribution

Kommando

Aufrufbeispiel

mit Wildcard

CentOS

yum remove Paket

yum remove kernel-3.10.0-693.2.2 kernel-devel-3.10.0-693.2.2

yum remove "kernel*3.10.0-693*"

Fedora

dnf remove Paket

dnf remove kernel-4.16.16-300 kernel-core-4.16.16-300

dnf remove "kernel*4.16.16-300*"

Debian

apt purge Paket

apt purge linux-image-4.9.0-3

apt purge linux-*4.9.0-3-rt*

Ubuntu LTS

apt purge Paket

apt purge linux-image-4.9.0-3

apt purge linux-*4.9.0-3-rt*

Die Tatsache, dass die Kernel-Pakete innerhalb einer Distribution typischerweise mit einem einheitlichen Namen beginnen und dass die Kommandos Wildcards erlauben, ermöglicht das Löschen aller Kernel-Pakete einer Version in einem verkürzten Aufruf. Die letzte Spalte der Tabelle zeigt entsprechende Beispiele. Bei Bedarf erweitern Sie den Aufruf um weitere Pakete oder Wildcards.

Die gezeigten Kommandos listen vor der eigentlichen Aktion eine Übersicht über die folgenden Aktionen auf. Achten Sie beim Einsatz von Wildcards ganz besonders auf diese Ausgaben, und brechen Sie notfalls die Aktion ab. Alle Kommandos unterstützen die Angabe mehrerer Pakete. Das Entfernen einer Kernel-Version löscht den zugehörigen Eintrag ebenfalls aus dem Bootmenü.

Einige Distributionen ziehen “logische Schlüsse” und löschen mitunter mehr Pakete als angegeben. So führt bei Fedora das Löschen der Kernel-Module oder das der kernel-core-Pakete ebenso zum Löschen des Kernels (Abbildung 3).

Abbildung 3: Fedora &ndash; das L&ouml;schen der Module f&uuml;hrt zum L&ouml;schen weiterer Pakete.

Abbildung 3: Fedora – das Löschen der Module führt zum Löschen weiterer Pakete.

Die einzelnen Distributionen bringen teilweise eigene Tools für den Umgang mit den Kernel-Paketen mit. Einige davon sind in den folgenden Abschnitten gezeigt.

Fedora und CentOS

Fedora begrenzt die Anzahl der installierten Kernel-Pakete im Standard auf 3, CentOS auf 5. Der Wert der Variablen installonly_limit bestimmt die Anzahl. Unter Installonly-Pakete versteht Fedora über die Paketverwaltung installierbare Pakete, die jedoch kein Update erhalten.

Fedora setzt den Wert in der Datei /etc/dnf/dnf.conf, CentOS in der Datei /etc/yum.conf. Belassen Sie diesen Wert bei 2 oder höher, so bleibt immer ein Rückidifall-Kernel auf der Platte [1]. Zum Bearbeiten der genannten Dateien benötigen Sie Root-Rechte [2]. Erstellen Sie als Erstes eine Sicherheitskopie.

Mit dem Tool Package-config aus dem Paket yum-utils bringt CentOS eine einfache Möglichkeit zum Löschen vorhergehender Kernel-Pakete mit. Die Installation des Pakets yum-utils erfolgt mit sudo yum install yum-utils. Das Kommando sudo package-cleanup --oldkernels --count=2 löscht alle Kernel-Pakete bis auf die letzten beiden.

Debian und Freunde

Das Programm Synaptic ist Bestandteil vieler auf Debian basierender Distributionen. Die Installation erfolgt mit sudo apt install synaptic. Der Aufruf erfolgt distributionsabhängig entweder mit Synaptic oder mit Synaptic-pkexec. Alternativ starten Sie die Synaptic über das Anwendungsmenü.

Debian-Automatik

Benötigt eine Software weitere Pakete als Abhängigkeit (etwa Bibliotheken für erweiterte Funktionen) spielt die Paketverwaltung diese automatisch bei der Installation der Anwendung mit ein. Entfernen Sie das Programm wieder aus dem System, bleiben diese zusätzlichen Pakete oft ohne einen Nutzen als verwaiste Pakete auf der Festplatte zurück.

Die Paketverwaltung aller auf Debian basierender Distributionen (also auch Ubuntu oder Linux Mint) kennt mit dem Kommando sudo apt autoremove --purge eine Routine, um das System von solch einem unnötigen Ballast zu befreien. Neben den verwaisten Paketen räumt das Kommando dabei auch bei den Kerneln auf (Abbildung 4). Die Automatik behält den aktuellen sowie den vorletzten Kernel im System.

Sollte die Routine die veralteten Kernel ignorieren, liegt es eventuell daran, dass diese als “manuell installiert” markiert wurden. Das Kommando apt-mark showmanual | grep linux-image listet die entsprechenden Pakete auf (und filtert gleich die Kernel-Pakete heraus). Ändern Sie anschließend mit apt-mark auto Paketname den Status, müsste der Hausmeister nun auch bei den Kernel-Paketen aufräumen.

Abbildung 4: Das Kommando <code>apt autoremove</code> r&auml;umt bei Debian und seinen Abk&ouml;mmlingen nicht mehr ben&ouml;tigte Pakete von der Festplatte.

Abbildung 4: Das Kommando apt autoremove räumt bei Debian und seinen Abkömmlingen nicht mehr benötigte Pakete von der Festplatte.

Auch hier empfiehlt es sich zunächst, mittels uname -r die Version des aktuell laufenden Kernels zu ermitteln. Starten Sie Synaptic, und setzen Sie im linken Bereich des Fensters den Status auf Installiert, aktivieren Sie mit einem Klick den Bereich, in dem die Pakete aufgelistet sind, und tippen Sie linux ein. Auf diese Weise gelangen Sie schnell zu den Kernel-Paketen.

Markieren Sie die Pakete (*image*, *header*, etc.) der alten Versionen und wählen im Kontextmenü (rechte Maustaste) den Eintrag Zum vollständigen Entfernen vormerken (Abbildung 5). Der Klick auf Anwenden startet die Deinstallation.

Abbildung 5: Grafisch gef&uuml;hrte Software-Verwaltung mit Synaptic.

Abbildung 5: Grafisch geführte Software-Verwaltung mit Synaptic.

Fazit

Für den gewöhnlichen Einsatz genügt das automatische Management bezüglich der Kernel-Pakete durchaus. Im Umgang mit den Kernel-nahen Paketen zeigt die Automatik allerdings teilweise einige Schwächen. Manuell installierte Kernel-Pakete unterliegen der erwähnten Automatik meist gar nicht – das ist allerdings auch so gewollt.

Bringen Sie Kernel-Pakete von Hand auf die Platte, empfiehlt es sich, das System von Zeit zu Zeit auf veraltete Pakete hin zu durchsuchen. Für alle, die mal schnell Platz brauchen und auf die vorhergehenden Kernel-Versionen verzichten können, hilft das Entfernen der relativ großen Kernel-Pakete kurzfristig weiter. 

Der Autor

Roman Jordan arbeitet seit über 20 Jahren mit Linux. Seine Schwerpunkte liegen in den Bereichen Linux-Kernel und der Programmierung kleiner Embedded-Plattformen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 10/2018 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben