1 起因
QEMU是一个虚拟机,有点类似以前的VMware或者VirtualBox。看现在DIY领域玩的挺多的,所以也跟风用一下吧。看介绍说性能比不上VMware,但是模拟的更深入,目前也不是很懂。

因为最近想学习Linux内核,还有就是裸片编程,虽然说树莓派不贵,但是用实体机有时候也挺麻烦。所以还是把虚拟机用起来。
2 Windwos下虚拟
最开始是想在Windows上跑起来的,装的是官网(QEMU)最新版的qemu。用的是2020版的image,内核是64位的kernel8.img,设备树是bcm2710-rpi-3-b.dtb。
跑之前要将image拉到4G。
qemu-img resize 2020-02-13-raspbian-buster.img 4G
创建了一个bat脚本,如下:
cd D:\Program Files\qemu
qemu-system-aarch64.exe -M raspi3b -cpu cortex-a72 -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootdelay=1" -dtb D:\learn\rp3_sim\bcm2710-rpi-3-b.dtb -drive format=raw,file=D:\learn\rp3_sim\2019-09-26-raspbian-buster-lite.img -kernel D:\learn\rp3_sim\kernel8.img -m 1G -smp 4 -serial stdio -usb -device usb-mouse -device usb-kbd -device usb-net,netdev=net0 -netdev user,id=net0,hostfwd=tcp::5555-:22
可以运行起来。

但是,windows下网络死活弄不通,找不到eth0。搞了好几天都没辙。。。
3 Ubuntu下虚拟
==============================20250112更新==============================
之前在windows下面是可以运行树莓派3B了,但是ssh死活连不上,用ifconfig查看了一下eth0也没有,在google上翻遍了都找不到答案,试了很多种参数也不行,所以没办法。网上的资料大部分qemu都是运行在ubuntu下的,只有换在ubuntu下面。这里又遇到问题,因为我的ubuntu云是20的版本,最大只能支持4.3(好像)的qemu,没法支持rasp3b的设备,升级也升不上去。后面打算自己编,又说glib必须要2.66,但是20的ubuntu只有2.64的。这样就死循环了,windows下网卡死活启动不起来,ubuntu下没法装。
最后没办法,把陪伴我一年多的整个云都升级成ubuntu24,这样才能运行。
折腾的欲仙欲死。。。
调用的命令是(其实和windows的基本一致):
qemu-system-aarch64 \
-machine raspi3b \
-cpu cortex-a72 \
-smp 4 -m 1G \
-kernel kernel.img \
-dtb treeblob.dtb \
-drive "file=bullseye.img,format=raw,index=0,if=sd" \
-append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootdelay=1" \
-device usb-net,netdev=net0 -netdev user,id=net0,hostfwd=tcp::5555-:22 \
-nographic
虽然也遇到很多坑,还是相对比较顺利,起码第一次看到eth0了。

可以看到启动相当慢,很多服务甚至在登录后才启动(比windows下慢很多)。
ssh开始会有报错。

执行一下ssh-keygen -f '/home/ubuntu/.ssh/known_hosts' -R '[localhost]:5555'

网络也很顺利的就通了。

好了,终于搞定了,再也不用带着树莓派的板子到处跑了。。。
其实可以看到,Windows和Ubuntu下面启动的命令基本上是一致的,怀疑是驱动不够或者有些虚拟特性本身windows下有点问题。。。也许吧。。。
对了,Qemu还有个图形界面,看着方便很多。用着有点像VMware了。
sudo apt install virt-manager
virt-manager

4 参考
https://www.youtube.com/watch?v=DSv9bDkPzsw
Emulate Raspberry Pi 3 using QEMU in 64 bit | emulate-raspberry-pi3-in-qemu
&spm=1001.2101.3001.5002&articleId=140835725&d=1&t=3&u=aa576819c3fe49209ef65838f369dcd8)
7631

被折叠的 条评论
为什么被折叠?



