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.

  • user134450@feddit.de
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    10 months ago

    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 using subvolid instead of subvol 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.

    • Sharp312OP
      link
      fedilink
      arrow-up
      1
      ·
      10 months ago

      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

      • user134450@feddit.de
        link
        fedilink
        English
        arrow-up
        2
        ·
        10 months ago

        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

    • Sharp312OP
      link
      fedilink
      arrow-up
      1
      ·
      10 months ago

      Really useful info here, didnt even know grubby was a thing. I came from arch and grub seems to work quite differently on fedora. Thanks for the link. Didnt have anything that could help me this time but luckily @user134450@feddit.de knows a bit more than me and was able to find where the issue was.