Title says it all. I changed my btrfs subvol names so I could use timeshift to manage my snapshots, after regenerating the initramfs and editing grub to point to the new subvol names all was fine however after I got a kernel upgrade recently, the latest grub entry for the kernel specifies the old subvol name, resulting in a failed boot. I dont know grub well enough to know what options to add to /etc/default/grub, or even if thats where I need to add it. After editing the entry manually it boots perfectly fine so theres my question. Is there a grub config option to specify the name for a subvolume to boot? I’d rather not manually edit grub.cfg every time theres a kernel update lol.
check the
GRUB_CMDLINE_LINUX
key in/etc/default/grub
it should contain the info about any subvolume. if it does not then there might be another grub config hook that is used by Fedora to add that info. If you want to be able to change subvol names without having to touch the grub config you might also want to switch to usingsubvolid
instead ofsubvol
keys on the kernel command line, because the id will stay the same after a rename (this could backfire though if you assign functions to certain names like “fallback” etc.).Edit: found the hook that adds the kernel command line option for btrfs subvolumes. in
/etc/grub.d/10_linux
there is this bit of code:case x"$GRUB_FS" in xbtrfs) rootsubvol="`make_system_path_relative_to_its_root /`" rootsubvol="${rootsubvol#/}" if [ "x${rootsubvol}" != x ]; then GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}" fi;; xzfs) [skipped for brevity] ;; esac
so it seems it is always looking at the subvol name of the currently mounted root fs.
Thank you man, I dont understand much of the syntax (like at all) but i figured if I just change the subvol from the variable to the name of my root it would work, and it did. Jank as fuck but hey, its my system aha. Appreciate you man
It’s just the basic posix shell syntax. It just looks weird because they are using lots of library functions and in-place substitutions. also apparently the function, to translate a system path to something grub will understand, is an ELF binary 0_o