本章介绍如何通过 TFTP 和 NFS 将系统映像传输到目标,并挂载 NFS 根文件系统。
一、在开发机上安装配置TFTP和NFS相关软件
1、安装TFTP服务器 以Ubuntu 22.04为例
sudo apt install tftpd-hpa sudo mkdir /tftpboot sudo chmod 1777 /tftpboot
2、配置tftp服务器
nano /etc/default/tftpd-hpa 改为: TFTP_USERNAME="tftp" TFTP_DIRECTORY="/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure" 重启sudo service tftpd-hpa restart
3、安装nfs
sudo apt install nfs-kernel-server sudo mkdir -p /exports/nfsroot-ccmp25_dvk 然后在/etc/exports中修改: sudo nano /etc/exports /exports/nfsroot-ccmp25_dvk *(rw,no_root_squash,async,no_subtree_check) 重启:sudo service nfs-kernel-server restart
二、在开发机上准备好固件环境
1. 准备设备镜像构件
2. 解压根文件系统到NFS的目录
sudo tar xvfp image.tar.xz -C /exports/nfsroot-ccmp25_dvk
3. 将内核*.bin 文件复制到TFTP目录
sudo cp <kernel-file>.bin /tftpboot
4. 将设备树 *.dtb 文件复制到TFTP目录
sudo cp <device-tree-file>.dtb /tftpboot
5. (可选)将设备树overlay *.dtbo 文件复制到TFTP目录
sudo cp <device-tree-overlay-file>.dtbo /tftpboot
二、配置设备的网络设置
1、获取目标的动态 IP或者设置静态 IP:
setenv autoload no dhcp 或直接静态 setenv ipaddr 192.168.3.222
2. 配置安装了 TFTP 和 NFS 服务器的开发工作站的 IP
setenv serverip 192.168.3.1
三、从TFTP+NFS 网络引导 1. 设置包含 rootfs 的目录以挂载
setenv rootpath /exports/nfsroot-ccmp25_dvk
2. 指定设备树 (*.dtb) 文件名
setenv fdt_file <device-tree-file>.dtb
3. (可选)使用逗号分隔的列表指定要应用的设备树叠加 (*.dtbo) 文件
setenv overlays <overlay1>.dtbo,<overlay2>.dtbo
4. 建立内核文件 (*.bin) 名称。
setenv imagegz <kernel-file>.bin
5. 保存
saveenv
6. 从 TFTP 引导。
dboot linux tftp
现在,目标从 TFTP 服务器加载内核和设备树,并从 NFS 服务器加载根文件系统。
四、完全从 NFS 引导
为避免将 TFTP 用于内核和设备树文件并从 NFS 引导所有内容,请将内核 *.bin 和设备树 *.dtb 文件复制到开发工作站的 NFS 导出目录(而不是 TFTP 目录)。
dboot linux nfs