【Linux文件系统】NFS文件系统如何生效

网络文件系统(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语言视频

关注微信公众号,更多精彩。
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值