Yocto vs. Ubuntu – die Betriebssysteme im Vergleich

Überblick: Betriebssystem

Eine Schlüsselentscheidung bei der Entwicklung von IoT Projekten und Edge-Infrastrukturen betrifft die Software und damit verbunden die Wahl eines geeigneten Betriebssystems. Ein Betriebssystem ist eine Low-Level-Systemsoftware, die die Hardware- und Softwareressourcen des Computers verwaltet und die Grundfunktionen des Computers wie bspw. Ressourcenverwaltung, Speicherverwaltung, Steuerung von Peripheriegeräten und Netzwerk erheblich erleichtert. Das Betriebssystem dient dabei als Schnittstelle zwischen Hardware und Software des Computers und ist daher ein wichtiger Bestandteil eines Systems. Auf dem Markt gibt es mehrere, verfügbare Betriebssysteme, wobei im Desktopumfeld Microsoft Windows das Bekannteste ist. Verlässt man den Bereich des Desktopcomputers wird häufig auf Betriebssysteme, die auf dem Linux Kernel basieren, zurückgegriffen.

Open-Source-Betriebssystem: Linux

Linux ist eine Gruppe von Unix-ähnlichen Betriebssystemen, die auf dem Linux-Kernel aufgebaut sind. Es gehört zur Familie der freien und Open-Source-Software und ist normalerweise in einer Linux-Distribution wie Ubuntu kostenlos erhältlich. Eine Linux-Distribution ist eine Auswahl bestimmter Software und einem Kernel von Linux, die aufeinander abgestimmt sind und somit ein nutzbares Betriebssystem bilden. Am häufigsten wird es für Server und eingebettete Systeme verwendet, ist jedoch auch in einer Desktop-Version verfügbar. Da Linux quelloffen ist, kann es sogar auf der Kernel-Ebene eingesehen und überprüft werden. Im Bereich Edge Computing und IoT handelt es sich oft um eingebettete Systeme, weshalb Hardware und Software entsprechend nach individuellen Anforderungen integriert werden müssen. Hierfür ist Linux die beste Option, denn es ermöglicht grundlegende Treiber auf Kernel-Ebene zu schreiben, die diesen Bedürfnissen entsprechen.

Besonders in der Welt der eingebetteten Systeme kann die Größe einer vollständigen Ubuntu-Distribution ausreichen, um den limitierten Speicher des Boards stark einzuschränken, bevor man überhaupt anfangen kann, zusätzliche Software zu installieren oder Daten zu sammeln. Wenn es also um datenintensive Anwendungen geht, wird ein Betriebssystem mit einem geringen Footprint benötigt. Hier kommt Yocto ins Spiel: das Ziel des Yocto-Projekts ist es, optimierte Software für hochspezifische eingebettete Anwendungen bereitzustellen.

Yocto und der Unterschied zu Ubuntu

Zunächst ist es wichtig zu verstehen, dass Yocto keine Linux-Distribution ist. Tatsächlich heißt es auf der Website des Yocto-Projekts: „Es ist keine eingebettete Linux-Distribution, es erstellt eine eigene.“ Im Gegensatz dazu ist Ubuntu eine vollständige Linux-Distribution für allgemeine Computerzwecke. Da Ubuntu und andere Debian-basierte Distributionen auf allgemeine Computer- und Programmierzwecke ausgerichtet sind, sind sie eine gute Wahl für eine Entwicklungsumgebung, in der Code möglicherweise geändert werden muss und Prototypen oft geändert werden müssen.

Yocto erlaubt es, die Größe des Betriebssystems auf das Notwendigste zu reduzieren, um das System zu betreiben. Yocto ist modular aufgebaut und benötigt für die Erstellung einer Distribution ein SDK. Dabei wird Yocto eher als Meta-Distribution bezeichnet und kann als eine Sammlung von Bibliotheken, Abhängigkeiten, Konfigurationswerten und Klassen gesehen werden, die zusammengefügt werden, um ein maßgeschneidertes Linux-Laufzeit-Image zu erstellen.

Das Yocto-Projekt ist also ein Open-Source-Kollaborationsprojekt, das Entwickler*innen hilft, individuelle Linux-basierte Systeme unabhängig von der Hardware-Architektur zu erstellen. Yocto bietet eine flexible Reihe von Tools und einen Raum, in dem Embedded-Entwickler*innen weltweit Technologien, Software-Stacks, Konfigurationen und Best Practices austauschen können, um maßgeschneiderte Linux-Images für Embedded- und IoT-Geräte oder überall dort, wo ein angepasstes Linux-Betriebssystem benötigt wird, zu erstellen.

„Ubuntu kann als Werkzeug in die Kategorie „Betriebssysteme“ eingeordnet werden, während Yocto unter „Infrastructure Build Tools“ eingeordnet wird.“

KriteriumUbuntuYocto
AnwendungenAllgemeiner Gebrauch

Oft Desktop-Umgebung
Eingebettet, individuell angepasst
Größe7-8 GB ≈ 2 GB
FootprintBeinhaltet nicht benötigte Softwarepakete,

Großer Footprint
Nur notwendige Softwarepakete enthalten,

Möglichst geringer Footprint
NutzungSchnelles Prototyping, Nachweis des Konzepts während der Entwicklung Produktionsfähiges Betriebssystem für eingebettete Systeme
KonfigurationIst bereits für den Einsatz vorbereitet Die besten Ergebnisse werden erzielt, wenn alles individuell eingerichtet wird
Hinzufügen von Paketen Einfaches Handling durch apt-get [Paketname] über die Konsole Erfordert eine vollständige Neuerstellung des Images und eine Neuinstallation
Image aufbauen Die Distributionskomponente ist bereits fertig installiert,

Image-Erstellung ist schnell
Stellt das Werkzeug für inkrementelle Image- Erstellungen
Wartungsfähigkeit Die Wartung erfolgt durch die Desktop-Community,

Support und Portierung müssen manuell erfolgen, wenn benutzerdefinierte Pakete verwendet werden
Das Yocto-Projekt bietet langfristige Unterstützung,

Layer können einige Korrekturen und Aktualisierungen erfordern,

Entwickelt für kontinuierliche Integration
Rollout / OTA-Updates Hohe Datenmengen, die an die Geräte im Feld gesendet werden

Hoher Datenverbrauch
Geringe Datenmenge, die an die Geräte im Feld gesendet wird

Geringer Datenverbrauch

Fazit

Wenn es um eine Entscheidung zwischen Yocto oder Ubuntu geht, sollte das Urteil ziemlich klar sein. Wenn Codes entwickelt werden, ein Proof-of-Concept erstellt wird und frühe Prototypen getestet werden, sollte Ubuntu verwendet werden. Wenn der Code vollständig getestet ist und ein funktionsfähiger Prototyp auf einem Embedded Board getestet werden soll, sollte Yocto verwendet werden, da dies Vorteile in Bezug auf die Geschwindigkeit und den Speicher bietet.

Ein weiterer Punkt, bei dem das Yocto-Project vorne liegt, ist die Möglichkeit die Größe des Betriebssystems individuell zu gestalten. Besonders mit Hinblick auf Device-Management-Lösungen, die genutzt werden für Remote-Updates von IoT- und Edge-Geräten im Feld, spielt die zu übertragende Datenmenge eine tragende Rolle. Auch kann so der Footprint auf den Geräten im Feld minimal gehalten werden. Dies führt dazu, dass der limitierte Speicherplatz effizient genutzt wird und somit die Ressourcen der Geräte im Feld im vollen Umfang ausgenutzt werden können. Besonders bei einer hohen Anzahl von Geräten führt dies zu einer signifikanten Kosteneinsparung.