Just one little addition, based on my experience.

On 1/19/26 22:31, Denis 'GNUtoo' Carikli wrote:
On Sat, 17 Jan 2026 09:45:48 +0100
Personally I'm a bit confused with the status of the installer on ARM
(32 and 64bit), the manual advises to do that:
guix system image --system=armhf-linux -e \
'((@ (gnu system install) os-with-u-boot) \
   (@ (gnu system install) installation-os) \ "A20-OLinuXino-Lime2")'

But then we also have things like a20-olinuxino-lime-installation-os in
gnu/system/install.scm so I'm a bit lost in what is the way to go.

I think that the following make more sense though:
guix system build --target=arm-linux-gnueabihf \
-e '(@ (gnu system install) a20-olinuxino-lime2-emmc-installation-os)'

My two cents: I noticed that with `--target` a bash-static of the host can end up in target image.

I built an Aarch64 image for my Raspberry Pi (unfortunately including some binary blobs for now) from my x68_64 machine using `--target`. Then I dd'ed that image to an SD-card and could boot the Pi.

Unfortunately, the resulting Aarch64 glibc depended on the x86_64 bash-static (as well as on the Aarch64 bash-static). As a result, certain programs like 'loadkeys' would not work because they called bash for the wrong architecture. (I'm wondering how it choose between the two bash-statics.)

I reported the incorrect bash-static issue in https://codeberg.org/guix/guix/issues/5437, where I concluded this is by design, but reluctantly so it seems.

But I could just rebuilt everything on the Pi (with substitutes). Unfortunately I could not get X to work, which might have been a driver issue, and therefore probably a binary blob issue. So I decided not to pursue further for now, since one of my goals is to get away from those blobs.

The difference between --target (cross-compiling) and --system (native compilation on an emulator) is well described in the manual by the way. I did not try to use --system though.

Hugo


Reply via email to