Resin.io has spun off the Yocto-based OS behind its Resin.io IoT framework as a ResinOS 2.0 distro for running Docker containers on Linux IoT devices.
ResinOS 2.0 architecture
(click image to enlarge)
When enterprise-level CIOs are asked to integrate embedded devices into their networks, their first question is usually “Can they run Docker?” The answer is probably not, especially if they run on ARM processors.
The open source Linux CoreOS, which is one of the most popular distributions for deploying virtualized Docker containers, supports only x86-64, although attempts have been made to port it to the Raspberry Pi. Whether ARM or x86, cloud-oriented platforms like CoreOS want to see a nice clean server-like environment, not an idiosyncratic embedded board with limited resources and weird add-ons and usage scenarios. Other Docker-friendly IoT-oriented Linux distributions include the Red Hat based Project Atomic, which has demonstrated a “Subatomic Cluster” running on four x86-based MinnowBoard Turbots, but is otherwise an enterprise server-oriented system.
A more appropriate comparison for ResinOS is Snappy Ubuntu Core, which supports Docker containers on a growing number of ARM and x86 embedded targets including the Raspberry Pi. The list of supported devices on ResinOS is a bit longer and more diverse than Snappy’s, especially on the ARM side, although both are expanding quickly (see farther below). According to a Resin.io rep, ResinOS’s Docker support is superior in that it runs Docker “as its container engine on the host, vs. inside a ‘snap,’ which is a non-standard Canonical technology.”
Resin.io decided to build its own OS for the Resin.OS framework because it was easier than trying to modify an existing cloud-oriented OS. “Because of the complexity required to work across many different network conditions as well as on embedded boards with diverse architectures, boot procedures, kernel configurations, and so forth, existing cloud-focused container OS solutions did not fit our needs,” says the ResinOS announcement. “At the same time, existing embedded operating systems and frameworks were not designed for constant updates or containers. We had to create something new from the best of both worlds.”
Yocto Project, systemd, and Docker
ResinOS builds upon the Yocto Project, and like CoreOS, leverages Docker and systemd control services along with a networking stack. As long as your board is on the target list, the minimalist ResinOS abstracts the complexity of working with Yocto Project code, enabling developers to quickly deploy Docker containers.
“ResinOS uses containers to run arbitrary base images within which developers can work, so that their interaction with the host userspace is rare,” says Resin.io. “In this way we get the considerable portability benefits of Yocto, without suffering the workflow drawbacks for application developers.”
ResinOS is touted as being designed to meet the challenges of embedded IoT devices such as extreme heterogeneity of device types, and restricted storage, CPU, and networking capabilities. The OS is also said to accept custom hardware attachments and gracefully handle issues like power outages and device failure.
ResinOS 2.0 beta will become available in the commercial Resin.io framework “within the next few months,” says Resin.io, but is available now in the standalone version. New features include a read-only root partition for more robust updates, and the replacement of the BRTRFS filesystem with AUFS, which has better reporting of free storage.
ConnMan is replaced by Network Manager, due in part to its “stellar” cellular support. There’s also a new Resin Device Toolbox (RDT) with utilities for booting devices and deploying application containers.
Hardware support: Raspberry Pi, BeagleBone, Artik, and more
Like Snappy Ubuntu Core, ResinOS supports ARM boards like the BeagleBone Black, Odroid-C1, and the Raspberry Pi, and unlike Ubuntu Core, it also supports the original ARM11-based Pi models. It similarly supports x86 targets like the Intel NUC mini-PC form factor.
Unlike Snappy, ResinOS supports the Odroid-XU4 and Xilinx Zynq-xz702 eval kit, and the similarly Zynq 7000-based Parallella. ResinOS can run on a variety of NXP i.MX6 based SBCs including the SolidRun Hummingboard, Boundary Devices Nitrogen6, and VIA Technologies VAB-820. It also supports i.MX6-based COMs like the Toradex Colibri and Technologic TS7700 and TS4900. ResinOS offers additional support for the ARM-based Samsung Artik modules, which should appear soon on the official list of Snappy targets.
Samsung Artik boards
Snappy Ubuntu Core offers its own unique targets. These include the Roseapple Pi, as well as a variety of Gumstix boards such as the Overo, DuoVero, and Panda. It also supports several 96Boards SBCs like the Hikey, Guitar, and Bubblegum-96. In addition, Snappy has appeared in products including Erle Robotics drones, Dell Edge Gateways, Nextcloud Box, and LimeSDR.