Imagebuilder for arm

I'd like to use imagebuilder on arm. Why imagebuilder is only for x86-64, what prevents to build it for one more architecture? How can I contribute?

1 Like

Have you tried the buildroot on ARM?

If that works, there's nothing preventing the image builder on ARM. But you need infrastructure to churn that out. Read: hardware for the OpenWrt buildbots.

Have you tried the buildroot on ARM?

Nope, as it's compiled for x86.

You're mixing it up. The buildroot allows you to compile OpenWrt from scratch.

The imagebuilder could be built for any architecture (barring fringe bugs), but it is built natively on the buildbots - which happen to be x86_64. The number of potential users for ARM (what ARM, ARMv7/ armhf or ARMv8/ AARCH/ ARM64, not even thinking about ARMv6 and prior) is very small, it doesn't make sense to ship prebuilt imagebuilder binaries for uncommon combinations (MacOSX, ARM-Linux, etc.), but you can build it yourself from source.

Given that the imagebuilder is built natively on the buildbot, corresponding ARM buildbots would need to be added to the buildfarm (as well as orchestration to deal with keeping them in sync) - which still doesn't really make sense in terms of their build performance.

Building OpenWrt from source (rather than using prebuilt imagebuilder environments) should work on any architecture (again, barring potential bugs).

2 Likes

Hey,

I tried to build on BananaPI running Armbian Ubuntu20.04 on it.

### Debian / Ubuntu

sudo apt update sudo apt install build-essential ccache ecj fastjar file g++ gawk \ gettext git java-propose-classpath libelf-dev libncurses5-dev \ libncursesw5-dev libssl-dev python python2.7-dev python3 unzip wget \ python3-distutils python3-setuptools python3-dev rsync subversion \ swig time xsltproc zlib1g-dev

I used the prequisitions

I use an xfs-SSD harddrive and I was able to mkdir openwrt and git clone. After I want to

./scripts/feeds update -a
-bash: ./scripts/feeds: Permission denied

It is really annoying. The same github source on my Laptop works fine. I also checked ownership of the files. All of them belong to the user I am using. I also tried it with "sudo" or as "root". Always the same situation. "Permission denied"...

Would love if someone has a glue whats going on.

You probably mounted your SSD with noexec (and probably nosuid/ nodev as well), which would be normal if you rely on your desktop's user mounting capabilities. Change the mount options as needed (and do a new git clone, as your root/ suid attempts -never do this!- already messed up the access rights).

1 Like

Hey slh,

thank you for your quick reply. Would you please be so kind to help me with the fstab entries?

UUID=b6e77191-9678-420e-800d-af96a934311f / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1
tmpfs /tmp tmpfs defaults,nosuid 0 0

/dev/sda /ext xfs rw,user,auto 0 0

I mounted now an other external NTFS-Drive (mount /dev/sdb1 /media/Seagate) as root, because otherwise there is no solution to mount it on my BananaPI with Armbian Ubuntu 20.04.

Unfortunately I have in general still a big compiling problem..

root@bananapi:/media/Seagate/eb904/openwrt# make -j1 V=s
Argument "4.2.1" isn't numeric in numeric ge (>=) at /media/Seagate/eb904/openwrt/scripts/feeds line 25.
Collecting package info: done
Argument "4.2.1" isn't numeric in numeric ge (>=) at /media/Seagate/eb904/openwrt/scripts/feeds line 25.
Argument "4.2.1" isn't numeric in numeric ge (>=) at ./scripts/feeds line 25.
Argument "4.2.1" isn't numeric in numeric ge (>=) at /media/Seagate/eb904/openwrt/scripts/feeds line 25.
Argument "4.2.1" isn't numeric in numeric ge (>=) at /media/Seagate/eb904/openwrt/scripts/feeds line 25.
WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!
make[1]: Entering directory '/media/Seagate/eb904/openwrt'
Argument "4.2.1" isn't numeric in numeric ge (>=) at /media/Seagate/eb904/openwrt/scripts/feeds line 25.
make[2]: Entering directory '/media/Seagate/eb904/openwrt'
Argument "4.2.1" isn't numeric in numeric ge (>=) at /media/Seagate/eb904/openwrt/scripts/feeds line 25.
+ mkdir -p /media/Seagate/eb904/openwrt/staging_dir/target-mips_34kc_musl-1.1.14
+ cd /media/Seagate/eb904/openwrt/staging_dir/target-mips_34kc_musl-1.1.14
+ mkdir -p bin lib include stamp
mkdir -p /media/Seagate/eb904/openwrt/build_dir/target-mips_34kc_musl-1.1.14/stamp
touch /media/Seagate/eb904/openwrt/staging_dir/target-mips_34kc_musl-1.1.14/.prepared
+ mkdir -p /media/Seagate/eb904/openwrt/staging_dir/host
+ cd /media/Seagate/eb904/openwrt/staging_dir/host
+ mkdir -p bin lib include stamp
mkdir -p /media/Seagate/eb904/openwrt/build_dir/host/stamp /media/Seagate/eb904/openwrt/staging_dir/host/include/sys
install -m0644 /media/Seagate/eb904/openwrt/tools/include/*.h /media/Seagate/eb904/openwrt/staging_dir/host/include/
install -m0644 /media/Seagate/eb904/openwrt/tools/include/sys/*.h /media/Seagate/eb904/openwrt/staging_dir/host/include/sys/
ln -sf lib /media/Seagate/eb904/openwrt/staging_dir/host/lib64
touch /media/Seagate/eb904/openwrt/staging_dir/host/.prepared
make[3]: Entering directory '/media/Seagate/eb904/openwrt/tools/flock'
touch /media/Seagate/eb904/openwrt/build_dir/host/flock/.preparedd43fbe92a855714be28be25e1d7737cd
....

make[3]: Leaving directory '/media/Seagate/eb904/openwrt/tools/tar'
make[2]: *** [tools/Makefile:135: tools/tar/compile] Error 2
make[2]: Leaving directory '/media/Seagate/eb904/openwrt'
make[1]: *** [tools/Makefile:133: /media/Seagate/eb904/openwrt/staging_dir/target-mips_34kc_musl-1.1.14/stamp/.tools_install_yynyynynynyyyyyyynyyyyyyyyyyyyynyyyyynnyynynyyyynnnyy] Error 2
make[1]: Leaving directory '/media/Seagate/eb904/openwrt'
make: *** [/media/Seagate/eb904/openwrt/include/toplevel.mk:194: world] Error 2```

e.g. auto,user,exec,dev,suid,noatime,barrier=0 (I assume exec is all you're really missing though).

Just test it quickly, mount -o remount,exec /dev/sda.

(Btw., it's not quite good practices to format the raw device directly, instead of partitioning it, but that's an orthogonal issue)