Subject: bug#56582: Installer does not detect or allow detection of other bootable partitions

From: Josselin Poiret <[email-masked]>
Date: Thu, 21 Jul 2022 18:01:50 +0200

Hi Peter,

Peter <[email-masked]> writes:
> To expand on this, Guix installs GRUB. This is undeniable, and this is
> where the problem begins.. over many years users are accustomed to GRUB
> working in a certain way with specific tools.. when they encounter a grub
> installation without grub-mkconfig, etc. they are at a loss, because it's a
> binary they expected to find and it's just not present. I think an argument
> could be made here that this behaviour breaks user space because it's
> established software, but changed to function differently as opposed to
> being something entirely new. It's like wearing your shoes on the opposite
> foot. You can do it, but it feels wrong.

Those tools are unfortunately stateful, like grub-mkconfig using
osprober, so wouldn't be a good fit for Guix.  You could also argue that
the majority of people using GRUB don't even know how to use the grub
tools, or what they actually do.  I personally think that our GRUB
interface is elegant, while a bit incomplete.

> The way Debian and other distros manage Grub is via mkconfig, and the boot
> menu presented is very similar to Guix's, the only difference is that
> there's an extra row entry in the grub menu for the Windows bootloader to
> be launched.

If we had a way to add menu entries that chainload another bootloader,
then that would result in the same exact menu.  It shouldn't even be too
hard to add.

> Personally, I dislike Grub because I feel it complicates things. I would
> love to use only UEFI and use only the bios boot menu to switch, but for
> whatever reason in a single internal drive system, this isn't easily done.
> Giving an example, awhile back, I tried installing a distro to an external
> usb drive.. it worked.. but the problem is that it installed grub to the
> internal drive.. and if you removed the usb drive from the pc, things would
> break because now a device it was expecting to see wasn't there. A
> workaround suggested was to disconnect the internal drive, do the setup,
> this way Grub would be on the external drive, then reconnect the internal
> drive and then I guess use the bios uefi menu to switch between, a lot of
> bother for a tightly sealed unit.

You can (and should) specify which EFI partition you'd like to install
GRUB to.  You'd simply need to create a EFI partition on the removable
media, and add the --removable option as well so that GRUB is installed
in the default boot location (/EFI/BOOT/bootx64.efi) so that booting
from the drive actually boots that bootloader.

If you want to get rid of GRUB, you can also compile Linux with the EFI
stub, so that it can be started as a EFI application directly, and then
add a EFI boot entry for it.

> The way MS's bootloader works is nice because one of the menu options it
> has is to pick a physical device so you can actually boot from a valid
> bootable USB flash drive device and it launches that device directly.

Your UEFI boot menu should already do that, no need for that in a
bootloader IMO.

> Maybe the solution is just to create an EFI partition at the front of all
> drives including external as Apple does and then it doesn't matter what
> bootloader you use or do not use, because you could always just use the
> UEFI menu to point to a device. Not using a bootloader would reduce
> complexity of maintenance.. if MS's bootloader is there, people can use it
> if they want to point to the device, and if it is not there, then they can
> use the uefi bios menu. In theory.

Without the EFI stub, Linux needs a bootloader to load, and the windows
bootloader surely won't support booting Linux.

Best,
-- 
Josselin Poiret