Ubuntu下采用Qemu模拟器模拟开发板进行嵌入式开发
提纲
1、安装VMware虚拟机和Ubuntu
2、安装Qemu
3、编译Linux内核镜像
4、制作根文件系统
5、使用uboot加载内核和根文件系统
6、将根文件系统切换为网络文件系统NFS
1、安装VMware虚拟机和Ubuntu
VMware的安装很简单,不浪费篇幅了。
Ubuntu的镜像下载和系统安装很简单,也不浪费篇幅了。
VMware Players安装很简单,不浪费篇幅了。
以上都安装了,之后要设置软件源为国内软件源,我设置的清华大学apt软件源。
#软件源设置后,更新一下,然后安装gcc、ssh、vim、网络基本工具包(可以查网卡ip地址等)、arm编译器arm-linux-gnueabi-gcc(用于在Ubuntu上给Arm板编译可执行文件)
sudo apt update
sudo apt install open-vm-tools #只针对于vmware-tools安装没有成功的情况,安装成功了就不必执行了
sudo apt install build-essential openssh-server vim net-tools gcc-arm-linux-gnueabi
最后安装一个MobaXterm之类的远程登陆软件,方便通过ssh访问Ubuntu
为Ubuntu配置第二块的网卡
使用qemu启动仿真一个虚拟开发板后,Ubuntu就不能上网了。这是因为我们的Ubuntu主机只有一块网卡,qemu启动后使用这块网卡和虚拟开发板建立了连接,进行通信(挂载NFS根文件系统),导致Ubuntu没有网卡来连接互联网上网了。
解决办法有两个:
一是关掉qemu,重新配置一下网卡,让Ubuntu重新联网;
二是在虚拟机上再添加一块网卡,一个网卡和开发板连接,一个网卡用来连接互联网。
在虚拟机上添加一块网卡零成本,我们当然选择第二种,方法如下:
-
打开虚拟机的设置页面,添加硬件,选择网络适配器,添加第二块网卡,网络连接模式选择NAT模式。

添加好网卡后,重新启动虚拟机,很多朋友使用 ifconfig 命令时可能发现,新添加的网卡无法识别出来,只能识别一个网卡ens33,我们还需要配置文件,参考第2步. -
修改配置文件
/etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
ens34:
dhcp4: yes
bridges:
br0:
dhcp4: yes
interfaces:
- ens33
在这个配置文件中,我们配置了两个网卡:其中ens33用来和开发板建立桥接通信,ens34用来和我们的电脑连接上网。配置好后,运行以下命令,让配置文件生效:
netplan apply
ifconfig
此时,和开发板通信的桥接网口br0,连接互联网的网口ens34都已经配置成功且分配了IP地址。
- 重新启动Qemu,ping命令测试
重新启动/home/tftpboot/boot-nfs.sh脚本启动虚拟开发板,然后使用ping命令测试,Ubuntu和虚拟开发板正常通信(挂载NFS根文件系统),Ubuntu也可以正常上网了,配置完成。
2、安装Qemu
这部分我们正式开始做qemu的配置工作,我们该部分的所有配置工作都是基于vexpress这块开发板来进行的。
u-boot和kernel对vexpress都有完整的BSP支持,使用方便。
Ubuntu20.04对qemu支持良好,直接apt安装即可。
sudo apt install qemu-system
3、编译Linux内核镜像
4、制作根文件系统
5、使用uboot加载内核和根文件系统
6、将根文件系统切换为网络文件系统NFS
参考资料
1、https://www.zhaixue.cc/qemu/qemu-param.html

浙公网安备 33010602011771号