Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2016-05-27, hạt nhân vani
Các bước:
Biên dịch QEMU 2.9.0 từ nguồn:
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`
Tải về hình ảnh và giải nén kernel và dts từ nó:
Tải về hình ảnh và giải nén nó:
wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2016-05-31/2016-05-27-raspbian-jessie.zip
unzip 2016-05-27-raspbian-jessie.zip
Gắn hình ảnh thứ hai của phân vùng. Cách dễ nhất là:
sudo losetup -f --show -P 2016-05-27-raspbian-jessie.img
Điều này chỉ hoạt động với mới nhất losetup
trên Ubuntu 16.04, các phương pháp khác tại: https://askubfox.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576
Điều này in một thiết bị vòng lặp, ví dụ:
/dev/loop0
Vì vậy chúng tôi làm:
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
Chạy:
./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 \
;
Sau đó, bạn có thể đăng nhập vào thiết bị đầu cuối hiển thị trên thiết bị đầu cuối máy chủ của bạn.
Những hạn chế hiện tại:
-M raspi2
đã được thêm vào trong QEMU 2.6.0 và Ubuntu 16.04 chỉ có QEMU 2.5.0, vì vậy chúng tôi phải biên dịch QEMU từ nguồn. Nhưng điều này không khó.
- GUI hiển thị nhưng không phản hồi với chuột / bàn phím, đã được thử nghiệm trên cả SDL và VNC. Nhưng CLI hoạt động hoàn hảo tuy nhiên. Vì vậy, bây giờ bạn cũng có thể sử dụng hình ảnh Lite đã có GUI.
- không có mạng
Ubuntu 16.04, QEMU 2.5.0, Raspbian 2016-05-27, kernel đã sửa đổi
Phương pháp này sử dụng -M versatilepb
hiện có trên QEMU 2.5.0 của Ubuntu 16.04.
Nhược điểm là bạn phải tải xuống một hạt nhân đã sửa đổi (xem Thi đua với Qemu: tại sao hạt nhân phụ? ) Và sửa đổi hình ảnh, vì vậy nó ít đại diện cho hệ thống thực.
Tải xuống: https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qemu-4.4.12-jessie
Chúng tôi chọn 4.4.12
vì đó là phiên bản kernel trong hình ảnh Raspbian.
Quá trình tạo blob kernel đó được mô tả tại kho lưu trữ tại: https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools
Tại sao hình ảnh hạt nhân bổ sung này là cần thiết: Thi đua với Qemu: tại sao hạt nhân phụ?
Sửa đổi hình ảnh Raspbian như được đề cập tại: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulation-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014c
Tóm lược:
Gắn hình ảnh giống như chúng ta đã làm cho -M raspi2
, nhưng sử dụng phân vùng thứ hai thay vì phân vùng thứ nhất:
sudo mount /dev/loop0p2 /mnt/rpi
Chỉnh sửa hình ảnh:
# 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
Chạy:
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
[thất bại] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 2016-05-27, hạt nhân vani
Trên Ubuntu mới hơn này, QEMU 2.8.0 là mặc định, vì vậy chúng tôi không cần phải biên dịch QEMU từ nguồn cho -M raspi2
. Tuy nhiên, 2.8.0 bị treo khi khởi động sau thông báo:
Console: switching to colour frame buffer device 100x30
Điều này cho thấy làm thế nào -M raspi2
vẫn không ổn định .
[thất bại] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, hạt nhân vani
Trên hình ảnh mới hơn này, sử dụng cùng một phương thức cho 2016-05-27, kernel hoảng loạn khi khởi động với:
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 kim loại trần trên QEMU
https://github.com/bztsrc/raspi3-tutorial là một tập hợp các ví dụ hay chỉ hoạt động trên QEMU, ultraquick bắt đầu tại: Cách thực hiện mô phỏng QEMU cho hình ảnh Raspberry Pi bằng kim loại trần