QEMU Raspberry Pi Emulation

Icon  Name                    Last modified      Size  Description
[PARENTDIR] Parent Directory - [   ] README 2012-07-29 22:40 1.3K [   ] dmesg.log 2012-07-29 22:10 5.1K [IMG] qemu-osmc-2.png 2016-02-28 20:11 303K [IMG] qemu-osmc.png 2016-02-28 19:57 31K [TXT] raspi.patch 2012-07-29 22:31 44K [   ] vmlinux 2012-07-29 21:56 48M

2016-02-28

QEMU now also supports an emulation for Raspberry Pi 2, thanks to Andrew Baumann. I merged the code from his GitHub repository into my QEMU tree. The resulting QEMU was able to successfully install OSMC.

Steps to get so far:

# Create an 1 GiB SD card image from the downloaded OSMC image.
$ cat ~/Downloads/OSMC_TGT_rbp2_20160130.img /dev/zero | dd bs=4096 count=262144 >/tmp/osmc.img
262144+0 Datensätze ein
262144+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 3,15888 s, 340 MB/s

# Mount the first partition from the OSMC image.
$ sudo kpartx -a /home/stefan/Downloads/OSMC_TGT_rbp2_20160130.img
$ sudo mount /dev/mapper/loop0p1 /mnt -o loop,ro

# Run QEMU emulation.
$ arm-softmmu/qemu-system-arm -M raspi2 -kernel /mnt/kernel.img -append "$(cat /mnt/cmdline.txt)" -usbdevice mouse -usbdevice keyboard -drive file=/tmp/osmc.img,if=sd,format=raw

Alas, up to now I could not run the resulting image, maybe because of the missing setend emulation.

2012-07-29

I myself started a Raspberry Pi emulation for QEMU in 2012. Here is some information on this old version.

QEMU for Raspberry-PI (TM)

This directory contains the kernel which I use for
running a Raspberry PI disk image.

The code is based on QEMU with my extensions (QEMU for AR7) and raspi.patch.

This is alpha code with only basic functionality and only for experts,
therefore I don't include more instructions.

Working features:

* Serial console
* Timer
* Kernel boots partially and shows output on serial console

Missing features:

* Framebuffer
* SD card
* Ethernet
* And much more

Command line:

$ qemu-system-arm -M raspi -L pc-bios -kernel vmlinux --append "dma.dmachans=0x3c bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=1024 bcm2708.boardrev=0x2 bcm2708.serial=0xe16a63c5 smsc95xx.macaddr=B8:27:EB:6A:63:C5 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait debug initcall_debug"

File dmesg.log was created without debug information:

$ qemu-system-arm -M raspi -L pc-bios -kernel vmlinux --append "dma.dmachans=0x3c bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=1024 bcm2708.boardrev=0x2 bcm2708.serial=0xe16a63c5 smsc95xx.macaddr=B8:27:EB:6A:63:C5 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait"

Stefan Weil
2012-07-29