Technologieführer

Minimal-Linux mit Yocto auf Ubuntu bauen

6 min read Embedded Linux Aktualisiert 20 Oct 2025
Minimal-Linux mit Yocto auf Ubuntu bauen
Minimal-Linux mit Yocto auf Ubuntu bauen

In dieser Anleitung bauen Sie ein minimales Linux-Image mit dem Yocto Project auf Ubuntu und starten es in QEMU (Zielmaschine qemux86-64). Sie erhalten Schritt-für-Schritt-Konfigurationen, wichtige Einstellungen in local.conf, Build-Schritte mit bitbake, Troubleshooting, Tests und praktische Checklisten für Entwickler, Integratoren und Tester.

Ziel und Kurzüberblick

Dieses Dokument zeigt, wie Sie auf einer Ubuntu-Entwicklungsmaschine ein minimales Embedded-Linux mit dem Yocto Project (Poky) erstellen und in QEMU starten. Yocto ist ein Build-System und ein Ökosystem zur Erzeugung maßgeschneiderter Linux-Distributionen für Embedded-Hardware. Ziel ist ein lauffähiges core-image-minimal für qemux86-64.

Wichtig: Yocto produziert kein komplettes Desktop-OS wie Ubuntu Desktop, sondern ein schlankes, reproduzierbares System für Embedded-Anwendungen.

Voraussetzungen für die Entwicklungsmaschine

  • Mindestens 4–6 GB RAM.
  • Aktuelle Ubuntu-Version (in diesem Beispiel 16.04 LTS; neuere LTS-Versionen sind empfohlen).
  • Mindestens 60–80 GB freier Festplattenspeicher.
  • Vorabinstallation folgender Pakete (siehe nächster Abschnitt).
  • Herunterladen einer stabilen Poky-Version (hier: morty).

Wichtig: Verwenden Sie einen normalen Benutzeraccount für den Build. Führen Sie bitbake nicht als root aus.

Systempakete installieren

Installieren Sie die notwendigen Build-Abhängigkeiten auf Ubuntu:

apt-get update
apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop

Installationspakete herunterladen und installieren

Hinweis: Die Paketliste ist umfangreich; insgesamt benötigt die Installation circa 1 GB zusätzlichen Platz für die Entwicklungswerkzeuge und Bibliotheken.

Platzbedarf für Entwicklungs-Pakete

Poky (Yocto) herunterladen

Im Beispiel wird die stabile Poky-Version “morty” verwendet. Clone das Repository:

 git clone -b morty git://git.yoctoproject.org/poky.git

Poky-Repository klonen

Wechseln Sie in das Verzeichnis und initialisieren Sie die Build-Umgebung:

source oe-init-build-env

Dieser Befehl erstellt ein build-Verzeichnis und setzt Umgebungsvariablen für den weiteren Ablauf.

OE-Build-Umgebung vorbereiten

local.conf konfigurieren

Die Datei conf/local.conf enthält zentrale Einstellungen für das Build: Zielmaschine, Cache- und Download-Verzeichnisse, Paketformat, SDK-Einstellungen und Bildoptionen.

Setzen Sie als Zielmaschine qemux86-64 (für 64-Bit QEMU):

Zielmaschine auf qemux86-64 setzen

Uncommenten bzw. setzen Sie folgende Parameter in local.conf, falls noch auskommentiert:

DL_DIR ?= "${TOPDIR}/downloads"

DL_DIR in local.conf konfigurieren

SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

SSTATE_CACHE-Verzeichnis konfigurieren

TMPDIR ?= "${TOPDIR}/tmp"
PACKAGE_CLASSES ?= "package_rpm"
SDKMACHINE ?= "i686"

PACKAGE_CLASSES und SDKMACHINE setzen

Für die Anmeldung im erzeugten Image empfiehlt sich das Aktivieren folgender Feature-Option, damit root ein leeres Passwort verwenden kann:

EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

debug-tweaks für leeres root-Passwort setzen

Wichtig: Ein leeres root-Passwort eignet sich nur für Entwicklung und Tests in isolierten Umgebungen, niemals für produktive Systeme.

Build mit bitbake starten

Starten Sie das Build des minimalen Images mit bitbake:

bitbake core-image-minimal

bitbake starten

Wichtig: Führen Sie bitbake als normaler Benutzer aus, nicht als root. Als root schlägt der Build fehl.

Fehler bei Ausführung von bitbake als root

Wenn Sie die Umgebungsvariablen neu gesetzt haben, führen Sie erneut source oe-init-build-env aus und starten bitbake erneut.

Umgebungsvariablen erneut setzen und Build starten

Der Build-Prozess analysiert zuerst die Rezepte und beginnt anschließend mit dem Herunterladen und Kompilieren der Pakete. Der erste Durchlauf umfasst viele Downloads und Kompilierungen und kann je nach Hardware und Netz deutlich Zeit beanspruchen (im Beispiel 2–3 Stunden).

Rezepte parsen und Build-Details

Kompilierung läuft, mehrere Stunden möglich

Nach Abschluss zeigt bitbake die fertigen Tasks an.

Die erzeugten Images finden Sie unter build/tmp/deploy/images/qemux86-64.

Build abgeschlossen, Images im Deploy-Verzeichnis

Hinweis: Einige SSH-Clients (z. B. PuTTY) zeigen möglicherweise Probleme beim Starten von grafischen QEMU-Fenstern. Nutzen Sie stattdessen eine lokale Sitzung oder RDP mit einer grafischen Umgebung.

Fehler bei Putty, Terminalprobleme

QEMU funktioniert in RDP-Terminal

QEMU starten und Image testen

Starten Sie das erzeugte QEMU-Image (das genaue Kommando variiert je nach Build-Artefakt; Yocto generiert meist ein startscript oder qemu-integration). Ein neues QEMU-Fenster öffnet sich und zeigt die Boot-Logs.

QEMU-Emulator öffnet sich

Auf dem Login-Bildschirm melden Sie sich als root mit leerem Passwort an (falls debug-tweaks gesetzt wurde).

Login-Screen des erzeugten Yocto-Systems

Führen Sie zur Funktionsprüfung einfache Befehle aus: date, ifconfig, uname.

Basisbefehle zur Prüfung des Systems

Typische Probleme und Fehlerbehebung

  • Build schlägt als root fehl: Wechseln Sie zu normalem Benutzer, erneut source oe-init-build-env ausführen und bitbake neu starten.
  • Netzwerkausfälle während Downloads: Löschen Sie partiell heruntergeladene Dateien in ${DL_DIR} und starten Sie bitbake erneut.
  • Platzmangel: Leeren Sie SSTATE_CACHE oder verwenden Sie ein externes Laufwerk für DL_DIR und SSTATE_DIR.
  • QEMU-Fenster erscheint nicht in Headless-SSH-Sitzungen: Verwenden Sie lokale GUI-Sitzung oder RDP.

Wichtig: Lesen Sie das bitbake-Log (build/tmp/work/…/temp/log.do_compile) bei Kompilationsfehlern, dort stehen die genauen Fehlermeldungen.

Alternative Ansätze und Abwägungen

  • Yocto vs. Buildroot: Buildroot ist einfacher und schneller für einfache Images, Yocto bietet mehr Flexibilität, Paketverwaltung und Wiederverwendbarkeit durch Layer.
  • Toaster/HOB: Web‑GUI-Tools wie Toaster können die Verwaltung erleichtern, sind aber nicht erforderlich und in manchen Umgebungen nicht verfügbar.
  • Verwenden eines neueren Yocto-Releases: Neuere Versionen enthalten Bugfixes und aktuellere Pakete; Migration erfordert Anpassungen an Layer und Rezepte.

Mental Model: Wie Yocto organisiert ist

  • Layers: Schichten mit Rezepten (meta, meta-yocto, meta-yourlayer).
  • Recipes (.bb): Beschreiben, wie Pakete gebaut werden.
  • Bitbake: Task-Executor und Scheduler.
  • sstate-cache: Wiederverwendung bereits gebauter Artefakte.

Einfaches Bild: Yocto kombiniert Rezepte (Was), Layer (Woher) und Bitbake (Wie) und erzeugt reproduzierbare Artefakte.

Rollenspezifische Checklisten

Entwickler

  • Lokale Build-Umgebung testen (bitbake core-image-minimal).
  • Rezepte/Layer versionieren.
  • Testscripts für Boot und Funktion bereitstellen.

Integrator

  • DL_DIR/SSTATE_DIR auf schnellem Speicher einrichten.
  • Paketformat (rpm/deb/ipk) auswählen.
  • SDK bauen und verteilen (bitbake -c populate_sdk).

Tester/QA

  • Abnahmekriterien prüfen (siehe Abschnitt Abnahmekriterien).
  • Boot-Logs analysieren und regressionsfreihe Tests durchführen.

Abnahmekriterien

  • Image bootet erfolgreich in QEMU.
  • root-Prompt ist erreichbar und startet, uname gibt erwartete Architektur aus.
  • Netzwerk-Tools (ifconfig/ip) liefern erwartete Schnittstellen.
  • Minimales Set an Paketen ist vorhanden (BusyBox oder vergleichbar).
  • Build ist reproduzierbar: erneuter Build auf sauberem Cache führt zu gleichen Artefakten.

Testfälle und Akzeptanzkriterien

  • TC-01 Boot: System erreicht getty/login innerhalb von 2 Minuten.
  • TC-02 Shell: Ausführung von date, uname, ifconfig liefert sinnvolle Ausgaben.
  • TC-03 Reproduzierbarkeit: Build auf einer anderen Maschine mit gleichen Layern und Varianten führt zu gleichen Image-Checksummen.

Hinweis: Zeiten sind indikativ; exakte Toleranzen in Ihrem Projekt definieren.

Sicherheit und Produktion

  • Entfernen Sie debug-tweaks und setzen Sie sichere Passwörter vor Produktivsetzung.
  • Deaktivieren Sie Root-Login oder konfigurieren Sie SSH-Schlüssel.
  • Entfernen Sie ungenutzte Tools und Pakete, um Angriffsfläche zu minimieren.
  • Führen Sie eine Sicherheitsprüfung der verwendeten Rezepte und Patches durch.

Migrationstipps und Kompatibilität

  • Beim Upgrade auf ein neueres Yocto-Release prüfen Sie inkompatible Änderungen in BB-Files und Layer-Strukturen.
  • Patches in meta-layer dokumentieren und upstream-Tests durchführen.
  • Wenn möglich, SSTATE-Cache zwischen ähnlichen Builds wiederverwenden, um Zeit zu sparen.

Kurze Glossarzeile

Yocto: Build-System für reproduzierbare, angepasste Embedded-Linux-Distributionen.

Zusammenfassung

Diese Anleitung zeigte, wie Sie auf Ubuntu ein minimales Yocto-Image für qemux86-64 erzeugen: Voraussetzungen, Paketinstallation, Poky-Clone, local.conf-Konfiguration, bitbake-Build, QEMU-Start und Tests. Nutzen Sie die Checklisten und Abnahmekriterien für reproduzierbare Ergebnisse. Entfernen Sie Debug-Features und härten Sie das System vor Produktion.

Wichtig: Verwenden Sie leere Root-Passwörter nur in Testumgebungen. Prüfen Sie vor einem Produktiveinsatz alle sicherheitsrelevanten Einstellungen und führen Sie vollständige Integrationstests durch.


Kurze Social Preview

Minimal-Linux mit Yocto auf Ubuntu erstellen und in QEMU starten: Schritt-für-Schritt-Anleitung, Konfiguration, Build, Tests und Checklisten.

Autor
Redaktion

Ähnliche Materialien

No Boot Device Found: Fehler beheben (Windows/Dell)
Fehlerbehebung

No Boot Device Found: Fehler beheben (Windows/Dell)

Apple Pay auf dem Mac reparieren
Mac-Support

Apple Pay auf dem Mac reparieren

Zwei WhatsApp‑Nummern gleichzeitig nutzen
Mobile

Zwei WhatsApp‑Nummern gleichzeitig nutzen

App startet nicht in der erforderlichen Zeit – schnelle Fixes
Windows Troubleshooting

App startet nicht in der erforderlichen Zeit – schnelle Fixes

In‑Zellen‑Bilder in Excel einfügen und formatieren
Excel

In‑Zellen‑Bilder in Excel einfügen und formatieren

Terminal-Workspace: Vollständiger TUI-Workflow
Produktivität

Terminal-Workspace: Vollständiger TUI-Workflow