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
Hinweis: Die Paketliste ist umfangreich; insgesamt benötigt die Installation circa 1 GB zusätzlichen Platz für die Entwicklungswerkzeuge und Bibliotheken.
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
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.
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):
Uncommenten bzw. setzen Sie folgende Parameter in local.conf, falls noch auskommentiert:
DL_DIR ?= "${TOPDIR}/downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
TMPDIR ?= "${TOPDIR}/tmp"
PACKAGE_CLASSES ?= "package_rpm"
SDKMACHINE ?= "i686"
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"
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
Wichtig: Führen Sie bitbake als normaler Benutzer aus, nicht als root. Als root schlägt der Build fehl.
Wenn Sie die Umgebungsvariablen neu gesetzt haben, führen Sie erneut source oe-init-build-env aus und starten bitbake erneut.
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).
Nach Abschluss zeigt bitbake die fertigen Tasks an.
Die erzeugten Images finden Sie unter build/tmp/deploy/images/qemux86-64.
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.
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.
Auf dem Login-Bildschirm melden Sie sich als root mit leerem Passwort an (falls debug-tweaks gesetzt wurde).
Führen Sie zur Funktionsprüfung einfache Befehle aus: date, ifconfig, uname.
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.
Ähnliche Materialien

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

Apple Pay auf dem Mac reparieren

Zwei WhatsApp‑Nummern gleichzeitig nutzen

App startet nicht in der erforderlichen Zeit – schnelle Fixes

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