在Win10下用Qemu模拟器模拟或虛拟树莓派,包括4B

在Win10下用Qemu模拟器模拟或虛拟树莓派,包括4B

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

下载Qemu kernel for emulating Rpi on QEMU,https://github.com/dhruvvyas90/qemu-rpi-kernel 这里有不同版本,可下载最新版,我下载的是:kernel-qemu-4.19.50-buster ,下载网址:https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/kernel-qemu-4.19.50-buster
在树莓派官网下载你喜欢的镜像。我下载的是2020-05-27-raspios-buster
安装Qemu,其实是解压,放到一个文件夹里,我的是Qemu文件夹。再解压qemu-rpi-kernel-master.zip,针对我的kernel-qemu-4.19.50-buster镜像,我找了其中的两个文件:kernel-qemu-4.19.50-buster、versatile-pb-buster.dtb。该用哪些文件,可查看README.md文件,直接用文本打开就行。

为方便,把kernel-qemu-4.19.50-buster、versatile-pb-buster.dtb和2020-05-27-raspios-buster镜像文件都一起放到安装Qemu 时解压出来的Qemu文件夹。你也可以放其它地方,但在调用它们时,记得加上地址。
按win+R,运行,输入cmd,打开命令提示符。进入上面的Qemu文件夹,输入以下命令(中间不换行):
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 2020-05-27-raspios-buster-armhf.img
就可以启动树莓派了,后面的操作就跟实机操作一样了。

在Win10下用Qemu模拟器模拟或虛拟树莓派,包括4B_第1张图片
现在解释一下上面的命令:
-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.open.net/downloads/releases/ 找到相应程序下载安装。

这时,右击右下角网络图标,点“打开‘网络和internet’设置”,左边栏点选状态,右边栏点“更改网络设置”下面的“更改适配器选项”。在Win10下用Qemu模拟器模拟或虛拟树莓派,包括4B_第2张图片
就会出来一个“网络连接”,刚才建的虚拟网卡就是“以太网”(TAP-Win32 Adapter V9 #2)#2是因为我之前建了一个,现在是第2个。状态为网络电缆被拔出,因为这个虚拟网卡还未绑定。先重命名“以太网”为“TAP2”。右击“以太网”,选“重命名”,我这重命名为“TAP2”,上面桥接网卡的参数就为:ifname= TAP2。
在Win10下用Qemu模拟器模拟或虛拟树莓派,包括4B_第3张图片

现在开始绑定,也就是开通“以太网”。右击电脑网卡,我上网的是”WLAN“,选”属性“
在Win10下用Qemu模拟器模拟或虛拟树莓派,包括4B_第4张图片在Win10下用Qemu模拟器模拟或虛拟树莓派,包括4B_第5张图片

选“共享“,在”家庭网络连接“下拉框中,会列出网络连接上的所有网络,选刚添加的虚拟网卡,我的是“TAP2”。
在Win10下用Qemu模拟器模拟或虛拟树莓派,包括4B_第6张图片
这样,桥接网络就搭好了。如果你查看这个网络的IP地址,是192.168.137.1,这是windows共享网络自动设定的地址。
在命令输入符的QEMU文件夹下,输入:
qemu-system-arm -kernel kernel-qemu-4.19.50-buster -cpu arm1176 -m 256 -M versatilepb -dtb versatile-pb-buster.dtb -append “root=/dev/sda2 panic=1 rootfstype=ext4 rw” -drive “file=2020-05-27-raspios-buster-armhf.img,index=0,media=disk,format=raw” -net nic -net tap,ifname=TAP2
启动的树莓派就是桥接网络,进入后,可发现地址是:192.168.137.X。
这时,你就可用putty等ssh工具用该地址进行连接。

你可能感兴趣的:(树莓派)