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重新联网;
二是在虚拟机上再添加一块网卡,一个网卡和开发板连接,一个网卡用来连接互联网。

在虚拟机上添加一块网卡零成本,我们当然选择第二种,方法如下:

  1. 打开虚拟机的设置页面,添加硬件,选择网络适配器,添加第二块网卡,网络连接模式选择NAT模式。
    image
    添加好网卡后,重新启动虚拟机,很多朋友使用 ifconfig 命令时可能发现,新添加的网卡无法识别出来,只能识别一个网卡ens33,我们还需要配置文件,参考第2步.

  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地址。

  1. 重新启动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



posted @ 2026-02-10 18:01  zhangzl419  阅读(36)  评论(0)    收藏  举报