OE compile for Raspberry Pi 4
There has been the intention for sometime to get back into EasyOS
on aarch64-based platforms. A good starting point is the Raspberry Pi
4, as OpenEmbedded has excellent support for it, as the
'meta-raspberrypi' layer. This is the 'dunfell' branch:
https://github.com/agherzan/meta-raspberrypi/tree/dunfell
I added this layer to my port of OE-Dunfell, and with the same
package list as for the x86_64 build, started the build. It went right
through, with only these failures:
network-manager-applet gutenprint xresprobe libvdpau-va-gl restarter netpbm
Good that none of those are a dependency for other packages. Next
thing to do is examine the failure logs and see if they can be fixed. If
not, I can still build a bootable SD card, with 'devx' SFS, and compile
them in a running system.
Note, OE TUNE_FEATURES variable is "aarch64 cortexa72 crc crypto". So
if I wanted to run on the Pi3 would have to do a separate compile.
So, what hardware? The Pi4 has good specs, will make a reasonable
host compiling system. Reckon might as well go for the board with 8GB
RAM. Plastic case with heatsink -- read online that the metal cases
obstruct the wi-fi signal. How about this selection:
https://www.altronics.com.au/p/z6302h-raspberry-pi-4-model-b-board-8gb/
https://www.altronics.com.au/p/p6631a-dynalink-1.5m-micro-hdmi-to-hdmi-cable/
https://www.altronics.com.au/p/m8821-raspberry-pi-5.1v-dc-3a-power-supply/
https://www.altronics.com.au/p/h8958-acrylic-raspberry-pi-4-case-with-cooling-fan/
One thing very interesting is the 4K at 60Hz video output. My Lenovo PC can only do 4K at 30Hz.
EDIT 2021-01-04:
Last night managed to compile 'netpbm', it took about 4 hours to fix.
Not entirely happy with the recipe, as it may only work when host and
target systems are both 64-bit and the CPUs have the same endian-ness.
Fixed 'network-manager-applet' this morning.
That was a quick fix. Previously, had compiled with host system and
target system both being x86_64, but for a aarch64 target, had to add
the "--host" and "--build" parameters. This is the "do_configure"
function in the recipe:
do_configure() {
#20210104 do_configure error, need to tell it we are cross compiling...
./autogen.sh --with-gcr --with-selinux=no --with-appindicator=no --enable-introspection=no \
--enable-gtk-doc-html=no --without-wwan --enable-more-warnings=no --enable-gtk-doc=no \
--host=${HOST_SYS} --build=${BUILD_SYS}
oe_runconf
}
...OE experts will wonder why I did it that way. That's another story.
Tags: easy