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. ![]()
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.