Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 27.05.2016, jądro wanilii
Kroki:
Skompiluj QEMU 2.9.0 ze źródła:
sudo apt-get build-dep qemu-system-arm
git clone --recursive git://git.qemu-project.org/qemu.git
cd qemu
git checkout v2.9.0
./configure
make `nproc`
Pobierz obraz i wyodrębnij z niego jądro i dts:
Pobierz obraz i rozpakuj go:
wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2016-05-31/2016-05-27-raspbian-jessie.zip
unzip 2016-05-27-raspbian-jessie.zip
Zamontuj drugi obraz partycji. Najprostszym sposobem jest:
sudo losetup -f --show -P 2016-05-27-raspbian-jessie.img
Działa to tylko z najnowszymi losetup
wersjami Ubuntu 16.04, innymi metodami pod adresem : /ubuntu/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576
Wyświetla to urządzenie pętli, np .:
/dev/loop0
więc robimy:
sudo mkdir /mnt/rpi
sudo mount /dev/loop0p1 /mnt/rpi
cp /mnt/rpi/kernel7.img bcm2709-rpi-2-b.dtb .
sudo umount /mnt/rpi
sudo losetup -d /dev/loop0
Biegać:
./arm-softmmu/qemu-system-arm \
-M raspi2 \
-append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2" \
-cpu arm1176 \
-dtb bcm2709-rpi-2-b.dtb \
-sd 2016-05-27-raspbian-jessie.img \
-kernel kernel7.img \
-m 1G \
-smp 4 \
-serial stdio \
;
Następnie możesz zalogować się do terminala wyświetlanego na terminalu hosta.
Obecne ograniczenia:
-M raspi2
został dodany w QEMU 2.6.0, a Ubuntu 16.04 ma tylko QEMU 2.5.0, więc musimy skompilować QEMU ze źródła. Ale to nie jest trudne.
- GUI pokazuje, ale nie reaguje na mysz / klawiaturę, testowane zarówno na SDL, jak i VNC. Jednak CLI działa idealnie. Więc równie dobrze możesz użyć obrazu Lite, który ma teraz GUI.
- brak sieci
Ubuntu 16.04, QEMU 2.5.0, Raspbian 2016-05-27, zmodyfikowane jądro
W tej metodzie wykorzystuje -M versatilepb
się oprogramowanie QEMU 2.5.0 systemu Ubuntu 16.04.
Minusem jest to, że musisz pobrać zmodyfikowane jądro (patrz Emulowanie za pomocą Qemu: dlaczego dodatkowe jądro? ) I zmodyfikować obraz, aby był mniej reprezentatywny dla prawdziwego systemu.
Pobierz: https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qemu-4.4.12-jessie
Wybieramy, 4.4.12
ponieważ jest to wersja jądra na obrazie Raspbian.
Proces generowania tego obiektu blob jądra opisano w repozytorium pod adresem : https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools
Dlaczego ten dodatkowy obraz jądra jest potrzebny: Emulacja za pomocą Qemu: dlaczego dodatkowe jądro?
Zmodyfikuj obraz Raspbian, jak wspomniano na stronie : https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulations-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c
Streszczenie:
Zamontuj obraz tak, jak zrobiliśmy to dla -M raspi2
, ale użyj drugiej partycji zamiast pierwszej:
sudo mount /dev/loop0p2 /mnt/rpi
Edytuj obraz:
# Comment out the line present there with #
sudo vim /mnt/rpi/etc/ld.so.preload
# Comment out the lines of type: "/dev/mmcblk*"
sudo vim /mnt/rpi/etc/fstab
Biegać:
sudo apt-get install qemu-system-arm
qemu-system-arm \
-kernel kernel-qemu-4.4.12-jessie \
-cpu arm1176 \
-m 256 \
-M versatilepb \
-no-reboot \
-serial stdio \
-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
-hda 2016-05-27-raspbian-jessie.img
[błąd] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 27.05.2016, jądro wanilii
W tym nowszym Ubuntu QEMU 2.8.0 jest domyślnym, więc nie musimy kompilować QEMU ze źródła -M raspi2
. Jednak 2.8.0 zawiesza się przy starcie po komunikacie:
Console: switching to colour frame buffer device 100x30
To pokazuje, jak niestabilny -M raspi2
jest nadal.
[błąd] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, jądro wanilii
Na tym nowszym obrazie, przy użyciu tej samej metody dla 27.05.2016, jądro wpada w panikę podczas rozruchu z:
Please append a correct "root=" boot option; here are the available partitions:
...
[ 4.138114] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
bztsrc/raspi3-tutorial
RPI3 bare metal na QEMU
https://github.com/bztsrc/raspi3-tutorial to dobry zestaw przykładów, które działają tylko na QEMU, ultraszybkie rozpoczęcie pracy: Jak wykonać emulację QEMU dla nagich obrazów Raspberry Pi