Operating System Strategy
The Inky project requires a robust and efficient operating system to handle our hardware interactions on the Raspberry Pi or equivalent Our OS strategy is divided into two distinct phases: the current Development Phase and the future Production Phase.
The End Goal: Buildroot
Our final objective for the production version of Inky is to deploy a fully custom, lightweight operating system generated with Buildroot.
- Website: buildroot.org
- Benefits: Minimal footprint, optimized performance, and complete control over the system.
- Current Status: Reserved for the final release.
Why not use Buildroot for Development?
While Buildroot is excellent for deployment, it presents significant friction during active development. Because the resulting file system is often read-only and immutable, adding new dependencies or tools requires rebuilding the system image and rebooting the hardware. This iteration loop is too slow for our daily coding needs.
Current Development Environment
To facilitate rapid iteration, experimentation, and debugging, we have evaluated standard Linux distributions.
1. Initial Attempt: Alpine Linux
We initially developed on Alpine Linux (aarch64).
- Source: alpinelinux.org/downloads
- Pros: Lightweight and closer to the philosophy of an embedded system.
- Cons: While easier to update than Buildroot, we encountered compatibility issue with some equivalent boards to Raspberry Pi Zero and some member in the team were not comfortable/familiar with the Alpine environment.
2. Current Choice: Ubuntu
We have currently standardized our development environment on Ubuntu for Raspberry Pi.
- Source: ubuntu.com/download/raspberry-pi
- Reasoning:
- Stability & Support: Ubuntu provides a rock-solid foundation with a massive community.
- Modularity: It allows us to install, remove, and update packages on the fly without rebooting.
- Tooling: Access to a vast repository of pre-compiled tools makes experimenting with new libraries seamless.