Wie zu emulieren Raspberry Pi Raspbian mit QEMU?
Ich versuche zur Emulation eines Raspberry Pi mit dem Raspian-OS mit QEMU. Ich habe versucht, mehrere Ansätze beschrieben, die auf dem internet, aber ohne Erfolg.
Ich herausgefunden, dass ich brauche, um patch ist ein Linux-Kernel der Montage des gewünschten OS. In meinem Fall habe ich das Rasbian-Lite mit Kernel 4.4:
wget https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2016-05-31/2016-05-27-raspbian-jessie-lite.zip
unzip 2016-05-27-raspbian-jessie-lite.zip
rm 2016-05-27-raspbian-jessie-lite.zip
Als Nächstes habe ich das laden eines Kernel aus https://www.kernel.org/:
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.16.tar.gz
tar -xzf linux-4.4.16.tar.gz
rm linux-4.4.16.tar.gz
Nun cross-kompilieren des Kernels:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
cd linux-4.4.16
make vexpress_defconfig
make all
cd ..
Kann ich jetzt kopieren Sie die boot-image ist ein komprimiertes kernel-image, auto-Extrakte im RAM, zu meinem Arbeitsbereich:
cp linux-4.4.16/arch/arm/boot/zImage zImage
und QEMU laufen lassen
qemu-system-arm -kernel zImage -M vexpress-a9 -m 1024 -cpu cortex-a9 -no-reboot -serial stdio -hda 016-05-27-raspbian-jessie-lite.img -append "root=/dev/sda2 rootfstype=ext4"
Aber ich sehe nur ein schwarz gefüllt QEMU-Fenster. 🙁
Ich denke, dass das problem ist, um den richtigen Kernel. Das kopieren einige der Kernel aus dem Internet noch nie zum Erfolg geführt, weil Sie nicht fit für die OS.
Wie kann ich bauen/patch-Kernel Einbau des OS (ohne Download eine vorhandene) und wie um QEMU laufen lassen richtig?
Vielen Dank im Voraus
Alex
2. Ansatz
Lade ich ein kernel-qemu
von hier aus https://www.dropbox.com/s/g8u93xblz1v1ly0/kernel-qemu?dl=0 und führen QEMU:
qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2" -hda 2016-05-27-raspbian-jessie-lite.img
Dieser bringt mir folgende Ausgabe:
Und es macht Sinn für mich, weil der Kernel 3.10.25 und älter als Raspbian Jessie mit Kernel 4.4.16.
Mit der qemu-kernel von https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/kernel-qemu-4.4.12-jessie
qemu-system-arm -kernel kernel-qemu-4.4.12-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda 2016-05-27-raspbian-jessie-lite.img
Habe ich diese ähnlichen Ergebnis:
Einen neuen Versuch mit einem neuen kernel-qemu 4.4.16:
-
Kopie bauen-kernel-qemu aus https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/master/tools und fügen Sie die folgende Zeile, um eine Arbeitskopie der version für Kernel 4.4.16:
git checkout b05965f284db3e086022f4e318e46cb5bffb1376
-
Laufen
build-kernel-qemu
zu bauen der kernel -sh build-kernel-qemu
-
Laufen QEMU
qemu-system-arm -kernel kernel-qemu -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda 2016-05-27-raspbian-jessie-lite.img
Das Ergebnis:
InformationsquelleAutor der Frage Alex44 | 2016-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie sollten erweitern Sie die Raspbian-Image-Datei, bevor Sie
Montieren Sie die Raspbian-Image-Datei mit kpartx (möglicherweise installieren kpartx)
Ändern Sie die /etc/fstab und kommentieren Sie die MMCBLK mounts
Ändern /etc/ld.so.Vorspannung und kommentieren Sie Zeilen ...
Aushängen und zerstören Schleifen von kpartx
Holen Sie sich die Qemu-kernel passend zu den Raspbian-image hier...
https://github.com/dhruvvyas90/qemu-rpi-kernel
Ich verwendet diesen Befehl, um erfolgreich zu emulieren Raspbian Jessie
InformationsquelleAutor der Antwort Daddyfix
Müssen Sie einen angepassten kernel, um zu laufen, QEMU, weil die raspberry PI hardware ist nicht verfügbar in QEMU. Das ist der Grund, warum dein Erster Ansatz gescheitert.
Ihre zweite Ansatz verwendet einen kernel richtig gepatcht laufen auf der versatile-board (unterstützt von QEMU), so dass ist gut, aber die kernel-3.x ist zu alt für ein modernes Raspbian. Im Prinzip deinen letzten Ansatz sollte gearbeitet haben.
Empfehle ich diese aktualisierte Anleitung (feb 2017), getestet habe ich es mit einen 4.4 kernel und es funktioniert sofort.
Musste ich
format=raw,file=$IMG
option zu vermeiden QEMU-Warnung.Brauchen Sie nicht zu kommentieren
/etc/fstab
können Sie/etc/udev/rules.d/90-qemu.rules
Auch Die ld.so.Vorspannung Ding ist alt und gilt nicht mehr
Skript zur Verfügung gestellt, die auf den genannten Leitfaden wird all dies für Sie und bietet Netzwerk-Zugang zu Ihrem raspbian, indem Sie Ihren Netzwerk-interface mit raspbian.
InformationsquelleAutor der Antwort nachoparker
Ubuntu 16.04 host, QEMU 2.9.0 -M raspi2, Raspbian 2016-05-27, vanilla kernel
Vorteile:
-M raspi2
können wir den vanilla-kernel, das system ist also mehr VertreterEinschränkungen:
-M raspi2
wurde Hinzugefügt, in QEMU 2.6.0, und Ubuntu 16.04 nur QEMU 2.5.0, so haben wir zum kompilieren von QEMU von der Quelle. Aber das ist nicht schwer.Schritte:
Kompilieren von QEMU 2.9.0 von Quelle:
Bild herunterladen und entpacken Sie die kernel-und dts:
Laden Sie das Bild herunter und entpacken Sie es:
Montieren Sie das zweite Bild der partition. Der einfachste Weg ist:
Funktioniert dies nur mit den neuesten
losetup
auf Ubuntu 16.04, andere Methoden an: https://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576Diese Drucke ein loop-Gerät, z.B.:
also tun wir:
Run:
Können Sie sich dann anmelden, auf dem terminal, das zeigt, auf Ihrem host-terminal.
[gescheitert] Ubuntu 17.04, QEMU-2.8.0 -M raspi2, Raspbian 2016-05-27, vanilla kernel
Auf diese neuere Ubuntu, QEMU 2.8.0 ist die Standardeinstellung, so brauchen wir nicht zum kompilieren von QEMU aus der Quelle für
-M raspi2
. Allerdings 2.8.0 hängt beim Booten nach der Meldung:Dies geht um zu zeigen, wie instabil
-M raspi2
noch ist.[gescheitert] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, vanilla kernel
Auf dieses neuere Bild, mit der gleichen Methode für 2016-05-27, die kernel-panic beim Booten mit:
bztsrc/raspi3-tutorial
RPI3 bare-metal auf QEMUhttps://github.com/bztsrc/raspi3-tutorial ist eine gute Sammlung von Beispielen, die gerade arbeiten, auf QEMU, ultraquick Einstieg bei: https://raspberrypi.stackexchange.com/questions/34733/how-to-do-qemu-emulation-for-bare-metal-raspberry-pi-images/85135#85135
InformationsquelleAutor der Antwort Ciro Santilli 新疆改造中心 六四事件 法轮功
Ich hatte ein ähnliches problem mit einer angepassten ubuntu-image.
Ich habe auch angewendet die änderungen wie beschrieben in @Michael Connors Antwort, dann sehe ich das system Booten.
Können Sie fügen Sie den folgenden in
-append=""
zu sehen, was passiert in Ihrem Fall:qemu-system-arm ... -serial stdio -append="... console=ttyAMA0,115200 loglevel=8"
InformationsquelleAutor der Antwort vfdev