Subject: Re: bug#45517: Failed boot on arm32 with u-boot due to missing requirements with the distro boot protocol

From: Danny Milosavljevic <[email-masked]>
Date: Sun, 3 Jan 2021 23:15:01 +0100

Hi Mathieu,

On Sat, 02 Jan 2021 11:23:24 +0100
Mathieu Othacehe <[email-masked]> wrote:

> > Thanks a lot, that works fine.  
> 
> Glad it works! Maybe we should consider creating a
> gnu/system/images/lime.scm file in the future.

Sure.

I think that Allwinner boards are all similar enough in booting that we could
just have a gnu/system/images/allwinner.scm to support them all--except for
the u-boot package reference they are all the same.

Later Allwinner boards added a reference to an alternative boot sector[1]
for the first part of u-boot into boot ROM *in addition* to the old one--so
even those would still work!

Long story short, all of the Allwinner boards can inherit from the same
allwinner image type--with only the u-boot package (not even the
bootloader-installer) swapped out.

We could have a gnu/system/images/olinuxino-lime2.scm which would inherit
from that common thing somehow (and which would thus have about two lines
of source code total).

But there's a reason I added OS-WITH-U-BOOT and that's because of things
like this.  It can adapt any existing operating-system image, swapping out
the bootloader by an u-boot with a random u-boot board config name and
compile it for a given architecture.

It would be nice to have it integrated into the Guix image generation
process somehow, if possible.  

By automatically calling OS-WITH-U-BOOT (as a fallback), we could avoid ending
up with 1273 similar files in gnu/system/images.  Guix would just call
os-with-u-boot dynamically to generate those image types at runtime
that don't have a special one in that directory.

WDYT?

[1] https://linux-sunxi.org/Bootable_SD_card#SD_Card_Layout