Übersicht: 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 Systemsoftware auf niedriger Ebene, die die Hardware- und Softwareressourcen des Computers verwaltet und die Grundfunktionen des Computers, wie Ressourcenverwaltung, Speicherverwaltung, Steuerung von Peripheriegeräten und Vernetzung, erheblich erleichtert. Das Betriebssystem dient als Schnittstelle zwischen der Hardware und Software des Computers und ist daher eine wichtige Komponente eines Systems. Auf dem Markt sind mehrere Betriebssysteme erhältlich, wobei Microsoft Windows im Desktop-Umfeld das bekannteste ist. Verlässt man den Bereich der Desktop-Computer, werden häufig Betriebssysteme verwendet, die auf dem Linux-Kernel basieren.
Open-Source-Betriebssystem: Linux
Linux ist eine Gruppe von Unix-ähnlichen Betriebssystemen, die auf dem Linux-Kernel basieren. Es gehört zur Familie der freien und Open-Source-Software und ist in der Regel kostenlos in einer Linux-Distribution wie Ubuntu verfügbar. Eine Linux-Distribution ist eine Auswahl bestimmter Software und eines Linux-Kernels, die aufeinander abgestimmt sind, um ein nutzbares Betriebssystem zu bilden. Es wird am häufigsten für Server und eingebettete Systeme verwendet, ist aber auch in einer Desktop-Version verfügbar. Da Linux Open Source ist, kann es sogar auf Kernel-Ebene angezeigt und überprüft werden. Edge Computing und IoT beinhalten häufig eingebettete Systeme, sodass Hardware und Software entsprechend den individuellen Anforderungen entsprechend integriert werden müssen. Dafür ist Linux die beste Option, da es das Schreiben grundlegender Treiber auf Kernel-Ebene ermöglicht, um diese Anforderungen zu erfüllen.
Insbesondere in der Welt der eingebetteten Systeme kann die Größe einer vollständigen Ubuntu-Distribution ausreichen, um den begrenzten Speicher der Platine stark einzuschränken, bevor Sie überhaupt mit der Installation zusätzlicher Software oder dem Sammeln von Daten beginnen können. Wenn es also um datenintensive Anwendungen geht, ist ein Betriebssystem mit geringem Platzbedarf erforderlich. 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 seine 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 und Prototypen häufig geändert werden müssen.
Yocto ermöglicht es, die Größe des Betriebssystems auf das zum Ausführen des Systems erforderliche Maß zu reduzieren. Yocto ist modular aufgebaut und erfordert ein SDK zum Erstellen einer Distribution. In diesem Zusammenhang wird Yocto häufiger als Metadistribution bezeichnet und kann als eine Sammlung von Bibliotheken, Abhängigkeiten, Konfigurationswerten und Klassen betrachtet werden, die zusammengestellt werden, um ein benutzerdefiniertes Linux-Laufzeitimage zu erstellen.
Das Yocto-Projekt ist ein Open-Source-Kollaborationsprojekt, das Entwicklern hilft, kundenspezifische Linux-basierte Systeme unabhängig von der Hardwarearchitektur zu erstellen. Yocto bietet einen flexiblen Satz von Tools und einen Raum, in dem Embedded-Entwickler weltweit Technologien, Software-Stacks, Konfigurationen und Best Practices austauschen können, um kundenspezifische Linux-Images für Embedded- und IoT-Geräte oder überall dort zu erstellen, wo ein kundenspezifisches Linux-Betriebssystem benötigt wird.
„Ubuntu kann als Tool unter „Betriebssysteme“ kategorisiert werden, während Yocto unter „Infrastruktur-Build-Tools“ kategorisiert wird.“
Kriterium | Ubuntu | Yocto |
---|---|---|
Anwendungen | Allgemeiner Gebrauch Oft Desktop-Umgebung |
Eingebettet, individuell |
Größe | 7 bis 8 GB | ≈ 2 GB |
Fußabdruck | Enthält nicht benötigte Softwarepakete Große Standfläche |
Nur notwendige Softwarepakete enthalten, Geringstmöglicher Platzbedarf |
Verwendung | Rapid Prototyping, Proof of Concept während der Entwicklung | Produktionsreifes Betriebssystem für eingebettete Systeme |
Aufbau | Ist bereits einsatzbereit | Die besten Ergebnisse werden erzielt, wenn alles individuell eingerichtet wird |
Pakete hinzufügen | Einfache Handhabung durch apt-get [Paketname] über die Konsole | Erfordert einen vollständigen Image-Neuaufbau und eine Neuinstallation |
Image erstellen | Die Verteilungskomponente ist bereits installiert Die Bilderzeugung erfolgt schnell |
Bietet das Werkzeug zur inkrementellen Image-Erstellung |
Wartbarkeit | 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, Ebenen können einige Korrekturen und Updates erfordern, Entwickelt für kontinuierliche Integration |
Rollout / OTA-Updates | Große Datenmengen werden an Geräte im Feld gesendet Hoher Datenverbrauch |
Geringe Datenmenge, die an Geräte im Feld gesendet wird Geringer Datenverbrauch |
Abschluss
Wenn es um die Entscheidung zwischen Yocto oder Ubuntu geht, dürfte das Urteil relativ eindeutig sein. Wenn Codes entwickelt, ein Proof-of-Concept erstellt und frühe Prototypen getestet werden, sollte Ubuntu verwendet werden. Wenn Code vollständig getestet ist und ein funktionierender Prototyp auf einem Embedded Board getestet werden soll, sollte Yocto verwendet werden, da dies Vorteile in Bezug auf Geschwindigkeit und Speicher bietet.
Ein weiterer Punkt, bei dem das Yocto-Projekt die Nase vorn hat, ist die Möglichkeit, die Größe des Betriebssystems individuell anzupassen. Gerade bei Device-Management-Lösungen, die für Remote-Updates von IoT- und Edge-Geräten im Feld eingesetzt werden, spielt die zu übertragende Datenmenge eine große Rolle. Auch der Platzbedarf auf den Geräten im Feld kann so auf ein Minimum beschränkt werden. Dadurch wird der begrenzte Speicherplatz effizient genutzt und somit können die Ressourcen der Geräte im Feld vollumfänglich ausgenutzt werden. Gerade bei einer großen Anzahl an Geräten führt dies zu deutlichen Kosteneinsparungen.