[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: getting crazy with arm build

From: pelzflorian (Florian Pelz)
Subject: Re: getting crazy with arm build
Date: Wed, 8 Dec 2021 12:48:00 +0100

On Mon, Dec 06, 2021 at 11:53:45PM +0100, Andreas Bauer wrote:
> Hi Everyone!
> I am having a hard time getting guix os running on a rock-pro (arm) board.

For other readers, this thread is very similar to

> So this is what I dont understand:
> Using cross compilation with  "--target=aarch64-linux-gnu" the build fails,
> as soon as I add anythign as simple as an ssh server.

Maybe also pass --system=aarch64-linux for QEMU emulation?  I see that
the Guix repo’s gnu/platforms/arm.scm does both
--target=aarch64-linux-gnu and --system=aarch64-linux.  No idea if it
helps.  Eventually Guix should not require --system though, I think.

> Normlally it fails because of "meson build system" or "perl modules". I
> read that meson-build is cross-compilation compatible, so
> thats the first thing that I dont understand.

In the core-updates-frozen branch, there is Meson cross-compilation
support since July 14 <> commit
8456581375cf03c46005d00907f8fdd1f5615f1e.  Either wait until it lands
in Guix proper (somewhat soon), or try the core-updates-frozen branch.
However, for me that failed at cross-compiling dosfstools (with
--target only, no --system).

> With qemu compilation, "--system=aarch64-linux" it is cmpiling forever. I
> had to stop after 2 days trying to build my system.

Yes, I think it takes that long.

> What I dont understand here is this:
> 1. arm substitutes should be available via bordeaux substitute server
> (since bordeaux has arm build farm I thought that this should be happening).
> It seems that I do not get any substitutes this way. I understand that
> certain exotic packages have to be build on my machine, but something as
> basic as the kernel? How can this be?

Is bordeaux enabled?  See:

> 2. qemu builds only on one core. I have set  "--cores=6", but this seems
> not to matter.

Which package specifically?

This is when you run `guix build --system=aarch64-linux …`?

> 3. It see multiple different kernel versions getting compiled. This is very
> confusing. I didnt add any extra packages in this regard.
> The cookbook mentions a way to build an installer image for arm; but
> building the installer image has a lot of packages, so since my small
> images dont build in days, I dont think the installer would build in a
> week.I know that I saw arm binaries for download at some point on the
> guix website. So I wonder why they are no longer there. A binary download
> for an installer to me seems to be quite important. But I dont
> find anyone asking for it. Am I missing something here?

There are PinebookPro images:

But I don’t know if there are rockpro64 images; probably not, since
there is no image in the guix repo nor cookbook.

> 4. I finally was successful in building an image to get started, and it
> would only work when I did add zero packages to the os-image,
> and when I have removed all the services except for a shell login. This
> image is runnign now, and what I dont understand is, that
> this image has to have the kernel inside, otherwise how would it run. It
> all came via the cross-compilation. So the substitutes for the kernel
> have to be available then! mWhy dont they appear in the qemu build then?
> 5. The way I am now setting up my rock-pro board is first, I get an image
> that only allows me to boot, and login to the shell. Then I add
> some bootstrap files to it via etc-service-type with (local-file ...)..
> Essentially I add a manifest and an extended os image definiition to it,
> and then start building that
> on the rock-pro board.

Yes, this is faster.

> Now it would be perfect to add an entire directory
> of scripts and batch files to a folder into the image. But the local-file
> only allows me
> to add one file per line. Is there any option where I could add an entire
> folder to the image that gets build? This would help a lot in my
> bootstrapping process.

There is (local-file "…" #:recursive #t) and similar for other kinds
of file.

Cannot answer the rest.

Florian Pelz

reply via email to

[Prev in Thread] Current Thread [Next in Thread]