Hi all,
getting into FreeBSD ARM64 I tried to compile a current system on a fast AMD64
VM and
now I am somewhat stuck - no help using search engines and the like.
1st step:
# checkout main aka 14-CURRENT
cd /usr/src
make -j 8 TARGET=arm64 TARGET_ARCH=aarch64 buildworld buildkernel
That worked like a charm and I seem to have a well populated
/usr/obj/usr/src/arm64.aarch64.
2nd step:
I then mounted /usr/src and /usr/obj on my Raspberry Pi via NFS. The binaries
in /usr/obj are the correct architecture and run perfectly well:
root@pi8:~ # file /usr/obj/usr/src/arm64.aarch64/bin/sh/sh
/usr/obj/usr/src/arm64.aarch64/bin/sh/sh: ELF 64-bit LSB pie
executable, ARM aarch64, version 1 (FreeBSD), dynamically linked, interpreter
/libexec/ld-elf.so.1, for FreeBSD 14.0 (1400057), FreeBSD-style, not stripped
root@pi8:~ # /usr/obj/usr/src/arm64.aarch64/bin/sh/sh
root@pi8:~ # ^D
3rd step:
root@pi8:/usr/src # make TARGET=arm64 TARGET_ARCH=aarch64 installkernel
--------------------------------------------------------------
>>> Install check kernel
--------------------------------------------------------------
--------------------------------------------------------------
>>> Installing kernel GENERIC on Mon Apr 25 21:03:58 CEST 2022
--------------------------------------------------------------
cd /usr/obj/usr/src/arm64.aarch64/sys/GENERIC; MACHINE_ARCH=aarch64
MACHINE=arm64 CPUTYPE= CC="cc -target aarch64-unknown-freebsd14.0
--sysroot=/usr/obj/usr/src/arm64.aarch64/tmp
-B/usr/obj/usr/src/arm64.aarch64/tmp/usr/bin" CXX="c++ -target
aarch64-unknown-freebsd14.0 --sysroot=/usr/obj/usr/src/arm64.aarch64/tmp
-B/usr/obj/usr/src/arm64.aarch64/tmp/usr/bin" CPP="cpp -target
aarch64-unknown-freebsd14.0 --sysroot=/usr/obj/usr/src/arm64.aarch64/tmp
-B/usr/obj/usr/src/arm64.aarch64/tmp/usr/bin" AS="as" AR="ar" ELFCTL="elfctl"
LD="ld" LLVM_LINK="" NM=nm OBJCOPY="objcopy" RANLIB=ranlib STRINGS=
SIZE="size" STRIPBIN="strip"
PATH=/usr/obj/usr/src/arm64.aarch64/tmp/bin:/usr/obj/usr/src/arm64.aarch64/tmp/usr/sbin:/usr/obj/usr/src/arm64.aarch64/tmp/usr/bin:/usr/obj/usr/src/arm64.aarch64/tmp/legacy/usr/sbin:/usr/obj/usr/src/arm64.aarch64/tmp/legacy/usr/bin:/usr/obj/usr/src/arm64.aarch64/tmp/legacy/bin:/usr/obj/usr/src/arm64.aarch64/tmp/legacy/usr/libexec::/sbin:/bin:/usr/sbin:/usr/bin
make KERNEL=kernel install
/bin/sh: make: Exec format error
*** Error code 126
Stop.
make[1]: stopped in /usr/src
*** Error code 1
Stop.
make: stopped in /usr/src
So via that complicated PATH setting it seems to run:
/usr/obj/usr/src/arm64.aarch64/tmp/legacy/usr/bin/make
Which surprisingly is an amd64 binary:
root@pi8:/usr/src # file
/usr/obj/usr/src/arm64.aarch64/tmp/legacy/usr/bin/make
/usr/obj/usr/src/arm64.aarch64/tmp/legacy/usr/bin/make: ELF 64-bit LSB
pie executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter
/libexec/ld-elf.so.1, for FreeBSD 14.0 (1400057), FreeBSD-style, stripped
So what did I do wrong?
Thanks for all help,
Patrick