Does this do what you want? (But only half of it.)
If I’m wrong, please laugh and forgive me.
“saved” doesn’t work with BTRFS. This is by design.
The workaround is to use EXT4 for /boot etc.
However, since it’s not a simple configuration, backups will be a pain.
and
my /etc/default/grub with BTRFS (part of head)
GRUB_SAVEDEFAULT=false #true
GRUB_DEFAULT="1>0" #memo advanced 1st
# GRUB_DEFAULT="1>2" #memo advanced 3rd recover
# GRUB_DEFAULT="saved"
# GRUB_DEFAULT="0"
https://wiki.archlinux.org/title/GRUB/Tips_and_tricks
Changing the default menu entry
Changing the default menu entry
To change the default selected entry, edit /etc/default/grub and change the value of GRUB_DEFAULT:
Using menu titles:
GRUB_DEFAULT=‘Advanced options for Arch Linux>Arch Linux, with Linux linux’
Note: If you are using a non-English locale, the generated menu title may be different from the example above. It might be a good idea to add LANG=C above the GRUB_DEFAULT line, or set GRUB_DEFAULT according to the correct title in your locale.
Using numbers:
GRUB_DEFAULT=“1>2”
Grub identifies entries in the generated menu (i.e. /boot/grub/grub.cfg) counted from zero. That means 0 for the first entry which is the default value, 1 for the second and so on. Main and submenu entries are separated by a > and are both identified by a number, title, or ID.
The example above boots the third entry from the main menu ‘Advanced options for Arch Linux’.
Using IDs (see value after --id or $menuentry_id_option in grub.cfg if generating your grub.cfg):
GRUB_DEFAULT=“gnulinux-advanced-39c666d6-c7fc-4fa6-8287-9540056f5a02>gnulinux-linux-zen-advanced-39c666d6-c7fc-4fa6-8287-9540056f5a02”
Documentation of all three identifier methods: GNU GRUB Manual 2.12: default
“sparse file not allowed” with BTRFS
cf. sparse file not allowed
- GRUB error: sparse file not allowed
- Error: sparse file not allowed. - press any key to continue booting - Kernel, boot, graphics & hardware - EndeavourOS
- https://www.reddit.com/r/linuxquestions/comments/x2gag1/grub_says_sparse_file_not_allowed/
- SOLVED grub error loadenv sparse files not allowed - Fedora Discussion