Integration of reUpNix System and Container Updates with Azure IoT Edge and Docker

The growth of the Internet of Things (IoT) in industries such as production, manufacturing, and agriculture has led to a wide range of innovations and new products. Currently, all major cloud providers, such as Microsoft, Google, Amazon's AWS, and IBM, offer IoT services and solutions to their customers. However, many Industrial IoT (IIoT) devices are installed in remote locations, such as offshore oil rigs or airplanes, and therefore have limited, unstable, or costly network connections. Techniques to minimize the IIoT software's network traffic both in message size (such as Protobuf or other forms of compression) and in message amount (such as local processing with edge computing) have already been established. However, the image size, update, and consistency of the underlying operating system still present a challenge. With Microsoft's Azure IoT Device Update service, for example, the entire image for the operating system is sent to the device and then written to a secondary partition. This results in hundreds of megabytes being transmitted.

In this field study, we investigate whether the NixOS-based ReUpNix can be used as a suitable host operating system for Microsoft's commercial IoT platform, Azure IoT Edge, since its image size is significantly smaller than Microsoft's recommended Linux images. Furthermore, we investigate the conceptual advantages for IoT devices that NixOS-based systems provide over traditional Linux operating systems when updating the system. For this, we identified the minimum set of components and features that have to be added to heavily minified ReUpNix in order to have the required functionality for the Docker-container-based Azure IoT Edge while maintaining a small footprint in disk size.

[Expected result] With ReUpNix as a host operating system for Azure IoT Edge, we observed an X% smaller image size due to the minification and a Z% smaller size of system updates due to the fact that only differences are sent, compared to Microsoft's recommended Ubuntu 22.04 and a custom Yocto Linux image. Furthermore, we showed that it is possible to pre-install Docker container layers on the device, such that the amount of data that needs to be transmitted in the case of a container update with Azure IoT Edge is significantly reduced. However, NixOS-based systems do not receive official support from Microsoft, and product managers need to decide if the benefits outweigh the loss of Microsoft's support.