Wie kann man Raspberry Pi Raspbian mit QEMU emulieren?

Ich versuche mit QEMU einen Raspberry Pi mit dem Raspian-Betriebssystem zu emulieren. Ich habe mehrere im Internet beschriebene Ansätze ausprobiert, aber ohne Erfolg.

Ich habe herausgefunden, dass ich einen Linux-Kernel patchen muss, der zum gewünschten Betriebssystem passt. In meinem Fall habe ich mich für Rasbian Lite mit Kernel 4.4 entschieden:

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

Next Ich lade einen Kernel vonhttps: //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 kompiliert den Kernel:

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
cd linux-4.4.16
make vexpress_defconfig
make all
cd ..

Jetzt kann ich das Boot-Image, dh ein komprimiertes Kernel-Image, das automatisch im RAM extrahiert wird, in meinen Arbeitsbereich kopieren:

cp linux-4.4.16/arch/arm/boot/zImage zImage

und QEMU ausführen

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 alles was ich sehe ist ein schwarz gefülltes QEMU-Fenster. :

Ich denke, dass das Problem darin besteht, den richtigen Kernel zu finden. Das Kopieren einiger Kernel aus dem Internet führte nie zum Erfolg, da sie nicht für das Betriebssystem geeignet sind.

Wie kann ich einen zum Betriebssystem passenden Kernel erstellen / patchen (ohne einen vorhandenen herunterzuladen) und wie kann ich QEMU richtig ausführen?

Danke im Vorau
Ale

2nd approach

Ich lade einkernel-qemu von hierhttps: //www.dropbox.com/s/g8u93xblz1v1ly0/kernel-qemu? dl = 0 und Renn QEMU damit

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

Dies bringt mir die folgende Ausgabe:Und es macht für mich Sinn, dass der Kernel 3.10.25 und älter ist als Raspbian Jessie mit Kernel 4.4.16.

Mit dem Qemu-Kernel vonhttps: //github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/kernel-qemu-4.4.12-jessi

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

Ich habe dieses ähnliche Ergebnis erhalten:

Ein neuer Versuch mit einem neuen Kernel-Qemu 4.4.16:

Copy build-kernel-qemu fromhttps: //github.com/dhruvvyas90/qemu-rpi-kernel/tree/master/tool und fügen Sie die folgende Zeile hinzu, um die Version für Kernel 4.4.16 zu überprüfen:

git checkout b05965f284db3e086022f4e318e46cb5bffb1376

Laufbuild-kernel-qemu um den Kernel zu bauen

sh build-kernel-qemu

Lauf 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:

Antworten auf die Frage(8)

Ihre Antwort auf die Frage