During some recent work on kiosk appliance setups for Raspberry Pi devices i got annoyed enough about having to build three Pi images for the three devices that i looked into what it would take to have one single universal Pi image that can run equally on all Raspberry Pi devices Ubuntu Core supports today …
Apparently the newer Pi firmware blobs actually support a way to set per-device options in config.txt so it is possible to load the device specific u-boot binary based on the hardware that is booted.
Building all required u-boot binaries into this gadget and having them live all in /boot/uboot side by side then enables us to have the firmware blob switch to the right one based on this config.txt feature.
I’d like to propose that we start switching over to this mechanism for the Pi reference image and instead of producing three images for pi2, pi3 and cm3, move to a sigle unified raspberry pi image runnable on all supported boards.
The current code for the kiosk gadget snap that i used for this universal image can be found at:
(note that due to being designed for kiosk setups it does a few more things like showig a splash screen during boot by default, completely quietening all console messages and only allowing console access and configuring via console-config through serial, this would indeed not have to move over to the generic gadget if undesired)