Subject: [bug#41066] [PATCH] gnu: bootloader: Support for chain loading.

From: Ludovic Courtès <[email-masked]>
Date: Mon, 26 Oct 2020 11:37:37 +0100

Hi,

Danny Milosavljevic <[email-masked]> skribis:

>> Sorry, I don’t see why this prevents an API that more closely matches
>> the idea of a chain of bootloaders (but perhaps I’d just need to spend
>> more time studying this.)
>
> It doesn't prevent that API--but this narrow use case here doesn't need it.
>
> And I do not intend to implement the general use case--we all decided against
> general chainloading and then introduced full support for bootloaders other
> than grub (which then do not chainload grub--they totally could have!).
>
> But this use case with lots of bootloaders on an ESP partition (or Raspberry Pi
> equivalent) is easy enough.  Maybe we should change the name of the main
> procedure to be less general, though.  "chain-esp-bootloaders" ?
>
> If you could check it out more, that would help.  I think how the patch is
> now is fine for the narrow use case: chainloading the normal guix bootloader
> using other bootloaders (or whatever else!  Maybe a turtle is loading the final
> guix bootloader--who knows ;) ).
>
> The code here can only chain bootloaders in the ESP partition (actually, the
> Raspberry Pi equivalent of the latter).

Oh got it, I thought it was about bootloader chaining “in general”,
apologies for the confusion!

> From the patch:
>
>>+(define (bootloader-profile packages package-contents files)
>>[...]
>>+  (profile (content (packages->manifest packages))
>>+           (name "bootloader-profile")
>>+           (hooks (list bootloader-collection))
>>+           (locales? #f)
>>+           (allow-collisions? #f)
>>+           (relative-symlinks? #f)))
>
> Maybe I don't understand what you mean... but that "profile" is from
> (guix profiles).

Oops, you’re right; my bad!

> In any case, maybe we should just call it "esp-bootloader-chain" or
> maybe just "raspberry-pi-bootloader-chain".

Yes, maybe that’d be clearer (perhaps the former, unless there’s
something really RPi-specific).

Thanks,
Ludo’.