Aus Raspberry Pi Geek 04/2021

Qemu 5.2 mit verbesserter Unterstützung für Raspberry Pi

© Elena Grigarchuk, 123RF

Himbeermarmelade

Bernhard Bablok

Qemu emuliert eine Vielzahl von Systemarchitekturen. Die aktuelle Version 5.2 erweitert den Support für den Raspberry Pi deutlich. Wir zeigen, was Sie erwarten dürfen und wobei das hilft.

Salopp gesagt verwenden Sie Qemu, um einen RasPi ohne reale Hardware auf einem System mit Windows, Mac OS oder Linux zu betreiben. Dabei emuliert die Software die CPU-Befehle aus der Gastarchitektur in der x86/x64-Welt. Im Gegensatz dazu reicht eine virtuelle Umgebung die Befehle aus dem Gast nur an die Host-CPU durch. Das ist effizienter und mit nur wenig Verlusten bei der Performance verbunden, für fremde Architekturen aber ungeeignet.

Qemu beherrscht beide Disziplinen. Für den RasPi stellt sich allerdings die berechtigte Frage nach dem Warum. Die Hardware kostet nicht viel, der Betrieb mehrerer paralleler Systeme für Testzwecke stellt kein Problem dar. Bei x64-Systemen sieht das oft anders aus. Bei genauem Hinsehen gibt es aber selbst beim RasPi gute Gründe für den Verzicht auf reale Hardware.

Wer viel unterwegs ist und nicht gerade einen der neuen RasPi-Laptops verwendet, kann dank Emulation trotzdem prüfen, ob ein gerade entwickeltes Programm funktioniert. Unabhängig davon erleichtert die Snapshot-Funktion von Qemu die Entwicklerarbeit. Ein Snapshot ist schnell erstellt und der Wechsel zwischen verschiedenen Zuständen auf diese Weise kein Problem.

Virtuelle Hardware

Obwohl Qemu die Emulation diverser ARM-Varianten beherrscht, war lange Zeit kein RasPi-System dabei. Deshalb kam 2014 in unserem ersten Artikel [1] zum Thema unter den Qemu-Versionen 1.7.0 beziehungsweise 2.0.0 die Plattform versatilepb zum Einsatz, deren CPU mit demselben Befehlssatz wie die des RasPi 1 arbeitet. Daraus resultieren jedoch mehrere Nachteile: So läuft der Standard-Raspbian-Kernel nicht, das Board unterstützt nur 256 MByte RAM, und diverse andere Kleinigkeiten machten die Inbetriebnahme schwierig – etwa, weil Raspbian unbedingt auf eine SD-Karte besteht.

In den vergangenen sechs Jahren hat sich bei Qemu viel getan. Zunächst kam die raspi2 genannte virtuelle Hardware dazu, später dann raspi3 (nur 64 Bit) und ganz aktuell in der Version 5.2 dann noch raspi0. Am Anfang waren die Fähigkeiten der Hardware sehr beschränkt, aber seit Qemu 5.1.0 unterstützen die virtuellen RasPi-Plattformen auch USB.

Kurz vor dem aktuellen Release haben die Entwickler die virtuellen Mini-PCs umbenannt: raspi2 heißt jetzt raspi2b, und raspi3 gibt es als raspi3bp und raspi3ap. Die alten Bezeichnungen bleiben zumindest noch in Qemu 5.2 gültig. Wer allerdings im Internet nach Tutorials für den Einsatz dieser virtuellen Plattformen sucht, tut sich schwer. Selbst ganz aktuelle Blogs beschreiben noch den Einsatz des Boards versatilepb; hier schreibt anscheinend jeder vom anderen ab. Grund genug also, den neuen Möglichkeiten von Qemu selbst auf den Zahn zu fühlen.

Installation

Für Windows laden Sie die passende Qemu-Version aus dem Netz herunter [2]. Auf einem Apple-System installieren Sie Qemuz (per Homebrew) oder MacPorts. Falls Sie Linux auf dem Desktop oder Laptop nutzen, erledigen Sie die Installation in der Regel mit dem Paketmanager der jeweiligen Distribution.

Das ist allerdings leichter gesagt als getan: Das aktuelle OpenSuse 15.2, das beim Autor auf dem Rechner läuft, führt lediglich Qemu 4.2.1 im offiziellen Repository; die Version 5.1.0 gibt es immerhin als Community-Paket. Die Rolling-Release-Variante “Tumbleweed” bietet zwar Qemu 5.2 als Community-Paket an, die Installation unter OpenSuse 15.2 scheitert allerdings an inkompatiblen Bibliotheken.

Bei Ubuntu und Red Hat sieht die Situation ähnlich aus: Bis zum Erscheinen des Artikels könnte sich die Situation allerdings verbessern, denn die Entwickler haben Anfang Dezember Qemu 5.2 offiziell freigegeben. Unabhängig davon sollten Sie wegen des USB-Supports mindestens mit Version 5.1.0 starten. Wer das Kompilieren nicht scheut, findet eine Anleitung im Kasten “Selbstbau”. Das ist auf einem halbwegs aktuellen System in wenigen Minuten erledigt.

Selbstbau

Qemu ist ein großes Paket, da es verschiedene Architekturen emuliert. Wer sich allerdings auf die tatsächlich genutzten Plattformen beschränkt, braucht nur wenige Minuten zum Erstellen einer lauffähigen Version. Den prinzipiellen Ablauf zeigt Listing 1. Zuerst installieren Sie die Voraussetzungen, die Qemu benötigt. Sollten Git, Compiler und Build-Tools noch nicht auf dem Rechner vorhanden sein, installieren Sie ein Paket, das üblicherweise build-essential oder ähnlich heißt.

Die Pakete, die Qemu voraussetzt, tragen je nach Distribution andere Namen. In Zeile 2 sehen Sie jene für OpenSuse, ab Zeile 11 die für RasPi-Systeme – auf anderen Debian-basierten Systemen dürften sie genauso heißen. Vorsicht mit dem Paket ninja: Das gibt es auf dem RasPi zwar, es enthält aber ein völlig anderes Programm als das hier benötigte ninja-build.

Die Zeilen 3 bis 7 beziehungsweise 11 bis 15 klonen die Quellen ins Verzeichnis qemu/, erzeugen ein Arbeitsverzeichnis qemu.build/, rufen Configure auf und bauen dann die Software mit allen verfügbaren Prozessoren. Falls irgendeine Voraussetzung fehlt, meckert Configure. Nach der Installation des passenden Pakets starten Sie den Build einfach noch einmal. Die Configure-Argumente unterscheiden sich, da Zeile 6 den ARM-Emulator für den x86-Host baut, während es bei Zeile 14 umgekehrt ist.

Auf einem Ryzen 5 2400G dauert der Make-Aufruf ungefähr zweieinhalb Minuten, während der RasPi 4 knappe zehn Minuten beschäftigt ist. Nach dem erfolgreichen Bau installieren Sie die Programme noch mit dem Kommando aus den Zeilen 8 beziehungsweise 16.

Listing 1

Qemu aus den Quellen bauen

### Installation auf OpenSuse
$ sudo zypper in ninja libpixman-1-0-devel glib2-devel gtk3-devel
$ git clone git://git.qemu-project.org/qemu.git
$ mkdir qemu.build
$ cd qemu.build
$ ../qemu/configure --target-list="arm-softmmu aarch64-softmmu" --disable-docs --disable-vnc --enable-tools --enable-gtk
$ make -j $(nproc)
$ sudo make install
### Installation auf dem Pi
$ sudo apt-get -y install ninja-build libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev libgtk-3-dev
$ git clone git://git.qemu-project.org/qemu.git
$ mkdir qemu.build
$ cd qemu.build
$ ../qemu/configure --target-list="x86_64-softmmu" --disable-docs --disable-vnc --enable-tools --enable-gtk
$ make -j $(nproc)
$ sudo make install

Startvorbereitung

Den Raspberry-Pi-Varianten fehlt allesamt bekanntlich ein BIOS, weshalb der Boot-Vorgang etwas anders abläuft als bei anderen Rechnern. Zuerst startet die GPU (VideoCore), erst später übergibt diese an die ARM-Kerne des Systems. Das hat Auswirkungen auf Qemu, denn das Programm emuliert zwar die CPU und andere Board-Komponenten, nicht aber den Grafikchip. Ein entsprechendes System braucht also Starthilfe.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 8 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben