LS1046nfs挂载文件系统

对于嵌入式Linux开发,通过NFS挂载根文件系统,根文件系统无需下载到FLASH(FLASH还需要先擦除再写入),可以直接保存在Linux主机,而且在Linux开发的驱动程序也无需下载到Linux开发板的FLASH,这使得开发十分方便快捷,下面记录了通过NFS挂载根文件系统的过程。
linux虚拟机上的修改:
1)打开/etc/exports,编辑里面的内容为

/home/nfs *(rw,sync,insecure,no_root_squash,no_all_squash,no_subtree_check)

2)重新开启nfs

/etc/init.d/nfs-kernel-server restart

3)在/home/nsf放入文件系统
在这里插入图片描述
4)修改ls1046ardb_boot.scr文件
输入boot命令启动内核的过程中,设备会额外执行一个启动脚本:/boot/ls1046ardb_boot.scr
在这里插入图片描述
该脚本位于开发板/dev/mmcblk0p2中的/boot目录下,该脚本在执行过程中会重写bootargs环境变量,这样导致之前用户自己设置的bootargs会被覆盖掉,系统将不能从用户自定义的位置去挂载根文件系统。
ls1046ardb_boot.scr是一个二进制的程序,其中:
源文件位于:flexbuild/configs/board/ls1046ardb/manifest
编译生成的.scr文件位于:flexbuild/build/firmware/u-boot/ls1046ardb/ls1046ardb_boot.scr
编译命令为:flex-builder -i mkdistroscr -a arm64 -m ls1046ardb
其中源文件mainfest中与启动设置bootargs相关的是:

setenv bootargs console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=PARTUUID=$partuuid3 
rw rootwait board_name=$board_name serdes1=$serdes1 $othbootargs;

将上述语句中的setenv bootargs删除,然后重新编译生成.scr程序,并将其更新到开发板emmc的分区2(设备为:/dev/mmcblk0p2)的boot目录下。这样以后我们在uboot中设置的命令就不会被重写了。

5)在开发板u-boot阶段设置bootargs环境变量

=>setenv bootargs 'console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root
fstype=nfsroot root=/dev/nfs nfsroot=192.168.8.10:/home/nfs,proto=tcp,nfsvers=3,nolock 
ip=192.168.8.46:192.168.8.10:192.168.8.1:255.255.255.0::eth1:off 
board_name=$board_name serdes1=$serdes1 $othbootargs'
=>saveenv

192.168.8.10为ubuntu服务器ip,192.168.8.46为开发板ip,保证两ip在同一网段可ping通即可,在uboot阶段默认使用的网口是fm1-mac3,在此阶段该网口名为eth1,此处不可写为fm1-mac3。
重新启动后可实现nfs挂载根文件系统
在这里插入图片描述
在/home/nfs中创建aaa文件夹
在这里插入图片描述
可以看到开发板根目录出现了aaa文件夹,nfs挂载成功
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值