Aus Raspberry Pi Geek 04/2014

Raspberry Pi emulieren (Seite 2)

Danach kommentieren Sie den einzigen Eintrag in /etc/ld.so.preload aus (Listing 3). Darüber hinaus erstellen Sie die Datei /etc/udev/rules.d/90-qemu.rules, deren Inhalt exakt jenem aus Listing 4 entsprechen muss. Dabei ist wichtig, das abschließende Komma nicht zu vergessen. Die Datei dient dazu, die Partitionsnamen der ersten Festplatte an die Konventionen des Raspberry Pi anzupassen.

Listing 2

 

$ modprobe loop
$ kpartx -a -s -v "/data/raspbian.img"
$ mount /dev/mapper/loop0p2 "/mnt"
[...]
$ sync
$ umount "/mnt"
$ kpartx -d "/data/raspbian.img"

Listing 3

 

#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so

Listing 4

 

KERNEL=="sda", SYMLINK+="mmcblk0"
KERNEL=="sda?", SYMLINK+="mmcblk0p%n",

Danach bootet das Standard-Raspbian und präsentiert das Menü für die Erstkonfiguration. Auf zwei Dinge sollten Sie hier verzichten: Bei einem emulierten System ist es absolut sinnlos, die Taktfrequenz des “Rechners” zu “optimieren”. Genauso wenig Sinn ergibt das Erweitern des Dateisystems auf die ganze Größe der “SD-Karte” – deren virtuelle Repräsentation fällt ohnehin exakt so groß aus wie das Image selbst. Nach einem Neustart sehen Sie den Standardbildschirm von Raspbian (Abbildung 1).

Abbildung 1: Qemu erlaubt mit einigen Umwegen auch den Start des beliebten Raspberry-Pi-Images Raspbian.

Abbildung 1: Qemu erlaubt mit einigen Umwegen auch den Start des beliebten Raspberry-Pi-Images Raspbian.

Mit der Tastenkombination [Strg]+[Alt]+[G] “fangen” Sie im Emulator den Mauszeiger, dieselbe Kombination gibt ihn wieder frei. In den Vollbildmodus wechseln Sie per [Strg]+[Alt]+[F]. Die Maus reagiert in der Emulation oft recht zäh, im Vollbildmodus ist das aber etwas besser. Hier spüren Sie den größten Unterschied zu einem Raspbian auf echter Hardware.

Anschluss unter dieser Nummer

Schon jetzt erreichen Sie aus dem emulierten System das lokale Netz. Qemu richtet dazu ein sogenanntes User-Mode-Netzwerk ein. Bei dem Emulator handelt es sich ja um ein normales Programm auf dem Host, das über entsprechende Zugriffsrechte aufs LAN verfügt. Jeden Zugriff eines Programms, das innerhalb des Emulators läuft, setzt der Qemu entsprechend um. Sein virtuelles Netzwerk belegt den Adressbereich 10.0.2.x und verfügt über eine integrierte Firewall, die den Zugriff von außen verhindert.

Der DHCP-Server für das Qemu-Netz läuft auf der Adresse 10.0.2.2, was auch der Gateway-Adresse des Wirtssystems entspricht. Das Gastsystem erhält die Adresse 10.0.2.15. Läuft auf dem Wirt etwa der SSH-Daemon, dann erreichen Sie diesen aus dem Gast heraus üblicherweise mittels folgenden Befehls:

$ ssh User@10.0.2.2

Hier ersetzen Sie User durch Ihren Benutzernamen auf dem Hostsystem. Aus der Emulation heraus erreichen Sie übrigens ausschließlich den eigenen Wirt per Ping, alle anderen Ping-Requests verwirft die integrierte Firewall.

Der Zugriff von außen auf das laufende System gestaltet sich dagegen etwas aufwendiger. Dazu ergänzen Sie den Startbefehl des Emulators aus Listing 1 mit den Optionen aus Listing 5. Der Befehl sorgt dafür, dass Qemu die Ports 8022, 8080 und 8443 des Hostrechners auf die Ports 22, 80 und 443 des Gastsystems weiterleitet und die Firewall auf diesen Ports öffnet.

Listing 5

 

-net nic -net user,hostfwd=tcp::8022-:22,hostfwd=tcp::8080-:80,hostfwd=tcp::8443-:443

Auf diese Weise greifen Sie über http://localhost:8080 etwa auf einen im emulierten System laufenden Webserver zu (Abbildung 2). Die Portnummern auf dem Hostsystem wählen Sie frei – diese müssen aber über 1024 liegen, da niedrigere Nummern privilegierte Ports darstellen.

Abbildung 2: Mit den richtigen Parametern aufgerufen, erlaubt Qemu auch den Netzwerkzugriff auf den emulierten Raspberry Pi – im Bild die Startseite des Webservers Lighttpd mit Raspcontrol.

Abbildung 2: Mit den richtigen Parametern aufgerufen, erlaubt Qemu auch den Netzwerkzugriff auf den emulierten Raspberry Pi – im Bild die Startseite des Webservers Lighttpd mit Raspcontrol.

Das beschriebene Setup genügt den Anforderungen der meisten Anwendungszwecke und liefert dabei ausreichende Performance; hier erweist sich im Zweifelsfall eher das klassische DSL als Engpass. Was mit der einfachen Netzwerkkonfiguration aber prinzipiell nicht funktioniert, ist der Zugriff vom emulierten System auf andere Rechner im lokalen Netz.

Mehr Durchsatz, der volle Zugriff auf den Gast und die komplette Integration ins lokale Netz klappen nur mit einer speziellen Punkt-zu-Punkt-Netzwerkverbindung zwischen Host und Gast beziehungsweise mit Bridging. Eine ausführliche Dokumentation dieser fortgeschrittenen Themen finden Sie online im sehr empfehlenswerten Qemu-Buch [6], das Sie bei Bedarf auch in gedruckter Form erwerben können.

Optimierungen

Raspbian und andere Distributionen für den Pi verwenden ein einfaches Format für ihre Abbilder: Sie kopieren den Inhalt einer SD-Karte eins zu eins in eine Datei. Ein anschließendes Komprimieren sorgt für ein geringeres Dateivolumen, aber auf der Platte für die Emulation mit Qemu ist dieser Vorteil wieder dahin.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 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