0%

基于windows10系统用QEMU模拟树莓派

前言:

本笔记记录windows10平台上使用QEMU模拟树莓派的详细过程。不作概念解释,只记录详细的过程。
主要参考如下:

https://blog.csdn.net/qq_44116653/article/details/112846583

https://cloud.tencent.com/developer/article/1685107

准备工作:

下载QEMU:

网址:https://www.qemu.org/download/

下载kernel-qemu

https://github.com/dhruvvyas90/qemu-rpi-kernel

下载如下这两个文件

kernel-qemu-4.19.50-buster

versatile-pb-buster.dtb

下载将要模拟的树莓派镜像

网址:

https://downloads.raspberrypi.org/raspios_full_armhf/images/raspios_full_armhf-2021-01-12/

我这里下载的是2021-01-11-raspios-buster-armhf-full.zip

使用

安装QEMU:

双击下载好的QEMU安装程序,按照提示往下进行,默认路径:C:\Program Files\qemu

将下载好的img镜像文件、kernel和versatile-pb-buster.dtb都拷贝到QEMU的根目录下

在QEMU根目录打开cmd,输入:(中间不换行)

方式1:

qemu-system-arm -kernel kernel-qemu-4.19.50-buster -cpu arm1176 -m 256 -M versatilepb -dtb versatile-pb-buster.dtb -no-reboot -append “root=/dev/sda2 panic=1 rootfstype=ext4 rw” -net nic -net user,hostfwd=tcp::5022-:22 -hda 2021-01-11-raspios-buster-armhf-full.img

方式2:

qemu-system-arm -kernel kernel-qemu-4.19.50-buster -cpu arm1176 -m 256 -M versatilepb -dtb versatile-pb-buster.dtb -no-reboot -append “root=/dev/sda2 panic=1 rootfstype=ext4 rw” -net nic -net user,hostfwd=tcp::5022-:22 -drive “file=2021-01-11-raspios-buster-armhf-full.img,index=0,media=disk,format=raw”

方式1和方式2分别示范了:-hda和-file 两种方式加载内核镜像,本操作过程改为了-file

错误1:

Could not open 2021-01-11-raspios-buster-armhf-full.img +乱码…

不用CMD的控制台(加载镜像使用了-hda),改使用powershell(加载镜像使用-file),且管理员打开,切换目录到安装qemu的根目录…

错误2:

panic=1: Could not open ‘panic=1’: +乱码…

1命令行中两处用双引号,看看是不是中文状态的双引号

2复制命令行时,两处需要双引号的地方丢失了,补上双引号即可。

最终修改如下:

.\qemu-system-arm.exe -kernel kernel-qemu-4.19.50-buster -cpu arm1176 -m 256 -M versatilepb -dtb versatile-pb-buster.dtb -no-reboot -append “root=/dev/sda2 panic=1 rootfstype=ext4 rw” -net nic -net user,hostfwd=tcp::5022-:22 -drive “file=2021-01-11-raspios-buster-armhf-full.img,index=0,media=disk,format=raw”

修改完毕后再执行

上图中按提示next就可以了。

网络配置:

修改上面的命令行中网络部分内容:

“-net nic -net tap,ifname=tap”

其中,ifname= tap的tap,我用的是虚拟网卡,把他重命名为tap或其他名字(注意区分大小写)。

虚拟网卡修改名称如下:

设置tap的地址:

IP 192.168.200.1

MASK 255.255.255.0

GW:192.168.35.254

DNS 192.168.35.254

忘记截图了修改tap的地址时,同时,说明一下:192.168.35.254是路由器地址。

选择物理网卡,让tap通过共享物理网卡来上网

共享时,选择tap即可。

上面设置完成后,再查看tap的地址:

WIN10自动将tap的IP修改了,如上图所示。

再次启动虚拟机:

.\qemu-system-arm.exe -kernel kernel-qemu-4.19.50-buster -cpu arm1176 -m 256 -M versatilepb -dtb versatile-pb-buster.dtb -no-reboot -append “root=/dev/sda2 panic=1 rootfstype=ext4 rw” -net nic -net tap,ifname=tap -drive “file=2021-01-11-raspios-buster-armhf-full.img,index=0,media=disk,format=raw”

进入树莓派:

查看IP:

使用ifconfig查看,是DHCP自动分配的如下:

树莓派ping主机:

主机ping树莓派

OK,大功告成!

补充:

树莓派中使用root:

sudo su root即可。

树莓派修改静态IP如下:

Ip地址192.168.137.xxx

网关:tap的ip地址192.168.137.1