Qemu – Raspbian emuleren
Je kan een Rapsberry Pi “Raspbian” image laden en te emuleren in Qemu, en je hebt een “kernel” bestand nodig: qemu-rpi-kernel, plaats deze in de folder waarin je Qemu geïnstalleerd hebt.
Plaats een IMG bestand in de folder van Qemu, het volgende commando kan worden gebruikt om een image op te starten:
qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -redir tcp:2222::22 -hda 2012-09-18-wheezy-raspbian.img
Ps. Bovenstaande commando werkt met:
2012-09-18-wheezy-raspbian.img
2012-12-16-wheezy-raspbian.img
-kernel kernel-qemu
de QEMU-ready kernel.
-cpu arm1176
De computer die we emuleren (ARM1176JZF-S @ 700 MHz).
-m 256
Hoeveel geheugen er beschikbaar moet zijn (in MB).
-M versatilepb
De machinetype om te emuleren.
-no-reboot
Afsluiten in plaats van rebooten.
-serial stdio
Verwijst de seriele poort naar de standaard I/O.
-append “root=/dev/sda2 panic=1”
De locatie van de root partitie, dit verschil per SD image.
-redir tcp:2222::22
Doorlinken van de SSH poort (22) naar poort 2222 op de host.
–hda bestandsnaam.img
Wat er gebruik wordt als harde schijf (hda), in dit geval 2012-09-18-wheezy-raspbian.img.
Ter info: Meer geheugen werkt niet, met 512 MB wordt de emulatie niets eens gestart, dit waarschijnlijk door de limitatie van de qemu-rpi-kernel.
Nieuwere images:
Bij nieuwere images zoals 2015-01-31-raspbian.img moet Qemu gestart worden met -append “root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash”:
qemu-system-armw -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda 2015-01-31-raspbian.img
Ps. qemu_rpi_kernel 3.2.27 werkt met 2012-07-15-wheezy-raspbian.img
Patchen van de Raspbian image voor QEMU
1) Bewerk het bestand /etc/ld.so.preload met het commando:
nano /etc/ld.so.preload
2) Plaats een hekje voor de regel die je ziet:
#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
3) Sla het bestand op CTRL+O (kies voor wijzigingen opslaan)
Nu een symlink plaatsen voor de kernel:
4) Maak een nieuw bestand aan met NANO, met het volgende commando:
nano /etc/udev/rules.d/90-qemu.rules
Voeg de volgende tekst toe:
1 2 3 |
KERNEL=="sda", SYMLINK+="mmcblk0" KERNEL=="sda?", SYMLINK+="mmcblk0p%n" KERNEL=="sda2", SYMLINK+="root" |
5) Sla het bestand op en sluit NANO af.
Meer geheugen toewijzen:
Je kan de image gebruiken zoals hij is, alleen heb je 200 MB aan vrije ruimte, dat is wat weinig! Je kan de image vergrootten met het commando:
qemu-img resize 2012-12-16-wheezy-raspbian.img +1G om zo 1GB extra ruimte toe te voegen, deze vrije ruimte is nog niet actief en wordt in de volgende stappen uitgelegd.
6) Start Qemu met een volledige boot als volgt:
qemu-system-armw -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2015-01-31-raspbian.img
Let op: het opstarten kan enige tijd (5 minuten) duren.
7) Log in met naam: pi, en wachtwoord: raspberry
8) Om de image wijs te maken dat het van een SD kaart leest moeten we een symlink aanmaken, met het volgende commando: sudo ln -snf mmcblk0p2 /dev/root
9) Gebruik nu het commando sudo raspi-config en kies voor de optie “Expand Filesystem” om daadwerkelijk de extra vrije ruimte te gebruiken.
10) Nadat het klaar is, sluit Qemu af en herstart het weer, ja kan nu Raspbian gebruiken
Ps. gebruik het commando startx om de desktop te starten:
Voorbeeld scherm na het opstarten van een image:
Raspbian Desktop op hogere resolutie
Met deze emulatie is de resolutie van de Raspbian desktop ongeveer 400×340 pixels, om dit aan te passen naar bijvoorbeeld 800×600, maak het volgende bestand aan /etc/X11/xorg.conf, met het volgende commando: sudo nano /etc/X11/xorg.conf , met daarin de volgende inhoud:
1 2 3 4 5 6 7 8 9 |
Section "Screen" Identifier "Default Screen" DefaultDepth 16 SubSection "Display" # Viewport 0 0 Depth 16 Modes "800x600" EndSubsection EndSection |
Start de desktop weer met startx om de wijzigingen te zien.
Bronnen:
sentryytech.blogspot.nl
cubik-tech.blogspot.nl
[#/software/qemu_rpi_kernel” ]