On Tue, May 28, 2019 at 2:46 PM Samuel Sieb <samuel(a)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.
--
Chris Murphy