AA_123rf-20044901_pilart123RF.jpg

© pilart, 123RF

Eingebettet

Transparente Architektur-Emulation mit Qemu

17.10.2013
Kompakte Systeme wie der Raspberry Pi bieten preisgünstige Hardware für unzählige Verwendungszwecke. Doch wie entwickelt und portiert man Software auf diese Plattformen? Hier kann Qemu weiterhelfen.

Die Entwicklung für System-on-a-Chip-Geräte wie den Raspberry Pi stellt eine größere Herausforderung dar, als man zunächst annehmen könnte. Diese Geräte sind in erster Linie darauf ausgerichtet, fertige Software auszuführen. Daher hat es sich bewährt, Betriebssystem-Images anzubieten, die der Anwender lediglich auf den Speicherchip oder das Speichermedium des Geräts kopiert. Im Falle des Raspberry Pi genügt es, ein 1-zu-1-Abbild auf eine SD-Speicherkarte zu schreiben (etwa mit dd), von der das Gerät bootet.

Doch wie erstellt man ein solches Image, das zusätzliche Dienste oder Frameworks anbieten soll, möglichst effizient? Es liegt nahe, auf dem Gerät selbst die notwendige Software zu installieren und zu kompilieren. Dabei könnte man alle Einstellungen vornehmen, bevor man das Image auf umgekehrtem Wege wieder von der SD-Karte in eine Datei schreibt, um diese weiterzuverteilen. Das Problem: Die beschriebene Prozedur dauert sehr lange, da die kleinen Geräte keine ausreichenden Ressourcen bieten, um darauf ernsthaft zu entwickeln. Auch geduldige Menschen spüren daher schon bald das Verlangen nach einer Lösung, die möglichst reproduzierbar und automatisiert solche Images generiert.

Draufsicht

Der logische erste Schritt besteht also darin, die eigene Perspektive auf den Prozess zu verändern und einen Schritt zurück zu tun. Um beim Raspberry Pi zu bleiben: Mithilfe von Skripten lässt sich etwa das von der Raspberry-Pi-Foundation bereitgestellte Raspbian-Image, das auf Debian basiert, direkt an die eigenen Bedürfnisse anpassen und weiterverteilen. Das spart nicht nur eine Menge Zeit, sondern lässt sich später auch automatisieren und mit einer Umgebung zur Continuous Integration kombinieren, etwa Jenkins CI [1].

Doch auf dem Weg dorthin liegen noch ein paar Stolpersteine. Der gewitzte Entwickler denkt natürlich sofort daran, das Image in eine Chroot-Umgebung einzubinden. So lässt sich darin agieren, als hätte man das System regulär gebootet. Allerdings macht die abweichende Prozessorarchitektur im konkreten Fall dabei einen Strich durch die Rechnung, denn die Intel-CPU kann die binären ARM-Programme nicht ausführen. Besteht also die einzige Lösung darin, einen Raspberry Pi als virtuelle Maschine zu betreiben, mit all den Nachteilen in Sachen Automatisierung, die das mit sich bringt? Nicht zwangsläufig!

Schnell mal emulieren

Ein Übersetzer muss her, der direkt zur Laufzeit einspringt. Qemu [2], der Quick Emulator, dürfte in Verbindung mit Linux' Virtualisierungslösung KVM ein Begriff sein. Doch das Projekt weist noch deutlich mehr Facetten auf. Zusammen mit dem vom Kernel bereitgestellten binftm_misc-Mechanismus bietet die Qemu-User-Emulation die Möglichkeit, auch plattformfremden Binärcode auszuführen. Einzige Voraussetzung: Die Maschine selbst darf nicht als VM laufen, sonst wird es kompliziert – Stichwort: Nested Virtualization.

Unter Debian genügt für die Installation der für die Emulation per Qemu notwendigen Werkzeuge bereits eine einzige Zeile:

$ sudo apt-get install qemu binfmt-support qemu-user-static

Im nächsten Schritt starten Sie den Daemon binfmt-support und lassen sich anschließend mithilfe des Befehls

$ sudo update-binfmts --display

eine Liste aller unterstützten binären Formate anzeigen. Rufen Sie dabei ein Programm auf, das für eine andere Plattform kompiliert wurde, dann erkennt der Daemon das passende Binärformat automatisch und der zugehörige Qemu-CPU-Emulator führt die Datei aus. Er übersetzt dabei simultan die fremden Prozessorbefehle in Kommandos, die sich auf der Intel-Plattform ausführen lassen.

Das Ganze ist allerdings sehr rechenintensiv und lässt sich zudem auf mehrere CPU-Kerne verteilen. Deshalb spielt hier die Taktung der einzelnen CPU-Kerne eine entscheidende Rolle für die Performance. Ein 2-GHz-Kern liegt nur leicht über der Performance des ARM-Prozessors im Raspberry Pi selbst, die Vorteile dieser Methode liegen also eher in der Flexibilität.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Systememulation mit QEMU
    Haben Sie sich schon mal gewünscht, Linux im Fenster unter Linux auszuführen? Oder wie wäre es mit DOS unter Linux? QEMU ist eine Open-Source-Anwendung, die einen kompletten PC in Software emuliert.
  • Qemu 1.7 erschienen
    Die neue Version der Virtualisierungssoftware Qemu bietet unter anderem eine verbesserte Emulation von HDA-Audio, unterstützt prinzipiell mehr als 1 TByte Hauptspeicher und kann ACPI-Tabellen für x86-Hardware erzeugen.
  • Virtualisierung mit KVM
    Mit seinen kleinen, aber feinen Kommandozeilenwerkzeugen ermöglicht KVM, mal eben schnell eine virtuelle Maschine zu starten, ohne sich erst umständlich durch bunte Menüs klicken zu müssen.
  • Virtualisierung auf der Kommandozeile mit KVM
    KVM ermöglicht durch seine kleinen, aber feinen Kommandozeilenwerkzeuge, schnell eine virtuelle Maschine zu starten, ohne sich dazu umständlich durch bunte Menüs klicken zu müssen.
  • Mit Q zum Partnertausch
    Nur ein kleiner schneller Seitensprung, ohne Spuren zu hinterlassen – und das unter den wachsamen Augen der Aktuellen? Qemu macht's möglich.
Kommentare

Infos zur Publikation

LU 12/2014: ANONYM & SICHER

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 2 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...