网络文件系统(NFS)是文件系统之上的一个网络抽象,来允许远程客户端以与本地文件系统类似的方式,来通过网络进行访问。虽然 NFS 不是第一个此类系统,但是它已经发展并演变成 UNIX系统中最强大最广泛使用的网络文件系统。NFS 允许在多个用户之间共享公共文件系统,并提供数据集中的优势,来最小化所需的存储空间。
可以通过挂载的方式,把远端的文件系统不用烧录就能加载到本地,连接方式为以太网,前提就是必须要有网络。
那么NFS的作用是什么,解决哪些问题,我们为什么要开发NFS,对开发者带来了哪些便利性?带着这些问题阅读这篇文章。
文件系统普遍偏大,几十兆很正常,甚至可以上升到上百兆大小,开发过程中每次都是用烧录的方式,肯定可以。
缺点也很明显,
1、要切换工具,烧录需要使用原厂的烧录软件,工具基本也都是串口USB之类。
2、烧录进度有些慢,开发时间都浪费在了等待上面。
要使能NFS功能,需要做PC机和板子都使能NFS才可以。
1、验证PC机NFS功能打开
1.1使用命令查看nfs服务是否开启,如下图则正常开启。
ps -ef|grep nfsd
本机挂载测试,验证PC机NFS功能是否正常。
1.2、自测验证nfs挂载是否成功
2、自测验证nfs挂载是否成功
mount -t nfs 192.168.139.131:/home/nfs_data/ /mnt/nfs/
cd /mnt/nfs下面查看
2、开发板NFS功能
2.1 内核NFS服务开启确认
File systems --->
<*> The Extended 4 (ext4) filesystem
[*] Use ext4 for ext2 file systems
[*] Network File Systems --->
<*> NFS client support
<*> NFS client support for NFS version 2
<*> NFS client support for NFS version 3
<*> NFS client support for NFS version 4 //网络文件系统,18.04的linux对应04版本的NFS
[*] Root file system on NFS //支持从NFS启动,调试字符驱动非常方便,
不用拷贝,可直接共享运行
2.2 uboot中修改启动参数,从远端加载文件系统
从Flash读取加载
command line: console=ttyS0,115200 earlyprintk mtdparts=atmel_nand:256k(bootstrap)ro,768k(uboot)ro,256K(env_redundant),256k(env),512k(dtb),6M(kernel)ro,-(rootfs) rootfstype=ubifs ubi.mtd=6 root=ubi0:rootfs
更改为:NFS方式加载
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/nfs rw nfsroot=192.168.1.129:/home/nfs_data/rootfs,nolock,proto=tcp,nfsvers=4 ip=192.168.1.100:192.168.1.129:192.168.1.1:255.255.255.0::eth0:off
或者把IP参数写成宏,环境变量宏的方式
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/nfs rw nfsroot=192.168.1.129:/home/nfs_data/rootfs ip=$ipaddr:$serverip:$netmask
2.3 内核和设备树也可以通过TFTP方式加载,不用每次都烧录调试
//开发板设置从nfs加载设备树和内核;
在include/configs/at91-sama5_common.h
更改CONFIG_BOOTCOMMAND
#if 0 /**/
#define CONFIG_BOOTCOMMAND "nand read 0x21000000 0x180000 0x80000;" \
"nand read 0x22000000 0x200000 0x600000;" \
"bootz 0x22000000 - 0x21000000"
#else
#define CONFIG_BOOTCOMMAND "tftp 0x21000000 at91-sama5d3_xplained.dtb;" \
"tftp 0x22000000 zImage;" \
"bootz 0x22000000 - 0x21000000"
#endif
芯片手册解读 | Linux底层 | 职场吐槽 | C语言视频
关注微信公众号,更多精彩。