需求:实现设备在uboot状态下利用TFTP和NFS加载内核镜像和根文件系统
总体步骤框架:
1、搭建tftp服务器;参考:https://blog.csdn.net/zengxiaohua123/article/details/80614950
步骤如下:
打开ubuntu终端,首先输入命令:“sudo apt-get install xinetd” 安装xinetd,安装完成xinetd后,接下来安装tftp和tftpd,
输入命令:“sudo apt-get install tftp tftpd”.
然后建立TFTP配置文件,使用命令:"vi /etc/default/tftpd-hpa"建立文件,向文件中写入如下代码(必须按照格式严格对齐):
=============================
#/etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/share/tftp" //这里为对应你的tftp的目录
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
==============================
TFTP_DIRECTORY是TFTP的服务器目录,在这里,我设置为/home/share/tftp。
设置该TFTP的服务器目录权限为777,即对于所有用户可读可写可执行。
sudo chmod 777 /home/share/tftp
重启TFTP服务后,我们才能开始使用TFTP服务器,执行以下命令:
sudo service tftpd-hpa restart
2、Ubuntu下搭建NFS服务;参考:https://blog.csdn.net/qq_37860012/article/details/86717891
3、内核配置nfs文件系统相关config;参考:https://www.cnblogs.com/cjjnjust/articles/1754849.html
4、uboot状态加载kernel和dtb,网络跟文件系统;
A72新SDK代码验证:
set ipaddr 192.168.11.103; setenv serverip 192.168.11.5;
setenv get_images "tftp 0x7000000 Image; tftp 0x6000000 fdt.dtb"
setenv bootargs root=/dev/nfs nfsroot=192.168.11.5:/home/share/tftp/rootfs ip=192.168.11.103:192.168.11.5:192.168.11.1:255.255.255.0::eth0:off init=/linuxrc console=ttyS0,115200
saveenv //根据需要保存环境变量
run get_images; run bootargs; booti 0x7000000 - 0x6000000
Marvell-385通过nfs挂载根文件系统:
BMC验证
set ipaddr 192.168.11.103; setenv serverip 192.168.11.248;
setenv get_images "tftp 0x2000000 boot_385/zImage; tftp 0x1000000 boot_385/dtb"
setenv bootargs console=ttyS0,115200 root=/dev/nfs rw nfsroot=192.168.11.248:/home/share/tftp/bmc_385_filesystem ip=192.168.11.103:192.168.11.248:192.168.11.1:255.255.255.0:armada38x:eth0:none;
run get_images; run bootargs; bootz 0x2000000 - 0x1000000;
setenv bootcmd "run get_images; run bootargs; bootz 0x2000000 - 0x1000000;"
saveenv
要恢复从emmc加载内核和根文件系统:
uboot状态下设置:
setenv bootcmd "run bootcmd_env;"
saveenv