I was running Fedora Silverblue but had to install Fedora Workstation alongside.
I now have lost the ability to boot my Fedora Silverblue install.
Here is how my partitions look like :
Device Size Type
/dev/nvme0n1p1 260M EFI System <-- /boot/efi
/dev/nvme0n1p2 16M Microsoft reserved
/dev/nvme0n1p3 88G Microsoft basic data
/dev/nvme0n1p4 1G Windows recovery environm
/dev/nvme0n1p5 18.2G Windows recovery environm
/dev/nvme0n1p6 1G unknown
/dev/nvme0n1p7 1G Linux filesystem <-- /boot for Fedora Silverblue
/dev/nvme0n1p8 450G Linux filesystem <-- Fedora Silverblue
/dev/nvme0n1p9 1G Linux filesystem <-- /boot for Fedora Workstation
/dev/nvme0n1p10 50G Linux filesystem <-- Fedora Workstation
and looking at what I have in /boot/efi
$ sudo ls /boot/efi/EFI/
Boot fedora Microsoft
So I ran grub2-mkconfig hoping my Fedora Silverblue install would be detected but no luck, it only detect Windows…
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
done
This is likely an issue with how grub is installed and configured. Since fedora workstation was installed last, and both silverblue and workstation use the same /boot/efi/EFI/fedora directory, the configs for silverblue were probably overwritten by the config for workstation.
I have never tried using 2 different versions of fedora on the same hardware, but have seen discussions about similar issues by users booting various different flavors of debian/ubuntu and their derivatives on the linuxquestions forum. I use VMs for running different versions, and currently have fedora 35, 36, & rawhide in VMs on my fedora 34 workstation.
# Run as root
sudo su
# Go to EFI directory.
cd /boot/efi/EFI
# In this directory you should have folder `fedora`. Copy it as `silverblue`
# then go under `silverblue` folder.
cp -r fedora silverblue
cd silverblue
# Open and edit `grub.cfg` under `silverblue` directory.
nano grub.cfg
# Replace UUID you find inside the `grub.cfg` with the UUID of your `nvme0n1p7`.
# From your `lsblk` look like `nvme0n1p7` is where your partition for `/boot` for
# your `silverblue`.
# Bellow are content example of your `grub.cfg` under `silverblue` directory.
search --no-floppy --fs-uuid --set=dev <UUID-OF-nvme0n1p7-where-/boot-located>
set prefix=($dev)/grub2
export $prefix
configfile $prefix/grub.cfg
# Then run `efibootmgr` to add the `silverblue` folder to efi system.
# Please be aware of `\\` as escapes char.
efibootmgr -c -d /dev/nvme0n1p1 -L silverblue -l \\EFI\\silverblue\\shimx64.efi
The only way to switch between two Fedora linux are from BIOS boot list (OS Prober most likely not work and if it can detect the second Fedora, it will give error on booting due to limitation with secure boot things).
Or if you familiar with efibootmgr you could use sudo efibootmgr -n <bootnum> or change the boot order with sudo efibootmgr -o <list of boot order> and it will switch to other OS on next boot.
Edit:
Change the -d parameter of efibootmgr above to EFI partition.