Die Tage hatte ich zum ersten Mal seit ich Linux nutze einen Kernel Panic. Lustigerweise tangiert mich das nicht mehr so wie früher, weil ich mir immer sicher bin, dass das recht geräuschlos zu lösen ist. Ok und weil ich ein Backup habe.

Das einzige Aufregende war, dass ich an diesem Computer das BTRFS Filesystem teste. Und die Partition /dev/sda1 wollte nicht mehr booten.

Also der Kernel Panic leitet mich in den initramfs mit einer Busybox, in der ich ein paar Möglichkeiten habe etwas zu tun.

Nach 10 Minuten Internetrecherche und diversen Plausibilitätsprüfungen bezüglich des Datums der Beiträge (sollte nicht zu alt sein) und des Problems (sollte recht nah an der Fehlermeldung sein), fand ich die einfache Lösung

btrfs rescue zero-log /dev/sda1

Was ist zero-log?

zero-log <device>

Löschen Sie den Dateisystem-Protokollbaum.

Dieser Befehl löscht den Dateisystem-Protokollbaum. Dies kann bestimmte Probleme beheben, wenn das Dateisystem während der Protokollwiedergabe nicht gemountet werden kann. Nachfolgend finden Sie Beispiele für Stack-Traces, die im Systemprotokoll angezeigt werden können.

<strong>Hinweis</strong>
Das Löschen des Protokolls kann zum Verlust von Änderungen führen, die seit der letzten Transaktionsübernahme vorgenommen wurden. Dies kann bis zu 30 Sekunden (standardmäßige Übernahmeperiode) oder weniger dauern, wenn die Übernahme durch andere Dateisystemaktivitäten impliziert wurde.

Anhand des Kernel-Backtrace kann festgestellt werden, ob Zero-Log erforderlich ist:

    ? replay_one_dir_item+0xb5/0xb5 [btrfs]
    ? walk_log_tree+0x9c/0x19d [btrfs]
    ? btrfs_read_fs_root_no_radix+0x169/0x1a1 [btrfs]
    ? btrfs_recover_log_trees+0x195/0x29c [btrfs]
    ? replay_one_dir_item+0xb5/0xb5 [btrfs]
    ? btree_read_extent_buffer_pages+0x76/0xbc [btrfs]
    ? open_ctree+0xff6/0x132c [btrfs]

Wenn die Fehler wie oben beschrieben auftreten, sollte Zero-Log verwendet werden, um das Protokoll zu löschen, und das Dateisystem kann wieder normal gemountet werden. Die zu suchenden Schlüsselwörter sind „open_ctree“, was bedeutet, dass es sich um einen Fehler während des Mountens handelt, und Funktionsnamen, die „replay“, „recover“ oder „log_tree“ enthalten.

Mehr Infos zu zero-log findest du in der Dokumentation von BTRFS hier BTRFS Rescue