Tripleboot Windows, Fedora Silverblue & Fedora Workstation?

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

Googling & trying to understand old bugzilla reports like https://bugzilla.redhat.com/show_bug.cgi?id=1488204 and 1598523 – Make BootLoaderSpec-style configuration files the default suggest it might not be so simple.
I have to admit I am very unfamailiar with everything related to (U)EFI.

What would be the best way to get back a entry in grub to boot my Fedora Silverblue install on /dev/nvme0n1p8 ?

Many thanks for your help

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.

It is not supported in grub in 2different version of fedora it won’t register. It is a kind of bug you can post a bugreport in redhat bugzilla.

Hi, please open terminal:

# 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.

3 Likes

Thank you so much ! it worked perfectly :laughing:

Funny, I was just reading about Grub2, EFI (long overdue…) & starting to understand that something like that might work :sweat_smile: