On Tue, May 28, 2019 at 2:46 PM Samuel Sieb samuel@sieb.net wrote:
The /boot partition can be anywhere. I generally don't even create a separate partition, it's just included in /. But if you're wanting to share it, it would need to be separate.
Or mount Fedora n-1 root (somewhere in /run ?) and then bind mount its boot directory to /boot. Frankenfstab? I mean, yeah, you want a separate boot volume if you want grub to have a big picture view of multiple Fedoras; or for that matter any other distro that conforms to bootloaderspec. The reality is the interoperability of bootloaderspec has problems. Similar to GRUB upstream, Fedora's 200+ patches rather makes it like a Fedora specific fork; whereas the bootloaderspec is not exactly implemented by Fedora either. Arguably Fedora's implementation is a superset of the original, because kernel packages detect the use of sd-boot somehow, and will write the bls *conf files to the EFI system volume, which is where sd-boot expects them. Whereas our GRUB blscfg.mod (not upstreamed) will see them most anywhere, I think, which is actually mainly a GRUB feature because it can read files across multiple physical devices. sd-boot does not, and bootloaderspec follows that lineage, where the kernel+initramfs+bootloader *conf files, all exist on the same volume with no way to reference any other volume.
So, couldn't there be a utility, which when the user points it at an alternate installation, it creates a link in the boot volume with priority. The way grub(1) used to do with the configfile entry.
You can still do that. Even with BLS I would expect you could add an entry in the static part of the grub.cfg to point to the other installation.
Yes, you can do that in grub.cfg - strictly speaking it should be done with either 40_custom or 41_custom so that if you did regenerate grub.cfg with grub-mkconfig, you'd still get your 'configfile' forwarder in the new grub.cfg instead of stepping on it.
Another gotcha is on UEFI, the older Fedora during software updates will (rarely) need to update the bootloader which will step on the binary files in /boot/efi/EFI/fedora, which isn't the end of the world but it's probably better if the old Fedora /etc/fstab is modified to remove the automount of /boot/efi so that the EFI System partition isn't ever updated except by the new Fedora.
For a single large boot directory for all OSs on the system, couldn't there be a directory for each OS, allowing for both update and a boot selection screen (a menu of available OSs).
Probably, but you would somehow have to convince each OS install to update its own part.
The EFI system partition location EFI/fedora where we put bootloaders and grub.cfg is basically hardwired. There isn't a way to rename it, e.g. EFI/fedora30 and EFI/fedora31 and keep all the bootloader stuff separate. At least not that I'm aware of - I mean, anything is possible, how invasive that is I have no idea.
The advantage of Fedora's variant of bootloader spec is regardless of UEFI or BIOS, the bootloader menu entries are in the same place: /boot/loader/entries which is on the boot volume mounted at /boot. If you do custom installation on UEFI and BIOS to use a directory instead of separate boot, it's still /boot/loader/entries which happens to be on the root volume mounted at / - so it's the same, BIOS or UEFI.
This kinda gets us away from the confusion of UEFI's grub.cfg being in a different place than on BIOS (which is still true with BLS feature, but grub.cfg is now a static file that we don't really care about anymore in the typical case; so most conversations about menu entries and boot parameters don't need to be firmware specific until you get suspicious the problem relates to it.