[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: getting crazy with arm build
pelzflorian (Florian Pelz)
Re: getting crazy with arm build
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 <https://issues.guix.gnu.org/49025> 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
Cannot answer the rest.