Working as an embedded software engineer, I've been using Yocto and Buildroot
projects to create root filesystems for embedded devices. While Buildroot is
only suitable for small embedded systems, Yocto does scale well, but is a
really complex tool.
Plus, both tools are difficult to handle for developers without a strong
understanding of Linux system integration, and on the other hand, do not
provide APIs and introspection tools for integrators.
In this talk, I want to explore the possibility of using GNU Guix as an
alternative to the Yocto project to generate embedded root filesystems.
With 7 years of existence, more than 10000 packages and 4 supported
architectures, GNU Guix can be used as a transactional package manager and an
advanced distribution of the GNU operating system running on the Linux kernel.
What would be missing to cover all Yocto features? How could the embedded
developer benefit from GNU Guix features such as its high level Scheme API,
package substitution mechanism, strong reliability and reproducibility?
To provide some real world application, I'll compare the process of adding
support for a new board (Pine A64 LTS) on Yocto and GNU Guix. Then I'll
compare how to configure, build and flash a small root filesystem for
that same board, on the two tools.