在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
步驟
-
- 创建用于保存Raspberry Pi文件的目录(例如,/home/user/raspi3)。
-
- 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进行模拟,效果如何呢?