从网络启动系统

本章介绍如何通过 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