Multiboot on the same btrfs partition

I am trying to create a multiboot system that has multiple Linux instances that share the same btrfs partition. The disk has 3 partitions, a 1gb EFI(FAT32) partition, a 1.8TB BTRFS partition and a 12gb swap partition.

I have gotten the steps to do this memorized for Ubuntu variants, basically these are the steps:

  1. Install the OS using the manual partitioning method, don’t format the partition
  2. Reboot to ensure that it boots correctly
  3. Reboot into my main distro
  4. Rename ‘@ => @{distro}’ and ‘@home => @{distro}-home’
  5. Update ‘/etc/fstab’ to mount the new subvols
  6. Mount the new ‘@{distro}’ subvol at ‘/mnt’
  7. Mount the EFI → /boot/efi, /dev, /dev/pts, /proc and /sys then chroot to /mnt
  8. Run ‘update-grub’
  9. Exit chroot and umount all /mnt stuff
  10. Add menu entry to ‘/etc/grub.d/40-custom’ file

This method has worked and I have Zorin, Manjaro, Linux Mint and Ubuntu all installed and bootable on the same btrfs partition.

Now I want to get some Fedora based distros installed, starting with Nobara. I started on the Ubuntu steps but it fails at #2, it doesn’t even try to boot into Nobara and boots my main distro. So I boot into my main distro and mount the ‘@’ subvol to inspect the grub file, it doesn’t contain an entry for Nobara, it contains all the entries from the OS prober.

I got tired of waiting a billion years for my Dell R7910 to reboot every time I wanted to test something so I switched to my laptop and spun up a Hyper V VM, installed Zorin, then installed Nobara. So I get the same symptom, after a reboot it doesn’t attempt to boot Nobara and instead boots Zorin. But from the boot menu of the VM I now see an EFI boot option for Nobara, if I select it, I see a grub menu that lists my Zorin OS and its kernels, not options to boot Nobara.

Any ideas what I am missing?

A couple of things. On Fedora, with the blivet-gui, you won’t have to rename anything. It will allow you to install directly into the existing btrfs partition with whatever naming standards you prefer.

As for Nobara, it uses a completely different installer and install method than Fedora so you would probably need to ask about that over at Nobara, not here.

As a test I installed Fedora Workstation on my VM, it will actually boot, it gives me a shimx64.efi entry that lets it boot. I am super confused by how Fedora boots, whether it even uses Grub or not. The grub.cfg file generated from grub2-mkconfig doesn’t even mention anything except all my Ubuntu based distros.

It does use grub but it is a bit different as it trying to use the boot loader specification(BLS).

Read the docs on grubby for more info.

Thanks for the hint that this is possible. I copied a Debian VM into a subvolume under Fedora 38, adapted and updated under chroot, and got a new initramfs for free after update. The Fedora 38 grub found and added Debian and it works. After installing some nonfree firmware I’ve a dual boot system without the hassle of repartioning.
So Fedora 38 grub looks into subvolumes to find Linux distros, the Debian grub does not so is not able to find Fedora.
So keeping the Fedora bootloader as standard and updating this after each distro install is probably not a bad idea.
However, Fedora is NOT in Fedora’s grub.cfg because of GRUB_ENABLE_BLSCFG=“true”
in /etc/default/grub.

The lines:
insmod blscfg

in grub2.cfg take care of all Fedira entries in the grub menu from /boot/loader files.

You can help other distribution’s grub-mkconfig finding Fedora, if they support btrfs,
by setting this option to false and get an old style grub.cfg.
I do not know Nobara, so may be there are differences to real Fedora.