Hier habe ich ein Bild von Raspberry Pi (neu gestaltet). Nennen wir espi2-16gb.img
Emulieren Sie ARM Raspberry Pi 2 Modell B v1.1 auf einem Ubuntu-PC
Jetzt möchte ich es emulieren, bevor ich es physisch in einen Pi 2 einfüge.
Ich habe ein Startskript start_arm_pi.sh
wie folgt erstellt:
#!/bin/bash
# Starts raspberry pi image in configuration mode
qemu-system-arm -kernel ./boot_for_pi2/kernel.img \
-cpu arm1176 -m 1024 \
-M versatilepb -no-reboot -serial stdio \
-append "root=/dev/mapper/crypt_sdcard cryptdevice=/dev/mmcblk0p2:crypt_sdcard panic=1 rootfstype=ext4 rw init=/bin/bash" \
-hda /path/to/pi2-16gb.img
Aber mit Fehler:
pulseaudio: set_sink_input_volume() failed
pulseaudio: Reason: Invalid argument
pulseaudio: set_sink_input_mute() failed
pulseaudio: Reason: Invalid argument
Über das Bild
Tatsächlich gibt es zwei Partitionen der Bilddatei pi2-16gb.img
.
/boot/
von /dev/mmcblk0p1
und /
von /dev/mmcblk0p2
. Das /dev/mmcblk0p2
wird aber durch LUKS-Verschlüsselung verschlüsselt .
Das kernel.img
wird von der unverschlüsselten Partition abgeleitet/dev/mmcblk0p1
Alle Dateien in der Partition /dev/mmcblk0p1
(werden wie /boot/
in diesem Bild bereitgestellt bereitgestellt.
Und ich denke, die Datei cmdline.txt und die Datei config.txt können hilfreich sein.
Inhalt von cmdline.txt
dwc_otg.fiq_fix_enable = 0 console = ttyAMA0,115200 kgdboc = ttyAMA0,115200 console = tty1 lift = Deadline root = / dev / mapper / crypt_sdcard cryptdevice = / dev / mmcblk0p2: crypt_sdcard rootfstype = ext4 rootwait
Inhalt von config.txt
initramfs initramfs.gz 0x00f00000 hdmi_ignore_hotplug = 1
Haben Sie einige Ideen, die Pi auf meinem Ubuntu-PC emulieren?
Vielen Dank, eine Million!
Aktualisiert
Ich hatte einen physischen Pi 2, auf dem dieses Bild ausgeführt wurde.
Und von der seriellen TTL-Schnittstelle (Tx, Rx) erhielt ich folgende Nachrichten:
Pastebin (Punkt) com / Y7Xg5WRg
Es wurde eine Infozeile zum Kernel-Befehl gefunden:
[0.000000] Kernel-Befehlszeile: dma.dmachans = 0x7f35 bcm2708_fb.fbwidth = 656 bcm2708_fb.fbheight = 416 bcm2709.boardrev = 0xa21041 bcm2709.serial = 0x2925606f smsc95xx.macadf: B: 25: = 1 bcm2709.disk_led_gpio = 47 bcm2709.disk_led_active_low = 0 sdhci-bcm2708.emmc_clock_freq = 250000000 vc_mem.mem_base = 0x3dc00000 vc_mem.mem_size = 0x3f000000 dwc_0 = root = / dev / mapper / crypt_sdcard cryptdevice = / dev / mmcblk0p2: crypt_sdcard rootfstype = ext4 rootwait
Wird das hilfreich sein?
Aktualisiert
Ich hatte festgestellt, dass qemu
Raspberry Pi 2 ab Version 2.6.0 gemäß seiner Dokumentseite unterstützt wird: wiki.qemu (dot) org / ChangeLog / 2.6
Also habe ich qemu
Version 2.6.0 auf meinem Ubuntu 14.04 x86_64 PC kompiliert . Und ich habe es mit diesem Befehl gestartet.
/usr/local/src/qemu-2.6.0/bin/debug/native/arm-softmmu/qemu-system-arm \
-kernel /path/to/boot_for_pi2/kernel7.img \
-cpu arm1176 -m 256 \
-M raspi2 \
-no-reboot \
-serial stdio \
-sd /path/to/pi2-16gb.img \
-append "dwc_otg.fiq_fix_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 elevator=deadline root=/dev/mapper/crypt_sdcard cryptdevice=/dev/mmcblk0p2:crypt_sdcard rootfstype=ext4"
Und hier ist jetzt die Ausgabe.
WARNING: Image format was not specified for '/path/to/pi2-16gb.img' and probing guessed raw.
Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
Specify the 'raw' format explicitly to remove the restrictions.
Uncompressing Linux... done, booting the kernel.
Aber es hörte hier auf und das Qemu-Fenster ist schwarz mit nichts ...
Bedeutet das, dass etwas mit dem Kernel nicht stimmt?
Die Datei kernel7.img
wird /boot/
tatsächlich von ihrer Partition abgeleitet .
Aktualisiert
Ich habe den Emulator erfolgreich gestartet, aber mit einem Fehler ...
/usr/local/src/qemu-2.6.0/bin/debug/native/arm-softmmu/qemu-system-arm \
-kernel /path/to/kernel-qemu-4.4.11-jessie \
-m 256 \
-cpu arm1176 \
-M versatilepb \
-no-reboot \
-serial stdio \
-hda /media/alex/F049-1FB6/2016-05-27-raspbian-jessie.img \
-append "dwc_otg.lpm_enable=0 root=/dev/sda2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait init=/bin/bash" \
Der Treiber kann montiert werden. Hier habe ich es mit einem neuesten rasbianischen Bild getestet2016-05-27-raspbian-jessie.img
Der Qemu-Kernel, den ich verwendet habe, stammt von:
github (dot) com / dhruvvyas90 / qemu-rpi-kernel
Aber ich hatte eine Kernel-Panik ...
Hier ist der Fehler im Detail.
qemu
2.6 einstellen ?
#!
und dem ein Leerzeichen vorhanden ist./bin/bash
Ich glaube, der Leerzeichen ist erforderlich, damit Ihr Skript funktioniert.