Clea OS Architecture
Clea OS as Yocto Project
Clea OS is based on Yocto, an open source project born from the collaboration of various entities belonging to the world of embedded, in order to provide a useful tool for the creation of embedded distributions based on Linux (Yocto is not in itself a Linux distribution). Yocto puts together a framework with a series of integrated tools and metadata organized in a layered structure. This provides a development model for all the parts that make up Yocto itself, on which developers who intend to create their own distributions can rely on. Clea OS is no exception and should be thought of as a hierarchical series of layers.
From the figure shown here we can see three distinct elements, each encapsulated within the other:
- The first is the bitbake engine which interprets the set of metadata (commonly called recipes) and manages/coordinates the build phase of the distribution. For historical reasons, this element is co-maintained by the OpenEmbedded project, another entity that originally owned the engine;
- Poky, a distribution reference design released by Yocto itself and used as a basis for all distributions created through Yocto. Poky can be considered a basic version for a distribution;
- Yocto, which is basically everything we have seen so far, plus documentation, additional tools and a community that regulates the development of the project and provides additional layers and components to support elements such as BSP (Linux, U-Boot, Grub , etc.), hardware acceleration for video, 2D/3D graphics, AI and other software components such as browsers, web servers, multimedia players and development frameworks such as Qt.
Architecture Overview
Clea OS, referring to Yocto project, is:
- Based on open source project;
- An embedded Linux distribution provided by SECO;
- A hierarchical layer set, both conceptually and in terms of source code.
Furthermore, we can add that Clea OS:
- Is oriented towards the industrial sector;
- Makes use of collaborations for the development of some of its features (e.g. Exein for Cybersecurity);
- Extends what Yocto already provide with an ecosystem designed arround it.
The figure above shows the structure on which Clea OS is based:
- At the base there is Yocto and all the structure that it provides. Yocto is made up of basic layers, including Poky, as well as additional layers that take advantage of further elements such as IOT, security and multimedia.
- Next are the layers relating to hardware support, generically represented by the term BSP. The components included depend on the architecture, but the Linux kernel is always present. In addition, silicon vendor specific patches are provided which enable hardware acceleration for user-space components such as Chromium, Qt framework, Gstreamer.
- The distro represents the core of Clea OS, where all the features provided by Seco are concentrated. Those represent an application field (embedded, IoT, medical, automotive) of Clea OS, where some features are designed to satisfy those fields' requirements.
- The last layer is the one associated with end-user customization. This layer has to rely on the distro, taking advantage of what is already enabled in the distro and only applying minimal customizations. All underlying layers have been developed in such a way that in the custom layer (or more generally in the layers above) the user can overwrite configurations and environment variables without any problems.
Embedded and Things Distros
EMBEDDED | THINGS |
---|---|
This version provides a complete Yocto stable distro for SECO's embedded devices with all the tools needed for development and testing. This distro doesn't support all IoT functionalities described on the right for Clea OS Things. - Enabling of all HW feature provided by Silicon Vendor: - Highly customizable. - Support of various technologies and applications. | This version is designed to offer the highest standards in terms of security and stability thanks to features like double partitions and fallback procedures. Clea OS Things OS integrates a device manager to communicate with the Clea Cloud, allowing a family of products to be managed as a fleet: - OTA updates. - Dual Partition. - Fixed disk layout with minimal footprint. - Recovery/Rollback. - Seamleassy integrates Clea stack. - Highly constrained. |
Architecture Conceptual Organization
Context around this product:
- Multi-architecture support: ARM and x86 architectures have to be supported, reducing to minimum terms the code base and the effort to support them. Within the ARM macro group, a further subdivision must be made between CPU types, where each silicon vendor gives its way to support their platform;
- Clea OS is positioned in an industrial context, so the expectation is that the OS will be maintained for a long time in terms of support, bug fixing and software updates.
When modeling the Clea OS architecture, some specifications have been taken into consideration:
- Scalability: this comes in terms of supported hardware, provided software and as was mentioned right above, software updates such as changing the Yocto version.
- User experience with a "canonical approach": This means that Yocto itself provides usage guidelines which we do not want to deviate too much from.
- Yocto has an impressively steep learning curve which we want to improve, by also transforming manual steps into automated ones.
- As mentioned already, even when multiple kind of CPUs and architectures are present, the user experience has to remain the same between the various supported silicon vendors in terms of the development stage (tools and frameworks) as well as the provided software elements (same Qt version, same Chromium version, etc.).
- Having a "pragmatic approach": this means that Clea OS is used in an industrial context and as such has to meet certain needs during the development, production and delivery stages.
- "Flexibility", in terms of ease of customization.
Architecture as source code
Since Clea OS source code is contained in a collection of GIT repositories, the repo tool is used. Repo is a tool provided by Android's team that complements Git by simplifying work across multiple repositories. The whole project structure described above is closed inside a manifest file (hierarchical set of xml files).