Ở đây tôi có một hình ảnh của Raspberry Pi (được thiết kế lại). Hãy gọi nó làpi2-16gb.img
Mô phỏng ARM Raspberry Pi 2 model B v1.1 trên PC Ubuntu
Bây giờ tôi muốn mô phỏng nó trước khi chèn nó vào Pi 2.
Tôi đã tạo một kịch bản khởi động start_arm_pi.sh
như thế này:
#!/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
Nhưng có lỗi:
pulseaudio: set_sink_input_volume() failed
pulseaudio: Reason: Invalid argument
pulseaudio: set_sink_input_mute() failed
pulseaudio: Reason: Invalid argument
Về tấm ảnh
Trên thực tế có hai phân vùng của tệp hình ảnh pi2-16gb.img
.
/boot/
từ /dev/mmcblk0p1
và /
từ /dev/mmcblk0p2
. Nhưng /dev/mmcblk0p2
được mã hóa bằng mã hóa LUKS .
những kernel.img
có nguồn gốc từ phân vùng bỏ mã hóa/dev/mmcblk0p1
Tất cả các tệp trong phân vùng /dev/mmcblk0p1
(sẽ được gắn kết như /boot/
trong hình này.
Và tôi nghĩ rằng tệp cmdline.txt và tệp config.txt có thể hữu ích.
Nội dung của cmdline.txt
dwc_otg.fiq_fix_enable = 0 console = ttyAMA0,115200 kgdboc = ttyAMA0,115200 console = tty1 thang máy = deadline root = / dev / mapper / crypt_sdcard cryptdevice = / dev / mmcblk
Nội dung của config.txt
initramfs initramfs.gz 0x00f00000 hdmi_ignore_hotplug = 1
Bạn có một số ý tưởng mô phỏng Pi trên máy tính Ubuntu của tôi không?
Cảm ơn bạn một triệu !!
cập nhật
Tôi đã có một Pi 2 vật lý chạy hình ảnh này.
Và từ cổng nối tiếp TTL (Tx, Rx), tôi đã nhận được tin nhắn như sau)
pastebin (chấm) com / Y7Xg5WRg
Tìm thấy một dòng thông tin về lệnh kernel:
. , Họ root = / dev / mapper / crypt_sdcard cryptdevice = / dev / mmcblk0p2: crypt_sdcard rootfstype = ext4 rootwait
Điều này sẽ hữu ích?
cập nhật
Tôi đã tìm thấy qemu
đã hỗ trợ Raspberry Pi 2 từ phiên bản 2.6.0 theo trang doc của nó: wiki.qemu (dot) org / ChangeLog / 2.6
Vì vậy, tôi đã biên dịch qemu
phiên bản 2.6.0 trên PC Ubuntu 14.04 x86_64 của mình. Và tôi đã khởi động nó bằng lệnh này.
/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"
Và đây là đầu ra ngay bây giờ.
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.
Nhưng nó dừng lại ở đây và cửa sổ qemu màu đen không có gì ...
Điều này có nghĩa là có gì đó không ổn với kernel?
File kernel7.img
có nguồn gốc từ /boot/
phân vùng của nó thực sự.
cập nhật
Tôi đã khởi động trình giả lập thành công nhưng bị lỗi ...
/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" \
Trình điều khiển có thể được gắn kết. Ở đây tôi đã thử nó với một hình ảnh rasbian mới nhất2016-05-27-raspbian-jessie.img
Hạt nhân qemu tôi đã sử dụng là từ:
github (chấm) com / dhruvvyas90 / qemu-rpi-kernel
Nhưng tôi đã có một hạt nhân hoảng loạn ...
Đây là lỗi chi tiết.
qemu
2.6?
#!
và/bin/bash
tôi tin rằng không gian đó là bắt buộc để tập lệnh của bạn hoạt động.