I have OS customization to do and I’m not very comfortable maintaining a Yocto-based build environment for an extended period of time. I’ve seen some discussion on building some BalenaOS dependencies into Buildroot[1] and some interesting Buildroot variations focused on running containers[2].
Is there a chance there could eventually be supported a different build tool for building BalenaOS, like Buildroot?
[1] Balena Engine on platforms without systemd - #8 by Qbicz
[2] GitHub - skiffos/SkiffOS: Reliably run any Linux distribution on any hardware with an in-RAM host OS for containerized environments.
Hi Jason!
I’m part of the OS team here. As a long time user of Buildroot, I’m also interested in this, and have actually started some work on building balenaOS using Buildroot. While Yocto is very capable and flexible, and most hardware vendors support it with a BSP, the learning curve is much lower with Buildroot. I enjoy the tools and processes it provides, and how familiar it all is to anybody that’s worked with the kernel or u-boot. Additionally, as you’ve referenced, an unaffiliated contributor added a package to Buildroot for our container engine some time ago, which is a good start.
That said, there are some challenges to overcome. A lot of functionality from the OS is contained in our meta-balena Yocto layer, in the form of shell scripts and services which, ideally, would be shared between both build systems. There’s also a lot of changes that have been made over time in that Yocto layer to carefully maintain features and backward compatibility that would be difficult to ensure are 100% the same between images built using the two. We’re currently working on improving our automated test suite, which would help with this project.
I think both build systems have their merits, and complement each other quite well. Unfortunately, there are no official plans at the moment to support Buildroot, but it is something that I’m personally quite interested in. The above linked repository contains about a day’s worth of hacking, and I’d like to revisit it soon. The first goal is to get the supervisor up and running, and maybe have a device show up in the dashboard. There’s a lot more work that has to be done to get OS upgrades and fallback working. Regardless, you can keep an eye on that repo for updates.
1 Like