ZYNQ uboot 无法成功通过nfs挂载根文件系统
程序员文章站
2022-07-10 19:57:11
...
项目场景:
ZYNQ uboot nfs 挂载根文件系统:
在uboot 中设置nfs在启动时自动挂载根文件系统
问题描述:
正常设置bootcmd与bootargs后,在开机时仍不能自动挂载
setenv bootargs 'console=ttyPS0,115200 root=/dev/nfs rw nfsroot=192.168.23.33:/home/username/linux/nfs/rootfs ip=192.168.23.34:192.168.23.33:192.168.23.1:255.255.255.0::eth0:off'
setenv bootcmd 'tftpboot 8000 zImage; tftpboot 103cdda8 system.dtb; bootz 8000 - 103cdda8'
saveenv
pri
原因分析:
uboot 环境设置正常,那么问题就可能出现在kernel或者rootfs中
rootfs是我们需要挂载的,那么问题就非常可能出现在kernel的设置中。
解决方案:
在ubuntu上进入petalinux工程文件夹:
echo "alias sptl='source $PETALINUX/settings.sh'" >> ~/.bashrc //设置别名
sptl //设置环境变量,已设置好的可忽略
petalinux-config //进入petalinux设置图形界面
进入Image Packging Configuration:
进入根文件系统类型设置:
选择NFS
返回保存,其他设置不变。
利用petalinux-build重新创建petalinux系统
petalinux-build
利用下面的命令生成BOOT.BIN文件
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force
将image文件夹下的BOOT.BIN文件考入sd卡BOOT分区
插入开发板,启动,进入uboot界面,按照之前的步骤(设置bootcmd,bootargs,serverip)进行设置,然后boot启动,会发现根文件系统成功挂载到了ubuntu上。
此时如果选择默认启动,也会自动通过nfs挂载到ubuntu上的根文件系统。