在win10操作系统下用QEMU模拟使用树莓派的镜像

1 篇文章 0 订阅
1 篇文章 0 订阅

在win10操作系统下用QEMU模拟使用树莓派的镜像


参考自https://blog.csdn.net/chilwb/article/details/106474387

前言

为什么要用Qemu模拟树莓派,因为模拟出来后,可以带着到处走,U盘一拷,有电脑的地方就可以调试。调试出了问题,想重新来过,只要把之前的副本复制过去就可以了。等一切弄好后,再写入SD,进行实机测试,使用。这样避免了带着树莓派跑来跑去,调试错了,反复拨卡、写卡、设置、插卡等操作。为什么要用Qemu模拟拟树莓派,官网不是有VMware等虚拟机版的桌面版了么?因为桌面版就一个,更新也不及时,用Qemu,可虚拟任何版本的树莓派系统,如Ubuntu树莓派版,等等。这是因为桌面版是虚拟系统,只支持X86电脑,Qemu虚拟的是硬件本身,支持的是ARM指令,凡硬件能装的系统,Qemu就能模拟拟使用。

必要的下载

下载QEMU:
网址:https://www.qemu.org/download/
在这里插入图片描述根据自己win10操作系统选择32bit或者64bit
在这里插入图片描述
下载这里exe文件直接就是最新版的

下载Qemu kernel for emulating Rpi on QEMU
网址:https://github.com/dhruvvyas90/qemu-rpi-kernel
(下载速度可能较慢,需要自行挂梯子)
这里有不同版本,可下载最新版,推荐下载的是:kernel-qemu-4.19.50-buster
可下载不同版本的kernel,不同版本的区别可参考README.me
(这里我试过下载5.4.51版本的kernel,没有成功,原因不明,欢迎评论交流)
在这里插入图片描述

下载versatile-pb-buster.dtb
网址:https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/versatile-pb-buster.dtb
(下载速度可能较慢,需要自行挂梯子)
在这里插入图片描述

下载将要模拟的树莓派镜像(也可以用自己做好的镜像)
网址:https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit
我这里下载的是2021-01-11-raspios-buster-armhf-full.zip
在这里插入图片描述
下载好将zip中的img文件解压出来
在这里插入图片描述
如果直接下载速度慢,可以用torrent方式下载

使用

安装QEMU:
双击下载好的QEMU安装程序,按照提示往下进行,安装路径不推荐默认安装路径,因为之后要往程序根目录拷贝文件,安装路径好记即可。我这是使用的是默认的,默认路径:C:\Program Files\qemu

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

在QEMU根目录打开cmd,输入:(中间不换行)
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

其中
在这里插入图片描述
这两处可以替换成之前下载的对应版本

不出意外稍等可以进入系统了
在这里插入图片描述

解释

现在解释一下上面的命令:
-kernel kernel-qemu-4.19.50-buster #内核文件用的是kernel-qemu-4.19.50-buster文件,qemu-rpi-kernel-master.zip解压出来后,挑出来的文件,没有扩展名。如果文件不在QEMU文件夹,要加上地址。
-cpu arm1176 #CPU用的是arm1176
-m 256 #内存是256M,有点偏小,但实际仿真,感觉没影响。据https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki 解释,是因为versatilepb上有个bug,不允许大于256M。
-M versatilepb #用的开发板是versatilepb,可以用qemu-system-arm -M help命令来查看支持的arm开发板。用qemu-system-arm -M versatilepb -cpu help #查看versatilepb开发板所用的CPU型号。树莓派用的型号是ARM 1176。
-dtb versatile-pb-buster.dtb #dtb文件是versatile-pb-buster.dtb,qemu-rpi-kernel-master.zip解压出来后,挑出来的文件,没有扩展名。如果文件不在QEMU文件夹,要加上地址。
-append “root=/dev/sda2 panic=1 rootfstype=ext4 rw” #内核的命令行
-drive “file=2020-05-27-raspios-buster-armhf.img,index=0,media=disk,format=raw” #挂载的驱动器镜像,我这里用的是:2020-05-27-raspios-buster-armhf.img,如果你的是其它文件,请改名,如果在其它文件夹,请加上地址。
-hda 2020-05-27-raspios-buster-armhf.img #也可用这种方式挂载镜像文件,但运行时会出来个警告。警告如下:
“Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
Specify the ‘raw’ format explicitly to remove the restrictions.
vpb_sic_write: Bad register offset 0x2c“
用以上设置就可以正常启动了,剩下的只是有需要地进行设置。
-serial stdio #串口调试,加上这个后,会多一个串口调试窗口。
网络设置几种,大家可按QEMU手册设置。我试过两种,一种是NAT方式,可以上网,但不能跟主机通信,也就是在主机上无法ping或SSH虚拟机,其设置参数是:
-net nic -net user,hostfwd=tcp::5022-:22
另一种是桥接方式,按QEMU手册上的(中文网址:“https://wiki.archlinux.org/index.php/QEMU_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)” ),是:-net nic,model=virtio -net tap,ifname=TAP2,script=no,downscript=no
其实:只用“-net nic -net tap,ifname=TAP2”也没问题。
其中,ifname= TAP2的TAP2,我用的是虚拟网卡,把他重命名为TAP2或其他名字(注意区分大小写)。虚拟网卡可下载openVPN,安装后,会有一个TAP-Win32 Adapter V9虚拟网卡,或者直接下载tap-windows安装程序安装。也可在http://build.openvpn.net/downloads/releases/ 找到相应程序下载安装。
更多的网络配置可以参考https://blog.csdn.net/chilwb/article/details/106474387
因为我没有远程访问的需要就没有往下配置

不足之处欢迎补充

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值