Boot from snapshots missing from GRUB menu

So you apparently managed to hit two bugs at the same time. grub2-mkconfig has a bug that makes these commands fail and fall back to using stat -f that also fails. Wow. :slight_smile:

Edit /usr/sbin/grub2-mkconfig, somewhere around line 165 you will see

    # Filesystem for the device containing our userland.  Used for stuff like
    # choosing Hurd filesystem module.
    GRUB_FS="`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2> /dev/null || echo unknown`"
    # Device containing our userland.  Typically used for root= parameter.
    GRUB_DEVICE="`${grub_probe} --target=device /`"

swap these commands. It should be

    # Device containing our userland.  Typically used for root= parameter.
    GRUB_DEVICE="`${grub_probe} --target=device /`"
    # Filesystem for the device containing our userland.  Used for stuff like
    # choosing Hurd filesystem module.
    GRUB_FS="`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2> /dev/null || echo unknown`"

Or as patch

+++ /tmp/grub2-mkconfig	2024-03-24 15:05:26.580180259 +0300
@@ -162,11 +162,11 @@ if [ "x${NFSROOT_DEVICE}" != "x" ]; then
     GRUB_DEVICE_PARTUUID=""
     GRUB_FS="unknown"
 else
+    # Device containing our userland.  Typically used for root= parameter.
+    GRUB_DEVICE="`${grub_probe} --target=device /`"
     # Filesystem for the device containing our userland.  Used for stuff like
     # choosing Hurd filesystem module.
     GRUB_FS="`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2> /dev/null || echo unknown`"
-    # Device containing our userland.  Typically used for root= parameter.
-    GRUB_DEVICE="`${grub_probe} --target=device /`"
     GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true
     GRUB_DEVICE_PARTUUID="`${grub_probe} --device ${GRUB_DEVICE} --target=partuuid 2> /dev/null`" || true
 fi

You are using slowroll, so your version may be slightly different from Tumbleweed, but I expect the patch still applies if you prefer to use it.

After having edited the grub2-mkconfig, try running it and check the generated grub.cfg.

1 Like