在Debian 12上尝试使用QEMU运行Raspberry Pi 3

首先

这是试着在QEMU上模拟运行大家都喜爱的Raspberry Pi 3时的笔记。

参考网站

    • https://qiita.com/yaju/items/edf548efd18f0eaab94a

 

    https://farabimahmud.github.io/emulate-raspberry-pi3-in-qemu/

构图

+-----------------------------+
| +-------------------------+ |
| | +---------------------+ | |
| | | +-----------------+ | | |
| | | | Raspberry Pi OS | | | |
| | | +-----------------+ | | |
| | | Rapsberry Pi 3      | | |
| | +---------------------+ | |
| | QEMU                    | |
| +-------------------------+ |
| Debian                      |
+-----------------------------+

每个软件的版本

Debian

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

QEMU- 硬件虚拟化仿真器

$ qemu-system-aarch64 --version
QEMU emulator version 7.2.5 (Debian 1:7.2+dfsg-7+deb12u2)
Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
$ qemu-system-aarch64 -M help | grep raspi
raspi0               Raspberry Pi Zero (revision 1.2)
raspi1ap             Raspberry Pi A+ (revision 1.1)
raspi2b              Raspberry Pi 2B (revision 1.1)
raspi3ap             Raspberry Pi 3A+ (revision 1.0)
raspi3b              Raspberry Pi 3B (revision 1.2)
    • ちなみに、別マシンにて8.1.2をビルドしましたが、QEMUでは3B+や4Bのサポートはまだのようです。

 

    • $ qemu-system-aarch64 –version

 

    • QEMU emulator version 8.1.2 (v8.1.2)

 

    • Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers

 

    • $ qemu-system-aarch64 -M help | grep raspi

 

    • raspi0 Raspberry Pi Zero (revision 1.2)

 

    • raspi1ap Raspberry Pi A+ (revision 1.1)

 

    • raspi2b Raspberry Pi 2B (revision 1.1)

 

    • raspi3ap Raspberry Pi 3A+ (revision 1.0)

 

    raspi3b Raspberry Pi 3B (revision 1.2)

树莓派操作系统

    • 2020-08-20-raspios-buster-arm64

https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-08-24/
本当はもっと新しいバージョンを使いたかったのですが、新しいバージョンを使うと、CLIの画面が表示されませんでした。そのため、以下の記事にある2020-08-20-raspios-buster-arm64を使いました。

https://qiita.com/yaju/items/edf548efd18f0eaab94a

步驟

    1. 创建用于保存Raspberry Pi文件的目录(例如,/home/user/raspi3)。

 

    1. mkdir -p /home/user/raspi3

下载Raspberry Pi OS镜像。
cd /home/user/raspi3

wget https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-08-24/2020-08-20-raspios-buster-arm64.zip

解压下载的文件。
unzip 2020-08-20-raspios-buster-arm64.zip

将镜像文件2020-08-20-raspios-buster-arm64.img进行回环挂载。
sudo losetup –show -fP 2020-08-20-raspios-buster-arm64.img

若回环挂载成功,将显示类似以下的设备名称。设备名称可能因环境不同而有所不同。
/dev/loop6

将位于上述设备上的分区/dev/loop6p1挂载到任意目录(例如,/mnt/tmp)。
sudo mkdir /mnt/tmp

sudo mount /dev/loop6p1 /mnt/tmp/

将以下两个文件复制到/hoem/user/raspi3。
cp /mnt/tmp/bcm2710-rpi-3-b.dtb /home/user/raspi3

cp /mnt/tmp/kernel8.img /home/user/raspi3

卸载相应设备。
sudo umount /mnt/tmp

sudo losetup -d /dev/loop6

创建用于启动虚拟机的shell脚本run.sh。
cd /home/user/raspi3

touch run.sh

chmod +x run.sh

vim run.sh

qemu-system-aarch64 \
-m 1024 \
-M raspi3b \
-kernel kernel8.img \
-dtb bcm2710-rpi-3-b.dtb \
-drive format=raw,file=2020-08-20-raspios-buster-arm64.img \
-append “console=ttyAMA0 root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4 dwc_otg.fiq_fsm_enable=0 bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=720” \
-no-reboot \
-device usb-kbd \
-device usb-mouse \
-device usb-net,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::2222-:22 \
-nographic

请执行run.sh。
./run.sh

享受!
$ ./run.sh
[ 0.000000] 在物理CPU 0x0000000000上启动Linux [0x410fd034]
[ 0.000000] Linux版本5.4.51-v8+(dom@buildbot)(gcc版本5.4.0 20160609(Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9))#1333 SMP PREEMPT Mon Aug 10 16:58:35 BST 2020
[ 0.000000] 机器型号:Raspberry Pi 3 Model B

(省略)

[ OK ] 已启动OpenBSD Secure Shell服务器。

Debian GNU/Linux 10 raspberrypi ttyAMA0

raspberrypi 登录

最后

虽然是较旧的版本,但我成功地使用QEMU运行了树莓派操作系统。如果难以获得树莓派,不妨尝试使用QEMU进行模拟,效果如何呢?

bannerAds