Im Artikel vom 06.03.2024 ging es um den Linux Kernel. Nun sollen einige Experimente zum Kernel Backup durchgeführt werden…

Welcher Kernel ist im Einsatz?

Möchte man wissen welcher Kernel aktuell im Einsatz ist, kann folgender Terminalbefehl genutzt werden.

  • uname a

Als Ausgabe bekommt man dann so etwas wie: 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux Aktuell ist hier also der Kernel in der Version 4.15.0-39 im Einsatz.

Übersicht über installierte Kernel:

Eine Übersicht über die installierten Kernel und auch die bereits deinstallierten Kernel bietet folgender Terminalbefehl:

  • dpkg –get-selections | grep linux-image

Als Ausgabe gibt es dann an meinem Testsystem unter anderem folgendes:

  • linux-image-4.15.0-32-generic (deinstall)

Der Kernel in der Version 4.15.0.32 ist also bereits deinstalliert. Zufälligerweise habe ich aber von diesem Kernel ein Backup erstellt – also eine Sicherheitskopie.

Das Experiment:

Ziel dieses Experimentes ist es nun, den gesicherten alten Kernel wieder ins System einzuspielen. Der Kernel in der Version 4.15.0.32 soll also wieder als installierter Kernel aufgeführt werden und auch über den Bootmanager startbar sein.

Die vmlinuz-Dateien:

Zum Zeitpunkt dieses Experiments befanden sich drei vmlinuz-Dateien im Systemordner /boot. Diese drei Dateien werden auch im Terminal angezeigt. Zusätzlich aber auch eine Datei die nur “generic“ heißt…

Versuch 1:

Mit root-Rechten kopiere ich die gesicherte vmlinuz-Datei nun in den Ordner /boot. Anschließend prüfe ich mit dem Terminalbefehl dpkg –get-selections | grep linux-image ob das zurückgespielte Backup zumindest als installiert angezeigt wird. Wenn alles klappt, dann sollte jetzt auch der Kernel 4.15.0.32 als installiert angezeigt werden.

Ergebnis zu Versuch 1:

Klappt aus dem laufenden System noch nicht. Auch über Bootmanager Grub werden nur folgende Kernel angezeigt:

  • Kernel 4.15.0.39
  • Kernel 4.15.0.38
  • Kernel 4.15.0.36

Fehlt der initrd-Ordner?

Eventuell klappt es nur deshalb noch nicht weil der initrd-Ordner oder besser das CPIO-Archiv fehlt. Für den Kernel 4.15.0.36 werde ich also Kernel-Image und das zugehörige CPIO-Archiv sichern und dann einen zweiten Versuch durchführen…

Versuch 2:

Im Unterschied zu Versuch 1 wird nun die vmlinuz-Datei mit entsprechendem initrd-Ordner zurück-kopiert…Nach einem Update wurde Kernel 4.15.0.36 übrigens automatisch aus dem System entfernt – für diese Experimente also die perfekte Ausgangsbasis… Kernel 4.15.0.36 wird also mit “initrd.img-4.15.0-36-generic“ gemeinsam in den Systemordner /boot kopiert.

Ergebnis zu Versuch 2:

Vom “update-grub-Befehl“ wird der Kernel 4.15.0.36 schon erkannt. Nur noch nicht vom “get-selections-Befehl“… Ein kompletter Neustart des Rechners (kein Reboot) brachte einen ersten Erfolg. Über das Grub Bootmenü (Bootmanager) kann der Kernel 4.15.0.36 schon ausgewählt werden… Eine Überraschung gibt es auch. Der Kernel 4.15.0.32 wird vom Grub-Bootmanager auch angezeigt. Starten lässt sich dieser aber nicht – es fehlt dazu wohl doch der passende initrd-Ordner.

Von Torsten