Aus Raspberry Pi Geek 04/2021

Qemu 5.2 mit verbesserter Unterstützung für Raspberry Pi (Seite 3)

Danach bootet der virtuelle RasPi 2 ohne Probleme (Abbildung 3). Qemu fängt die Tastatur und Maus beim ersten Klick ins Fenster automatisch, [Strg]+[Alt]+[G] gibt beide wieder frei. “Buster” Lite startet wie üblich mit englischem Tastaturlayout; beim Eingeben des vorab gesetzten Passworts (raspberry für den Benutzer pi) drücken Sie also [Z] für ein “y”, aber das ist bei echten RasPis ebenso.

Abbildung 3: Der RasPi als virtueller Rechner im Emulator.

Abbildung 3: Der RasPi als virtueller Rechner im Emulator.

Das Netzwerk

Was das Netzwerk betrifft, hat sich seit dem letzten Artikel nichts Grundsätzliches geändert: Das emulierte System erhält die IP-Adresse 10.0.2.15 im Netz 10.0.2.0/24. Es kann zwar auf das Internet zugreifen, im lokalen Netz aber nur auf den Host, der aus Sicht der Emulation mit der IP-Adresse 10.0.2.2 arbeitet. Auf dieser Adresse läuft der virtuelle DHCP-Server, die Adresse des DNS-Servers lautet 10.0.2.3.

Auf einem System des Autors gab es Probleme mit der Namensauflösung; anscheinend leitete der Emulator die DNS-Requests nicht richtig weiter. Abhilfe für dieses Problem schuf der Eintrag eines offiziellen DNS-Servers (etwa 8.8.8.8) in den Dateien /etc/resolv.conf und /etc/resolvconf.conf auf dem RasPi-System. Beim Systemstart erstellt das Pi OS die erste Datei aus der zweiten, deshalb überlebt ein Eintrag nur in der ersten Datei den nächsten Neustart nicht.

Die Zeile 12 in Listing 3 konfiguriert noch eine Port-Weiterleitung von Port 22 auf dem Gast auf den Host-Port 8022. Damit lässt sich der emulierte RasPi 2 mittels des Kommandos ssh -p 8022 pi@localhost erreichen. Analoge Weiterleitungen, etwa für einen Webserver, richten Sie ein, indem Sie weitere Ports in diese Zeile eintragen.

Wer vom emulierten System auf das lokale Netz zugreifen will oder mehrere Qemu-Instanzen verbinden möchte, sollte die Qemu-Dokumentation [4] studieren. Die Dokumentation im Netzwerkbereich ist für Qemu-Verhältnisse recht gut, viele andere Bereichen sind dagegen schlecht erfasst.

Snapshots

Qemu bietet verschiedene Möglichkeiten, im Gast gefahrlos herumzukonfigurieren. Am einfachsten ist die etwas unglücklich benannte Option -snapshot, die alle Änderungen temporär macht; Qemu verwirft sie nach dem Beenden der Emulation. Weniger radikal sind Snapshot-Images, die eigentlich den Namen Delta-Images verdient hätten. Der Create-Befehl aus Zeile 13 in Listing 2 erzeugt so ein Image; es verweist über den Parameter -b auf das Original-Image.

Für das Delta-Image verwendet Qemu das Format QCOW2. Ab jetzt rufen Sie den Emulator mit diesem Image auf (Zeile 16); alle Änderungen landen danach hier, und das Original-Image bleibt unangetastet. Sie verwerfen die Änderungen durch einfaches Löschen. Qemu-img kennt auch den Commit-Befehl, der alle Änderungen ins Original-Image integriert.

Neben dieser Methode bietet Qemu noch das Speichern des aktuellen Zustands einer virtuellen Umgebung (-savevm) und deren Wiederherstellung (-loadvm) an. Das hat bereits der letzte Artikel im Detail beschrieben. Allerdings funktioniert das aktuell mit der RasPi-2-Emulation nicht – das liegt an der virtuellen USB-Netzwerkkarte. Es bleibt also zu hoffen, dass die Qemu-Entwickler hier nachlegen und die virtuellen Boards mit einer eingebauten Netzwerkschnittstelle ausstatten.

Zusatz-Hardware

Der RasPi ist in der realen Welt in Bezug auf die Hardware beschränkt. Neben der GPIO-Leiste, die in der virtuellen Maschine nicht existiert, bleibt nur der USB-Anschluss. Qemu kann seit einiger Zeit USB-Geräte des Hosts an den Gast durchreichen, die Dokumentation beschreibt das Vorgehen dafür im Detail. Unter Linux gilt das Feature aber noch als experimentell.

Recht einfach statten Sie dagegen das emulierte System mit einem USB-Stick oder einer USB-Festplatte aus; die Befehle dafür sehen Sie am Ende von Listing 2. Zuerst erzeugen Sie das Image. Danach sorgen die Qemu-Optionen ab Zeile 20 dafür, dass der RasPi einen Massenspeicher am USB-Bus sieht und wie gewohnt als /dev/sda bereitstellt (Abbildung 4). In Sachen Datendurchsatz dürfen Sie jedoch nicht zu viel erwarten: Ein lsusb zeigt, dass der Massenspeicher mit USB 1.1 (12 Mbit/s) angeschlossen ist.

Abbildung 4: Bei Bedarf spendieren Sie dem System im Emulator eine virtuelle USB-Festplatte.

Abbildung 4: Bei Bedarf spendieren Sie dem System im Emulator eine virtuelle USB-Festplatte.

Performance

Wer lieber mit einer grafischen Oberfläche arbeitet, nimmt statt “Buster” Lite einfach die Desktop-Variante (Abbildung 5). Die Auflösung steuern die zusätzlichen Argumente für die Kommandozeile (Listing 3, Zeile 2). Allerdings lässt sich damit nur auf einem modernen, schnellen x86-System einigermaßen erträglich arbeiten.

Abbildung 5: Bei Bedarf betreiben Sie sogar einen grafischen Desktop in der Emulation.

Abbildung 5: Bei Bedarf betreiben Sie sogar einen grafischen Desktop in der Emulation.

Die reine CPU-Leistung misst der Autor stets mit einer simplen Methode: Der Rechner muss mit dem Befehl bc -l <<< "scale=3400; 4*a(1)" die Zahl Pi bis auf 3400 Stellen berechnen. Ein echter RasPi 2 benötigt dafür etwa 48 Sekunden, bei vier parallelen Ausführungen dauert es mit 49 Sekunden nur unwesentlich länger.

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