Linux IoT Landscape: Distributions

In addition, source based distributions are better suited for cross-building — where the machine on which you build your platform isn’t the same as the one on which you run it — while binary based distributions are better for self-hosted building — where you build and run on the same machine (or same architecture).Given today’s prevalence of having Intel architecture machines as build machines — and using ARM architecture for IoT products — cross-building support is important for IoT devices.New Kid On The Block: Container-Centered DistributionsThe traditional Linux method — shipping a single unified userspace that contains all of the platform outside of the kernel — is changing..The new model is about having a collection of “containers” that componentize the userspace..The containerized model transforms a portion of the userspace into a federated collection of components with a high degree of independence between each component.Containerized distribution brings many benefits, from allowing teams to work more independently to making it feasible to do granular platform upgrades..The downside is that they have a larger footprint than non-containerized solutions..If the evolution of technology has shown us anything, however, it’s that when the only downside of a new technology is the footprint, the resourcing available to it tends to expand to make that a smaller and smaller problem at every new generation.Some of the early options are described below to compare to existing distributions.The Contenders: Linux Distributions for IoTNow we must delve into contentious territory..Many people have their favorite Linux distribution, and even if their requirements change wildly (for example going from a server setup to an embedded IoT device), they cling onto that distribution — sometimes to the point of fitting a square peg into a round hole.I’ll preface the list below: this is a sampling of some well established Linux distributions and some up and comers..Many others exist and might be more suitable for some use cases.Now with that out of the way…YoctoYocto is a source-based distribution that’s used in many embedded and IoT devices..It tries to unite the benefits of binary-based distributions, such as clear separation of the packages and their dependencies, with the benefits of source-based distributions that allow you to alter your target binaries in significant ways as you make smaller changes.Image Credit: Yocto ProjectYocto is composed of a series of recipes, each of which describes how to build one module of the system (e.g. library, daemon, application, etc.)..These recipes are then collected into layers which collect a series recipes and configure various aspects of how they are supposed to be used together, from compile flags to recipe features, to details on how they show up on the target..Each target build will be composed of a few of these layers, each one adding or removing packages from the lower layers, or modifying their default behavior..This allows multiple parties to tweak their own layer to affect final images..So if the base layer uses a conservative set of compiler flags (which it usually does), a chip vendor can add compiler flags that are beneficial to their specific chip model, and a board vendor can remove chip functionality that their board might not support.What this means in practice for your IoT product is that your effort to build a solution using a board that already supports Yocto will be to add or modify recipes that provide your value-add over the base functionality.. More details

Leave a Reply