
码农老王的日常
2023/05/24阅读:8主题:萌绿
嵌入式NFS环境搭建手册
1. 什么是NFS
NFS是Network File System
的缩写,即网络文件系统。它是FreeBSD支持的文件系统中的一种,它允许计算机之间通过TCP/IP网络共享资源。
通过NFS,本地客户端
可以通过明文读写位于远端服务器
上的文件,就像访问本地文件一样。(有些类似Windows系统下的共享文件夹)
2. 嵌入式与NFS
嵌入式驱动程序和应用程序开发中,通常的步骤是:
-
在服务器端编写代码。
-
在服务器端对代码进行交叉编译,得到可执行文件。
-
将可执行文件拷贝到嵌入式设备,查看运行结果。
-
在服务器端优化代码。
-
在服务器端对代码进行交叉编译,得到可执行文件。
-
将可执行文件拷贝到嵌入式设备,查看运行结果。
-
重复
4~6
,直到程序稳定。 -
程序发布。
从以上步骤可以看出,我们需要频繁的在服务器和嵌入式设备之间拷贝文件,比较浪费时间。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 autoconfiguration
、IP: DHCP support
、IP: 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
文件了。
作者介绍

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