在qemu中启动树莓派

下载树莓派镜像

wget https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2023-10-10/2023-10-10-raspios-bookworm-arm64-lite.img.xz

解压缩

xz -d 2023-10-10-raspios-bookworm-arm64-lite.img.xz

用fdisk命令检测一下

fdisk -l 2023-10-10-raspios-bookworm-arm64-lite.img
Disk 2023-10-10-raspios-bookworm-arm64-lite.img: 2.54 GiB, 2722103296 bytes, 5316608 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7788c428

Device                                      Boot   Start     End Sectors  Size Id Type
2023-10-10-raspios-bookworm-arm64-lite.img1         8192 1056767 1048576  512M  c W95 FAT32 (LBA)
2023-10-10-raspios-bookworm-arm64-lite.img2      1056768 5316607 4259840    2G 83 Linux

映像中有两个分区。第一个分区是启动分区,让我们挂载它看看里面有什么。我们需要知道分区的偏移量,即起始扇区乘以扇区大小。在我们的例子中,扇区大小为 512 字节,因此偏移量为 8192 * 512 = 4194304。

4194304 = 8192 * 512

sudo mkdir /mnt/image
sudo mount -o loop,offset=4194304 ./2023-10-10-raspios-bookworm-arm64-lite.img /mnt/image/

挂载后,就可以进行相应的操作。任何操作都会对镜像进行变更。

设置 ssh

sudo touch /mnt/image/ssh

拷贝内核和设备树

cp /mnt/image/bcm2710-rpi-3-b-plus.dtb ~
cp /mnt/image/kernel8.img ~

重置镜像大小为2的幂数,否则qemu会报错。

qemu-img resize ./2023-10-10-raspios-bookworm-arm64-lite.img 8G

启动

在 linux 上启动

sudo qemu-system-aarch64 \
    -m 1024 \
    -M raspi3b \
    -kernel kernel8.img \
    -dtb bcm2710-rpi-3-b.dtb \
    -sd lite.img \
    -append "console=tty0 root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4" \
    -nographic \
    -device usb-net,netdev=net0 \
    -netdev user,id=net0,hostfwd=tcp::2222-:22 \
    -nographic

在 windows 上启动

qemu-system-aarch64.exe \
    -m 1024 \
    -machine type=raspi3b \
    -kernel kernel8.img \
    -dtb bcm2710-rpi-3-b.dtb \
    -drive format=raw,file=2023-10-10-raspios-bookworm-arm64-lite.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" \
    -serial stdio \
    -no-reboot \
    -device usb-kbd \
    -device usb-mouse \
    -device usb-net,netdev=net0 \
    -netdev user,id=net0,hostfwd=tcp::2222-:22

refs

linux arm

#!/bin/sh
cd `dirname $0`

qemu-system-arm \
-m 1024 \
-M raspi2 \
-kernel kernel7.img \
-dtb bcm2709-rpi-2-b.dtb \
-drive format=raw,file=2020-08-20-raspios-buster-armhf.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" \
-serial stdio \
-no-reboot \
-device usb-kbd \
-device usb-tablet \
-device usb-net,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::2222-:22

https://qiita.com/yaju/items/edf548efd18f0eaab94a
https://peterbabic.dev/blog/how-emulate-raspios-natively-qemu/
https://interrupt.memfault.com/blog/emulating-raspberry-pi-in-qemu

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值