码农老王的日常

V1

2023/05/24阅读:8主题:萌绿

嵌入式NFS环境搭建手册

1. 什么是NFS

NFS是Network File System的缩写,即网络文件系统。它是FreeBSD支持的文件系统中的一种,它允许计算机之间通过TCP/IP网络共享资源。

通过NFS,本地客户端可以通过明文读写位于远端服务器上的文件,就像访问本地文件一样。(有些类似Windows系统下的共享文件夹)

2. 嵌入式与NFS

嵌入式驱动程序和应用程序开发中,通常的步骤是:

  1. 在服务器端编写代码。

  2. 在服务器端对代码进行交叉编译,得到可执行文件。

  3. 将可执行文件拷贝到嵌入式设备,查看运行结果。

  4. 在服务器端优化代码。

  5. 在服务器端对代码进行交叉编译,得到可执行文件。

  6. 将可执行文件拷贝到嵌入式设备,查看运行结果。

  7. 重复4~6,直到程序稳定。

  8. 程序发布。

从以上步骤可以看出,我们需要频繁的在服务器和嵌入式设备之间拷贝文件,比较浪费时间。NFS可以解决这一痛点,使得嵌入式设备可以直接访问位于服务器上的可执行文件,免去拷贝文件这一环节。

3. 搭建NFS Server

3.1 服务器基本信息

  • 系统版本:Ubuntu 20.04
  • IP地址:192.168.1.100
  • 通过NFS共享的目录:/haveFun

3.2 创建目录

sudo mkdir /hsaveFun

为了之后的验证方便,可以在目录下创建个测试文件:

sudo touch /haveFun/helloWorld

3.3 安装配置NFS Server服务

  • 安装NFS Server服务

    sudo apt-get install nfs-kernel-server
  • 配置共享目录

    打开/etc/exports文件,注意,要用sudo

    sudo vi /etc/exports

    在文件的末尾添加如下信息:

    /haveFun *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

    关于/etc/exports的语法以后再说,感兴趣的可以百度,但一定要注意,只有在/haveFun*(之间有个空格,其他地方都别加空格。

  • 重启NFS服务

    重启NFS服务,使配置生效。

    sudo /etc/init.d/nfs-kernel-server restart
  • 验证是否配置成功

    该配置的配完了,也重启了,现在就让服务器自己挂载自己的NFS目录试试。

    sudo mount -t nfs -o nolock,vers=3 localhost:/haveFun /mnt

    上面这个命令就是通过NFS服务把/haveFun目录挂载到/mnt目录下,如果挂载成功,那么在/mnt目录下应该能看到helloWorld文件。

    ls /mnt

    如果/mnt目录下有helloWorld文件,那就说明上位机的工作都搞定了,使用下面的命令卸载刚才挂载的目录:

    sudo umount /mnt

    至此,服务器搞定。

4. 搭建 NFS Client

4.1 嵌入式设备信息

  • 开发板型号:iTop4412
  • Linux内核版本:3.0.15
  • 设备IP:192.168.1.15

4.2 Linux内核添加NFS支持

  • 第1步,在Linux源码目录下执行make menuconfig命令,进入配置界面。

  • 第2步,依次选择Networking support -> Networking options

  • 第3步,选中IP: Kernel level autoconfigurationIP: DHCP supportIP: BOOTP support三个选项。

  • 第4步,点击<Exit>退回配置界面首页,选择File Systems->Network File Systems。注意,Network File Systems设置为*

  • 第5步,依次选中下图中显示为*的几项:

  • 第6步,保存,退出配置界面。

  • 第7步,编译内核,烧写到设备中。

5. 挂载NFS目录

  • 第1步,嵌入式设备上电开机。

  • 第2步,使用ping 192.168.1.100验证与NFS Server之间的网络连接是否正常。

  • 第3步,挂载目录

    mount -t nfs -o nolock,vers=3 192.168.1.100:/haveFun /mnt

挂载完成后,就可以在/mnt目录下看到helloWorld文件了。

分类:

后端

标签:

后端

作者介绍

码农老王的日常
V1

公众号:码农老王的日常;聚焦嵌入式和管理