====从网络启动系统====
本章介绍如何通过 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. 准备设备镜像构件
* 内核文件:Image.gz
* 设备树:ccmp25-dvk.dtb
* 适用于您的硬件的设备树overlay文件:如ccmp25_wifi.dtbo等
* 压缩的根文件系统:.tar.xz
2. 解压根文件系统到NFS的目录
sudo tar xvfp image.tar.xz -C /exports/nfsroot-ccmp25_dvk
3. 将内核*.bin 文件复制到TFTP目录
sudo cp .bin /tftpboot
4. 将设备树 *.dtb 文件复制到TFTP目录
sudo cp .dtb /tftpboot
5. (可选)将设备树overlay *.dtbo 文件复制到TFTP目录
sudo cp .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 .dtb
3. (可选)使用逗号分隔的列表指定要应用的设备树叠加 (*.dtbo) 文件
setenv overlays .dtbo,.dtbo
4. 建立内核文件 (*.bin) 名称。
setenv imagegz .bin
5. 保存
saveenv
6. 从 TFTP 引导。
dboot linux tftp
现在,目标从 TFTP 服务器加载内核和设备树,并从 NFS 服务器加载根文件系统。
四、完全从 NFS 引导
为避免将 TFTP 用于内核和设备树文件并从 NFS 引导所有内容,请将内核 *.bin 和设备树 *.dtb 文件复制到开发工作站的 NFS 导出目录(而不是 TFTP 目录)。
dboot linux nfs