Linux on Small Devices Odyssey

so, this was, once again, quite a trip; an odyssey if you will.
An Odyssey You Say?
well, let me describe the trip in a few words: some time ago i figured out that Umfeld runs ( and installs ) quite smoothly on Raspberry Pi OS ( including 32-bit OS on a Raspberry Pi 1 Mod. B ). the process was rather simple and quite similar to big devices i.e:
- installing the operating system (OS)
- add required packages ( SDL3, ffmpeg, … ) to the system with package manager (
apt) - compile and run umfeld applications
if you understand linux basics this process is VERY straight forward.
next step, i bought one of these small gameboy-handheld-style emulator devices for a VERY small price: R36S. after reading a bit i found out that it is built around an ARM-based System on Chip (SoC) called Rockship RK3326, that it ships with a custom, lightweight variant of Ubuntu 19.10 (for ARM) called ArkOS. it took about an hour or two to SSH into the device ( after having learned that it, despite the print on the package, does not feature WiFi … and a USB WiFi dongle was required ) to fix up the shipped OS and to compile on the device and run a first Umfeld application. also, having learned from working with Raspberry Pi OS i found that it was very easy to just create a copy of the entire, fixed up ArkOS and distribute it as an image to be directly burned onto an SD Card ( e.g with Raspberry Pi Image ). this makes the handheld VERY accessible for developing and running Umfeld applications within minutes and without any requirements for downloading or fixing up anything. i was pleasently surprised by how easy everything was.
insprired by that experience i proceeded to buy another handheld: Anbernic RG40XXV. that was some time in october and that’s where the odyssey began …
Two Different Kinds of Linux Distributions
through a bit of research and even more trial and error i found out that …
- Anbernic stock OS ( closed source, maintained by Anbernic, and shipped with the device ) does not allow the installation of additional packages ( i.e no compiler, no SDL3, no ffmpeg )
- ArkOS does NOT work on the RG40XXV because RG40XXV is built around a different SoC ( Allwinner H700 ) that is not supported by ArkOS
- there a two different kinds of linux distributions: mutable and immutable ones
that last point i did not expect! so, there are some distributions that just do not allow to be changed from within ( i.e immutable ), while other distributions allow the installation of packages and modifications to the system ( i.e mutable ). i did some more research on common handheld OSes and found out that most of them are actually immutable:
| OS NAME | IM/MUTABLE |
|---|---|
| RPI OS | MUTABLE |
| ArkOS | MUTABLE |
| Anbernic Stock OS | IMMUTABLE |
| GarlicOS | IMMUTABLE |
| OnionOS | IMMUTABLE |
| MustardOS | IMMUTABLE |
| Knulli | IMMUTABLE |
| ROCKNIX | IMMUTABLE |
- MUTABLE :: traditional Linux filesystem, user can modify system freely, pros: flexibility, full control, easier hacking, cons: easier to break, updates can cause issues
- IMMUTABLE :: read-only base system, updates are image-based, system files not meant to be edited, pros: stability, easy updates, harder to break, cons: no on device compilation, less flexibility, customization via overlays or containers
after some more research i found out that there is NO viable linux distribution that supports the RG40XXV ( i.e Allwinner H700 SoC ). that was quite a setback: especially, because i started liking the Anbernic devices for their build quality and i REALLY wanted Umfeld to run on many different devices.
so what this means in essence: if you want to work with a device that allows you to run a linux that you can modify to your liking and where you can compile applications on the device, go with a Rapsberry Pi or a R36S ( and its variations ).
so i felt that i had to dig into immutable linux distributions …
How to Work with an Immutable Linux Distribution
after even more research i found out that ROCKNIX is the best and most versatile option for Umfeld. mainly because it supports a wide range of SoC, seemed to be developer friendly with a vivid community, and supported all the necessary hardware and packages.
along the way i learned that most of the small device linux distributions mentioned above are built on rather old linux distributions. while i did not mind that personally, it turned out that the most central framework to Umfeld, SDL3, abandoned the legacy display backend fbdev ( a low-level system that actually presents pixels to the display ) in favour of Wayland, KMSDRM, and X11, which are not consistently available on older Linux distributions.
digging through the ROCKNIX documentation and other resources i learned that the working with immutable distributions usually involves two separate steps:
- create a custom system image with all required modifications and install it on the target device
- set up a workflow on a host machine ( e.g a big computer ) to compile applications for the target device and distribute them onto it
compiling binaries on a host machine for a different target device, architecture, or platform is referred to as cross compiling.
TBC …
see Umfeld / Small Devices for more VERY indepth documentations.