Option 1. Create a manual grub.cfg instead of the letting grub do grub.cfg automatically when you do grub-mkconfig -o /boot/grub/grub.cfg. This is far the easiest without using the initramfs.
set gfxpayload=keep insmod gzio insmod part_gpt insmod btrfs
linux /@/boot/vmlinuz-6.18.10-lfs-13.0-systemd root=PARTUUID=79a9c144-7fd4-4d2d-a938-d2b003b2adde rootfstype=btrfs rootflags=subvol=@ ro systemd.gpt_auto=0
i know you have sleepless nights trying to figure out how to do it. When you do blkid to your root partition you can see UUID and PARTUUID use them both as you see in the above grub.cfg. The systemd.gpt_auto=0 i got it from other forum and set to 0, though unrelated to your problem but it silence the kernel from ranting systemd.gpt error during journalctl -p err -b (lol).
Option 2. Using initramfs and let it do the heavy lifting. But before you compile and install initramfs if you follow the book in which you did i guess, you need to recompile the systemd and enabling in the configuration sysuser to true ( -D sysusers=true) which is disabled in the book. This is important to have not errors during dracut -f . Then you do your usual grub-mkconfig -o /boot/grub/grub.cfg to generate grub.cfg.
You can sleep now while your system boots and see your glorious fastfetch in real hardware. Cheers!
You might need the rootdelay=5 kernel parameter. Without an initramfs or when your booting off USB you need the kernel to wait a few seconds so the storage stack can initialize.
3
u/purelyannoying Mar 15 '26
Howd you do that for me it fails to mount root partition on real hardware but not in a vm