从0开始使用QEMU模拟ARM开发环境之uboot通过tftp加载uImage并指定nfs挂载根文件系统

从0开始使用QEMU模拟ARM开发环境系列一览表

从0开始使用QEMU模拟ARM开发环境系列一览表

uboot通过tftp加载uImage

为了通过 tftp 加载有关的文件到指定的内存地址,需要先完成下面2个步骤。

  1. 在主机搭建tftp服务器

  2. QEMU网络功能配置

主机搭建tftp服务器

安装

sudo apt-get install tftp-hpa tftpd-hpa -y

配置

sudo vi /etc/default/tftpd-hpa
或者
sudo gedit /etc/default/tftpd-hpa

根据需求进行修改即可

#/etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/leacock/tftpboot" # tftpd-hpa的服务目录 /tftpboot
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s" # 这里是选项,-c是可以上传文件的参数,-s是指定tftpd-hpa服务目录,上面已经指定

重启服务

sudo service tftpd-hpa restart # stop ,start

测试

tftp 127.0.0.1

QEMU网络功能配置

为了 让 QEMU 能够与主机 建立网络连接,采用桥接的网络连接与Host通信(需要主机内核tun/tap模块支持)

QEMU中的网络,包含两部分的内容

  1. 客户机使用的虚拟网络设备
  2. 和上述虚拟设备通信的网络后端,这些后端负责把虚拟设备的数据包发到宿主机的网络中

QEMU 两种上网方式(不同的网络后端):

user mode network :

这种方式实现虚拟机上网很简单,类似vmware里的nat,qemu启动时加入-user-net参数,虚拟机里使用dhcp方式,即可与互联网通信,但是这种方式虚拟机与主机的通信不方便。

tap/tun network :

这种方式要比user mode复杂一些,但是设置好后 虚拟机<–>互联网 虚拟机<–>主机 通信都很容易

这种方式设置上类似vmware的host-only,qemu使用tun/tap设备在主机上增加一块虚拟网络设备(tun0),然后就可以象真实网卡一样配置它。

TAP后端

QEMU的TAP后端利用宿主机的TAP设备,为客户机提供完整的桥接网络支持,如果外部需要使用标准端口连接到客户机, 或者多个客户机需要相互通信,可以使用该方式。 TAP后端还具有以下优势:

  1. 非常好的性能
  2. 可以配置以支持各种网络拓扑

但是,你需要在宿主机上进行网络拓扑的配置,而且各种系统的配置不同。

主机安装工具包:

sudo apt-get install uml-utilities bridge-utils -y

使用TAP后端前,需要确认你的宿主机的内核支持TAP网络接口: /dev/net/tun 文件存在则说明支持。

ls /dev/net
输出
tun

如果没有这样的文件,可以尝试手工创建:

sudo mkdir /dev/net
sudo mknod /dev/net/tun c 10 200
sudo /sbin/modprobe tun

修改网络配置文件(重启生效)

sudo <
### U-Boot TFTP Ubuntu 挂载配置教程 #### 准备工作 为了成功实现U-Boot环境下的TFTP挂载操作,需先完成一系列准备工作。这包括但不限于构建适用于目标平台的U-Boot版本以及准备必要的启动文件。 对于特定硬件平台(如Vexpress-A9),可以利用PetaLinux工具链来定制化编译U-Boot生成所需的`Boot.BIN`文件[^1]: ```bash petalinux-config -c u-boot petalinux-build -c u-boot ``` 这些命令会根据指定配置选项重新编译U-Boot项目,最终产出适合烧录至开发板Flash中的二进制映像。 #### 文件传输设置 接着,在宿主机端准备好用于网络引导的关键资源,比如内核镜像(`uImage`)、设备树Blob(DTB)以及其他辅助程序等。通常情况下,这些文件会被放置在一个可通过TFTP协议访问的位置上,例如本地服务器或共享存储空间内的某个固定路径下[^2]: ```bash cp linux-5.6/arch/arm/boot/uImage /home/tftpboot/ cp u-boot/u-boot /home/tftpboot/ cp linux-5.6/arch/arm/boot/dts/vexpress-v2p-ca9.dtb /home/tftpboot/ ``` 上述指令展示了如何将所需文件拷贝到预设好的TFTP根目录中以便后续加载过程调用。 #### NFS服务部署 除了基本的文件传送外,还需建立NFS(Network File System)以支持远程根文件系统挂载需求。具体做法涉及创建专门的服务出口点,赋予适当权限给客户端连接使用: ```bash sudo mkdir /home/nfsroot sudo chmod 0777 /home/nfsroot sudo cp -r rootfs/* /home/nfsroot echo "/home/nfsroot *(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports sudo exportfs -ra ``` 这里定义了一个开放式的导出规则允许任何IP地址请求读写该位置的数据;实际应用时可根据安全策略调整相应参数设定。 #### 主机网络接口初始化 为了让虚拟化的ARM架构能够顺利接入局域网与外界通信交流,则有必要预先建立起合适的物理层连结方式。一种常见的方法就是借助于QEMU仿真器所提供的tap设备模拟真实的以太网口行为模式[^3]: ```bash sudo ip tuntap add dev tap0 mode tap user $USER sudo ifconfig tap0 172.16.16.10 netmask 255.255.255.0 up ``` 此段脚本负责新增一个名为`tap0`的隧道接口实例,为其分配静态IPv4地址作为默认网关供内部节点参照定位。 #### 设备树适配优化 针对某些特殊型号的SoC芯片组而言,可能还会遇到兼容性方面的问题阻碍正常运作流程。此时可以通过修改对应的DTB文档内容来修正潜在缺陷从而确保整个系统稳定可靠地执行各项功能特性[^4]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值