Yocto Linux: Das optimale Betriebssystem für individuelle Embedded Projekte
Das Yocto Project hat das Ziel, Werkzeuge und Prozesse zu entwickeln, um die Erstellung von Linux-Distributionen für Embedded- und IoT-Software zu ermöglichen. Es handelt sich dabei um ein Open-Source-Projekt. Mittlerweile hat sich Yocto als Standard auf dem Embedded-Markt etabliert. Was hat es damit auf sich?
Das Yocto Project wurde von der Linux Foundation im Jahr 2010 angekündigt. Im darauffolgenden Jahr wurde das Projekt gemeinsam mit 22 Organisationen wie OpenEmbedded gestartet. Heute hat das Projekt eine der weltweit größten Communities, die sich um die Pflege und Aktualisierung des Projekts kümmern.
Die Frage, was hinter Yocto Linux steckt, können wir kurz beantworten: Der Fokus des Yocto Projects liegt auf der Verbesserung des Softwareentwicklungsprozesses für eingebettete Linux-Distributionen. Es stellt interoperable Werkzeuge, Metadaten und Prozesse zur Verfügung. Diese ermöglichen eine schnelle Entwicklung von linuxbasierten eingebetteten Systemen. Jeder Aspekt des Entwicklungsprozesses dieser Systeme kann angepasst werden.
Wer noch nie etwas von Yocto Linux gehört hat oder weitere Details und Hintergründe erfahren möchte, sollte den folgenden Beitrag lesen.
Hinweis: Wer sollte diesen Beitrag lesen?
Sie sind als Softwareentwickler tätig? Oder Sie sind in einem Industrieunternehmen verantwortlich für den Computing-Lösungsbereich? Dann sollten Sie sich den folgenden Beitrag aufmerksam durchlesen.
Was ist Yocto Linux?
Auf jeden Fall ist es keine Linux-Distribution. Yocto Linux ist vielmehr eine Sammlung: Mit den enthaltenen Werkzeugen und Mechanismen können Sie eine eigene Linux-Distribution erstellen.
Eigentlich sollte man vom „Yocto Project“ sprechen – die Projektseite liefert bereits die richtige Bezeichnung. Die Bezeichnung macht Sinn, denn unter diesem Projekt werden Werkzeuge zahlreicher einzelner Projekte zu einem einheitlichen Werkzeugkasten zusammengeführt. Mit diesem Kasten können Sie eine eigene Linux-Distribution (Betriebssystem) entwickeln.
Tipp: Nutzen Sie die detaillierte Dokumentation
Wer sich mit Yocto auseinandersetzen will, kann sich über einem enormen Funktionsumfang und eine detaillierte Dokumentation freuen. Ihre Lernkurve wird mit hoher Wahrscheinlichkeit sehr steil sein. Nehmen Sie sich für Ihren Yocto Linux-Einstieg genügend Zeit.
Aspekte, die zu Yoctos grundlegenden Strukturen zählen:
- Layer, Rezepte, Pakete – Eine Linux-Distribution erstellt mit Yocto basiert auf sogenannten Layern. Ein Board Support Package (BSP) kann beispielsweise ein erster Layer sein. Applikation, Konfiguration, Middleware und Tools machen weitere Layer einer Distribution aus. Eine Distribution wird erzeugt aus verschiedensten Layern. Jeder einzelne Layer beinhaltet Metadaten, welche dem Build System als Input dienen. Zumeist handelt es sich dabei um Rezepte. Diese stehen in einem bestimmten Verhältnis zueinander – oder sie haben bestimmte Gemeinsamkeiten. Ein BSP Layer beinhaltet u. a. Build Anweisungen (Rezepte) für den Bootloader und den Linux Kernel. Ihre Gemeinsamkeit? Sie alle sind an die Hardware angepasst. Wichtig: Layer strukturieren die Distribution und erleichtern den Komponentenaustausch. Mit jedem Rezept erzeugen Sie ein Paket. Wichtig: Layer dienen nicht nur zur Distributionsstrukturierung. Sie erleichtern auch den Austausch von Komponenten. Die Integration von Software, die von anderen Entwicklern erstellt wurde, lässt sich ebenfalls leichter bewerkstelligen.
- BitBake – Das Buildsystem, auf dem das Yocto Project basiert, nennt sich BitBake. Es stammt aus dem sogenannten OpenEmbedded Projekt. Bestandteil von BitBake sind eine Execution Engine und ein Task Scheduler. Mit Letzterem wird ein Rezept geparst. Einzelne Komponenten werden übersetzt – dieser Schritt enthält auch das Erstellen der notwendigen Toolchain. Auf diese Weise werden auftretende Abhängigkeiten zu dem Hostsystem so niedrig wie möglich gehalten. Anschließend werden diese zu einem Gesamtsystem zusammengesetzt. Wer ein Gesamtsystem erstellen will, kann Mechanismen für die Roundtripzeiten zum Testen einzelner Änderungen reduzieren. Mit dem SSTATE-Cache kann eine Senkung der Buildzeit bis zu 80 Prozent erzielt werden. Unveränderte Pakete werden auf diese Weise nicht mehr übersetzt – dies gilt allerdings nicht für Windows- oder Microcontroller basierte Systeme. Der SSTATE-Cache muss nicht lokal angesiedelt sein. Dieser kann einem großen Team über einen Server zur Verfügung gestellt werden.
- Software Development Kit (SDK) – Für Applikationsentwickler können Sie auf einfache Art und Weise ein komplettes SDK erstellen. Mit dem Kit können einzelne Teile unabhängig voneinander entwickelt, debuggt und getestet werden.
- devtool – Mit diesem Werkzeug können eigene Anpassungen an Software-Komponenten einfach(er) integriert werden. Auch devtool ist Teil des OpenEmbedded Projekts. Damit lassen sich Änderungen einzelner Komponenten schnell und unkompliziert vornehmen. devtool lässt sich ebenso einfach in den Buildprozess integrieren.
Was hat es mit der poky Referenzimplementierung auf sich?
Yocto bietet eine Referenzdistribution, die den Namen „poky“ trägt. Dabei handelt es sich um ein umfangreiches Beispiel. Das Beispiel zeigt Ihnen, wie Sie mithilfe des Yocto Projects eine Distribution erstellen können.
Oft wird das Referenzprojekt falsch verstanden und im Produktiveinsatz verwendet. Es lässt sich mit wenig Aufwand anpassen. Doch sollten Sie immer daran denken, dass es sich bei poky nur um ein Beispiel handelt.
Wie funktioniert Yocto Linux?
Mit Yocto Linux bekommen Sie ein Werkzeug an die Hand, mit dem Sie individuell zugeschnittene Linux-Images für Embedded Devices herstellen können. Als Anwender erhalten Sie so deutlich größere Spielräume als Ihnen beispielsweise vorgefertigte Distributionen liefern könnten.
Der allgemeine Yocto Linux-Workflow kann folgendermaßen ablaufen:
- Sie spezifizieren Architektur, Richtlinien, Patches und Konfigurationsdetails.
- Das Build-System ruft im nächsten Schritt den Quellcode ab und lädt diesen von dem von Ihnen festgelegten Ort herunter. Das Yocto Project unterstützt Standardmethoden wie Tarballs oder Quellcode-Repository-Systeme wie git.
- Nach dem Herunterladen werden die Quellen in einem lokalen Arbeitsbereich extrahiert. Hier werden Patches angewendet sowie allgemeine Schritte zum Konfigurieren und Kompilieren der Software ausgeführt.
- Anschließend installieren Sie die Software in einem temporären Staging-Bereich. Dort verwenden Sie das von Ihnen ausgewählte Binärpaketformat zum Rollup der Software.
- Während des gesamten Build-Prozesses werden verschiedene QA- und Plausibilitätsprüfungen durchgeführt.
- Nachdem die Binärdateien erstellt wurden, wird ein binärer Paket-Feed generiert. Dieser wird verwendet, um das endgültige Root-Datei-Image zu erstellen.
- Das Dateisystem-Image wird generiert.
Ihr Workflow mit dem Yocto Project ändert sich je nachdem, welche Komponenten und Tools Sie tatsächlich verwenden wollen.
Entwicklungsumgebungsmöglichkeiten für Yocto
Ein Großteil der Entwickler nutzt einen Linux-Entwicklungshost. Das Yocto Project stellt für andere Betriebssysteme CROPS bereit. Das ist ein plattformübergreifendes Open-Source-Entwicklungsframework. Es nutzt Docker-Container. CROPS verfügt über eine einfach zu verwaltende und erweiterbare Umgebung.
Diese ermöglicht es Ihnen, Binärdateien für eine Vielzahl von Architekturen auf Windows oder macOS zusätzlich zu nativen Linux-Hosts zu erstellen. Eine weitere Möglichkeit ist Toaster. Dabei handelt es sich um eine Webschnittstelle, mit der Sie Builds konfigurieren und ausführen können. Toaster stellt auch Informationen und Statistiken zum Build-Prozess bereit.
Warum sollten Sie auf Yocto Linux setzen?
Für Ihr Embedded-Gerät die richtige Linux-Distribution auszuwählen ist eine Herausforderung. Doch es gibt viele gute Gründe dafür, warum Sie Yocto Linux einsetzen sollten:
- In der IoT- und in der Embedded-Branche ist das Projekt sehr bekannt und weit verbreitet. Es gibt eine Reihe von Anbietern, die für Yocto auch kommerziell unterstützte Project-Software und -Services anbieten.
- Der Build Host von Yocto funktioniert auf einer Vielzahl von Architekturen. Das Yocto Project unterstützt ARM, AMD64, x86, MIPS und PPC.
- Halbleiterhersteller sowie Chipanbieter stellen SDKs, BSPs und andere Strukturen zur Verwendung mit Yocto Project zur Verfügung.
- Da das Yocto Project Open Source ist und viele Architekturen unterstützt, sind Sie nicht an einen Anbieter gebunden.
- Sie müssen Entwicklungsumgebungen nicht austauschen. Die Ausgabe von Yocto lässt sich leicht auf eine andere Architektur übertragen.
- Unternehmen nutzen Yocto dank seiner Architekturunabhängigkeit und Anpassungsmöglichkeiten auf unterschiedlichste Art und Weise.
- Yocto ist für eingeschränkte Anforderungen an eingebettete und IoT-Geräte ausgelegt.
Was sind Ihre Vorteile von Yocto Linux?
Daneben gibt es noch eine Vielzahl von Vorteilen, die für Sie durch die Nutzung von Yocto Linux entstehen:
- Sie haben die Möglichkeit, mehrere Architekturen/Toolkits in einem Repository/Build-Tree zu unterstützen.
- Durch die Einführung von zusätzlichen Schichten (Layern) können Sie die Flexibilität der Distribution erhöhen.
- Ihnen steht eine modulare Architektur von Yocto-basierten Projekten mit einfacher Anpassung zur Verfügung.
- Sie erhalten Zugang zu einer breiten Palette von Tools und SDKs.
- Der Portierungsprozess von Linux ist einfacher.
- Langfristig betrachtet ist Yocto Linux besonders wartungsfreundlich, da es für das Projekt einen straffen Release- und Update-Prozess sowie Community Support gibt. Damit ist Yocto Linux eine Softwaretechnologie für diverse Computing-Lösungen.
Außerdem ist Yocto ein attraktives Gesamtpaket, denn:
- Die Toolchain lässt sich komplett anpassen. Auf diese Weise können Sie eine Linux-Distribution erstellen, die genau zu Ihrem Projekt passt. So können Sie die bestmögliche Optimierung von Ressourcen und Leistung sicherstellen.
- Unterstützt wird das Yocto Project von mehreren Chipherstellern. Wählen Sie den Mikroprozessor aus, der sich am besten für Ihr Projekt eignet.
- Yocto ist immer auf dem neusten Stand. Eine der weltweit größten Communities kümmert sich um die regelmäßige Aktualisierung des Projekts.
- Sie müssen nicht für kostenpflichtige Lizenzen aufkommen. Beim Yocto Project handelt es sich um ein Open-Source-Projekt.
Yocto Linux-Anwendung: Mit diesen Herausforderungen müssen Sie rechnen
Bei der Nutzung von Yocto Linux werden Sie auch mit ein paar Hindernissen rechnen müssen. Viele Entwickler berichten bei Yocto Linux von einer steilen Lernkurve – die vielen Begrifflichkeiten können bereits entmutigen. Die Vielzahl an Optionen für die Konfiguration des Ziels ist eine weitere Herausforderung. Denn es wird einiges an Zeit benötigt, um die richtige Auswahl zu treffen. Ein Aufwand an Recherche und Untersuchung kann entstehen, wenn Sie nachvollziehen wollen, welche Änderungen Sie an Ihrer Distribution für ein spezielles Design vornehmen müssen. Doch wer die ersten Schritte mit seinem Yocto Linux-Projekt abgeschlossen hat, kommt auch mit der Komplexität besser zurecht.
Sie sind traditionelle Entwicklung von Desktop- und Serversoftware gewohnt? Dann kommt Ihnen der Yocto-Workflow zunächst verwirrend vor. Der Host-Betriebssystemanbieter stellt Ihnen in einer Desktop-Entwicklungsumgebung einen Mechanismus zum Installieren neuer Pakete bereit. Um bei Yocto zusätzliche Pakete hinzufügen zu können, muss die Konfiguration geändert und neu erstellt werden. Internet gehostete und einfach verfügbare Paketbibliotheken gibt es nicht.
Über Yocto können Entwickler auch direkt auf dem Zielsystem entwickeln. Entwickler müssen einen weiteren Schritt machen, sobald der Code entwickelt und debuggt wurde. Die Änderungen müssen erneut in die Yocto-Build-Umgebung implementiert werden. Ein möglicher Lösungsweg: Nehmen Sie Änderungen in der Umgebung vor und stellen Sie die aktualisierten Pakete bereit.
Das Build-System von Yocto fertigt Pakete in den Formaten rpm, deb, ipk oder tar an. Installieren können Sie das Format mithilfe von Package Management innerhalb eines laufenden Systems. In der frühen Entwicklungsphase ist dies für Sie von Vorteil. Eine große Anzahl von Paketen ist für ein vollfunktionsfähiges Linux-System notwendig.
Was darüber hinaus leider unvermeidbar ist: Rechnen Sie bei einem vollständigen initialen (ersten) Yocto-Build mit langen Build-Zeiten, da für ein voll funktionsfähiges Linux-System eine große Anzahl von Paketen kompiliert werden muss.
Warum setzt iesy auf Yocto Linux?
iesy setzt sich bereits seit über 20 Jahren mit Embedded-Linux-Systemen auseinander. Bis zum Jahr 2015 nutzten wir die Möglichkeiten des Embedded-Gentoo-Projekts. Im zuvor genannten Jahr stießen wir dann auf das Yocto Project, das viele Nachteile vorangegangener Embedded-Linux-Systeme löste.
Gleichzeitig entschieden sich viele unserer Hardwarelieferanten ihre BSPs (Board Support Packages) nicht mehr in Form eines angepassten Boot-Loaders und Linux Kernels, sondern in Form von Yocto BSP-Layern zur Verfügung zu stellen. Das führte dazu, dass iesy seit 2017 Yocto zu 100 Prozent für Embedded Systeme einsetzt.
Aufbau der Embedded-Linux-Systeme von iesy
Als Grundlage setzt iesy auf eigens entwickelter Embedded Hardware auf. Diese verfügt je nach System über Boot-ROM, BIOS oder UEFI. Auf dieser Hardwareplattform installieren wir dann ein Kern-BSP, das - je nach Konfiguration - aus einem Device Tree, einem Second Stage Boot Loader und einem Linux Kernel besteht.
Auf das Kern-Board-Support-Package folgt dann ein Root Dateisystem mit dem für den Betrieb erforderlichen System-Bibliotheken und -Applikationen sowie den Bibliotheken und Applikationen, die von einer Kundenapplikation benötigt werden.
Der Schwerpunkt der iesy Softwareentwicklung reicht vom Device Tree bis hin zur System-Applikation.
Gute Gründe für die Nutzung von Yocto-Linux
Alle zuvor genannten Aspekte sind Gründe dafür, warum auch iesy Yocto Linux einsetzt. Als Anbieter und Spezialist im Bereich Embedded Computing profitieren wir ganz besonders von den zuvor genannten Vorteilen. Die hohe Flexibilität, die uns Yocto Linux bietet, ermöglicht es iesy, besondere Konfigurationen von Betriebssystemen und einzelnen Betriebssystemteilen zu erstellen.
Alle Möglichkeiten und Vorteile von Yocto Linux werden von iesy also umfassend genutzt, um maximal individualisierte Lösungen für unsere Kunden zu erstellen.
Wie profitieren Sie als Industrieunternehmen vom Einsatz von Yocto Linux?
Das Internet der Dinge (IoT) wird für Unternehmen in der Industrie immer wichtiger. Das Yocto Project eignet sich perfekt für IoT-Projekte. Industrieunternehmen sollten bei diesen Projekten also auch Yocto einsetzen. Es gibt kleine IoT-Geräte, in denen Sensoren oder Aktoren stecken. Daneben gibt es auch größere Geräte wie IoT-Gateways, Network Attached Storage (NAS)-Systeme oder Heimautomationsrouter.
Für diese Gerätetypen werden Prototypen mit Consumer-Hardware-Geräten, die leicht verfügbar sind, aufgebaut. Dazu zählen beispielsweise Raspberry Pi und BeagleBone. Diese Boards werden vom Yocto Project bestens unterstützt. Damit erhalten Sie die Möglichkeit, schnellstmöglich mit einem IoT-Projekt zu beginnen.
IoT-Systeme nutzen Bibliotheken, Protokolle und Software, die in Desktop-Linux-Distributionen nicht sehr weit verbreitet sind. Doch können Sie Ihrem Yocto-Build viele gängige Pakete wie MQTT und AMQP mit Standard-Yocto-Layern hinzufügen.
Weitere Anwendungsbeispiele
Open Standard Modules ™ (OSM)
Die Idee hinter OSM ist laut der Standardization Group for Embedded Technologies e.V. (SGeT) einen neuen, zukunftssicheren und vielseitigen Standard für kleine, kostengünstige eingebettete Computermodule zu schaffen. Die Open Standard Module ™ Spezifikation ermöglicht die Entwicklung, Produktion und den Vertrieb von Embedded-Modulen für die gängigsten MCU32-, ARM- und x86-Architekturen. IoT-Anwendungen können mit diesem Standard, die Vorteile des modularen Embedded Computing mit den steigenden Anforderungen an Kosten, Platz und Schnittstellen kombinieren.
Kundenspezifisches System in der Automatisierungstechnik
Bei einem Kunden von iesy stand eine Migration eines bestehendes Embedded-Linux-Systems in Yocto an. Gleichzeitig sollte eine neue (andere) Plattform als Basis entwickelt werden. In diesem Kundenprojekt setzte man sowohl auf eine x86- als auch eine ARM-Plattform. Ziel war es, beide Plattformen miteinander zu verbinden und ein gemeinsames Betriebssystem für alle Geräte bereitzustellen. Die Wahl fiel auf ein „Common Linux“ – ein einheitliches OS. Der Kunde entschied sich für Yocto Linux.
Das Projekt musste vor allem Herausforderungen in Sachen Sicherheit lösen. Geräte müssen abgesichert werden. Darum mussten Aspekte wie Chain of trust, Secure Boot, Verschlüsselung und Public Key Infrastruktur – eine zertifikatbasierte Absicherung – von Anfang an mitgedacht werden.
Setzen Sie für Ihr Embedded-Projekt auf iesy und Yocto Linux
Yocto Linux kann Sie in vielen Bereichen unterstützen und bietet Ihnen dafür einen großen Funktionsumfang. Wer die Zeit investiert, keine Angst vor einer steilen Lernkurve hat und sich einarbeitet, für den wird sich Yocto Linux, ein standardisiertes Buildsystem, lohnen.
Wie wäre es, wenn iesy Yocto Linux für Ihr Embedded-Projekt einsetzt? Als Anbieter und Spezialist im Bereich Embedded Computing setzt iesy bereits seit vielen Jahren auf Yocto Linux. Seit 2017 verwenden wir Yocto für alle linuxbasierten Embedded Systeme, die wir entwickeln.
Mithilfe dieser und weiterer technologischen Möglichkeiten, einem eingespielten und erfahrenen Team sowie starken und zertifizierten Partnern, freuen wir uns sehr darauf, Ihre technischen Herausforderungen zu meistern. Schlussendlich wachsen wir gemeinsam an der im Projekt gesammelten Erfahrung.