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