【RK3568】TFTP+NFS启动文件系统
安装TFTP
sudo apt-get install tftp-hpa tftpd-hpa xinetd
确认该文件为以下内容
vi /etc/xinetd.conf

创建TFTP服务器目录
mkdir -p /home/zaki/tftpboot
sudo chmod 777 /home/zaki/tftpboot
打开 TFTP 服务器配置文件"/etc/default/tftpd-hpa",配置 TFTP 服务器工作目录。
sudo gedit /etc/default/tftpd-hpa
修改内容如下
# /etc/default/tftpd-hpaTFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/zaki/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure -c"
执行如下命令,重启 tftpd-hpa 服务器和重启 xinetd 服务。
sudo service tftpd-hpa restart
sudo service xinetd reload
sudo service xinetd restart

安装NFS
安装 NFS 服务器工具
sudo apt-get install nfs-kernel-server

创建 NFS 共享目录
sudo mkdir /home/zaki/nfs_share/
打开"/etc/exports"配置文件,在配置文件中添加如下配置命令,设置服务器 NFS 共享
目录及操作权限。
sudo gedit /etc/exports
内容如下:
/home/zaki/nfs_share/ *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
执行如下命令重启 NFS 服务器后,即可查询服务器本地 NFS 共享目录名称。
sudo /etc/init.d/nfs-kernel-server restart
showmount -e

确保网络Ping通
拷贝内核至tftp服务器目录

解压跟文件系统镜像至nfs共享目录
sudo mount -o loop ./rootfs.img /home/zaki/nfs_share/

配置Uboot
setenv rootpath /home/zaki/nfs_share //设置 NFS 服务器共享目录路径
setenv serverip 192.168.5.11 //设置 NFS 和 TFTP 服务器 IP 地址
setenv ipaddr 192.168.5.9 //设置板子的 IP 地址,与服务器 IP 地址同网段
setenv netmask 255.255.255.0 //设置子网掩码
setenv gatewayip 192.168.5.255 //设置网关 IP 地址
setenv netboot "echo booting from network...; setenv autoload no; tftpboot 0x20000000 boot.img; bootm 0x20000000" //设置默认启动模式为网络启动
setenv bootcmd run netboot
setenv bootargs "root=/dev/nfs root=/dev/nfs nfsroot=${serverip}:${rootpath},v3, rw nfsaddrs=${ipaddr}:${serverip}:${gatewayip}:255.255.255.0::eth0:off" // 由于环境变量 nfsroot、nfsaddrs 会传递至内核,nfsaddrs = 评估板 IP:NFS 服务器 IP:网关:子网掩码,环境变量 serverip、ipaddr 仅在 U-Boot 阶段生效,因此需在 nfsaddrs 中再次设置评估板 IP 和 NFS 服务器 IP。"eth0:off"代表评估板不自动获取 IP。
saveenv //保存环境变量
reset //重启
将评估板重启,U-Boot 将自动从 TFTP 服务器工作目录下载内核镜像。下载完成后,启动内核,并从 NFS 服务器共享目录中挂载文件系统。
