Silverblue boots by storing the boot entries as BLS files under /boot/loader/entries. These entries are then read by /etc/grub.d/15_ostree and converted to grub.cfg.
In addition, Fedora 30/31 also use BLS files, but they use them a bit differently: the GRUB bootloader has a blscfg module that parses the BLS files and adds the entries to the menu during boot, rather than having them pre-generated in grub.cfg.
Based on this, I think you can boot to Silverblue like so:
- Open a command prompt from the GRUB boot menu.
- Run
insmod ext2 to ensure GRUB can read ext* partitions.
- Use
ls to list all the available partitions (they’re usually in the format (hdA,gptB), where A is the disk number and B is the partition number).
- Use
ls (hdA,gptB)/loader/entries on partitions. If the command succeeds for a partition and the files it shows are named such as ostree-N-fedora.conf, then you’ve found the Silverblue boot partition.
- Run
set root=(hdA,gptB), where A and B are the disk and partition number of the Silverblue boot partition.
- Run
insmod blscfg and blscfg.
- Exit the GRUB prompt.
Now, hopefully, your Silverblue boot entries will appear in the boot menu. Once you’re in Silverblue, you can run grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg to re-generate the GRUb config…but this may not show Fedora 31 anymore.