Boot to Rack

May 15, 2018

While waiting for a touch screen to arrive, I'm experimenting with making a minimalistic OS image for Raspberry Pi and Tinker Board that boots straight to miRack and doesn't have anything else at all to maximise performance (and possibly with a tweaked kernel if I find that necessary). I'm aware of three ways to relatively easy make a custom OS image for these boards.

First, I tried learning and using Yocto Project, and it was all working well - Yocto allows to build really small and customised Linux images relatively easy (although requiring 30GB+ of space to build a 400MB image). However the problem is that the packages it builds (it generates DEB or RPM packages for everything during the process) are compatible with the produced OS only. So if I want to make miRack packages for regular Raspbian and TinkerOS installations and also a bootable image, I'd need to do it separately which I don't want.

Then, I briefly tried Armbian's build script which also worked and, since both it and TinkerOS are Debian-based, they both will be able to use the same miRack packages. But the script is based on debootstrap script which does the main job of producing the base OS filesystem, and unfortunately it doesn't allow customisation and just installs some predefined set of base packages.

So I ended up using DietPi scripts as a base. They take a different approach, where they just remove everything but the required packages from an official Raspbian or TinkerOS system, and by default they produce a very light image, just what I need. The scripts are a bit generic though, a bit complicated, and are supposed to be run on a live system. So I had to make them run with chroot first (thanks to QEMU you can chroot into a different platform easily), and then remove everything I don't need.

Anyway, now I have a way to build minimal OS images booting straight to miRack on Tinker Board. I'm not publishing the image yet though because there's more work to be done - mainly related to Rack and plugin updates which happen ofter as I develop (and therefore also configuring a network connection without a normal desktop environment).

miRack - an optimised fork of VCVRack primarily targeting Raspberry Pi, ASUS Tinker Board and similar hardware (but can be used on desktop too).