We load Linux and our software on a hard drive that goes into an Intel NUC or a Gigabyte Brix MiniPC. Presently, we use debootstrap and ansible to prepare the hard drive and then ansible to keep it provisioned / updated remotely over OpenVPN.
This works, but has some issues that need to be addressed : - Risk of the root filesystem becoming corrupt during unsafe shutdown (something that currently happens a few times per month).
Presently impossible for endusers to load the software themselves, as we can’t provide a ready image file to load with something like : dd if image-
file of / dev / target - Operating system updates are unsafe as you are modifying the one single root filesystem. Key experience required :
Experience building embedded linux bootable image files or firmware with Yocto, OpenWRT, Buildroot or equivalent.
Alternatively, experience deploying systems using embedded / IoT distributions such as : Resin.os, Ubuntu Core, CoreOS, RancherOS, Redhat Atomic, Mesosphere DCOS, VMware Photon or similar.
Experience working with read only root filesystems - in this case the requirement is to have 2 root filesystems, so there is only 1 clean one to revert to at any time.
Experience deploying over the air firmware / OS updates, with ability to roll back a failed OS update.
Experience orchestration updates of thousands of remote devices, e.g. experience on large distributed systems.
Experience working with ARM (Raspberry Pi or equivalent) and X86 64 platforms.
Experience with containerisation (e.g. Docker or similar).
Experience with systemd and writing service files
Ideally : experience scaling OpenVPN, MongoDB, Redis, Web Application (Puma / Rails).
Ideally : knowledge of OpenEmbedded and ELC materials (Embedded Linux Conference).