Supporting custom BalenaOS build for Raspberry Pi 4

Hi there,

I’m looking to build a custom OS for the Raspberry Pi 4 but am facing several issues.

Building the OS

  • I have tried several VM’s with Ubuntu installed but can never get past the stage of Docker Engine starting in Docker Desktop. Hence, I have locally installed Ubuntu 20.04 and run a build from there. Only later on did I realise that Ubuntu 18.04 LTS seems to be the supported OS - not 20.04. No documentation here - some guidance on what the typical steps to getting this up and running are would be very helpful.
  • I have seen some mentions of using a Docker container for the build environment with plans to improve documentation but these have yet to materialise making this difficult.

Custom OS and support to BalenaCloud features
However, my main question is this: if I build a custom OS for my Pi 4, are all other Balena features still supported? E.g. - what is the difference in experience between flashing my own custom .img file and any one of the supported .img files directly provided by Balena?

I see in this forum post from 3 years ago that BalenaCloud support is missing but am unsure if this is still true?

The Customer Board Support page mentions contacting Balena to host your custom board and OS but I’m unsure if this is also needed for an already supported board like the Raspberry Pi 4?

Hello @sjfom92 welcome to the balena community.

If you use the meta-balena layers on the top then your custom OS for Pi4 might support all the balena features

Find here the meta-balena repo GitHub - balena-os/meta-balena: A collection of Yocto layers used to build balenaOS images

Let us know if you need more help with specific issues :slight_smile:

Hi Sam,

May I ask what is the purpose of the custom build? Custom builds are used for hardware bringup and OS development, but there is no mechanism to surface custom builds in balenaCloud. The balenaCloud pipeline has its own build servers and OS automation tests that are required to run before new OS releases are deployed.

Anyway, answering some of your questions, the easiest way to build balenaOS is by using a containerized build. It’s true that we haven’t yet updated all the READMEs in the device repositories, but the instructions are common. For example the instructions in GitHub - balena-os/balena-connectcore: BalenaOS for the Digi ConnectCore SBCs and System-On-Modules should work.

About the balenaCloud features, a custom build will be able to use all of the balenaCloud features - however as I said before there is no mechanism to import that custom build into balenaCloud itself so devices cannot perform a hostOS update to them - you need to program them manually or go through custom update processes. Also, custom builds are obviously not supported by us.

If you have some special hardware you want to support, you can work with us to integrate the changes into future balenaOS releases, and use custom builds while developing and testing.

1 Like