前言
相关简介:
NFS(Network File System)即网络文件系统,是 FreeBSD 支持的文件系统
中的一种,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。在 NFS 的应
用中,NFS 的客户端应用可以透明地读写位于远端 NFS 服务器上的文件,就像访
问本地文件一样。
使用 NFS,可以很方便的将 PC 上编译好的程序或者一些其他文件复制到开发
板上调试,省去了频繁插拔 U 盘的繁琐。
要实现 NFS 文件系统,需要现在 PC 的 Ubuntu 系统搭建好 NFS 服务器,并设
置共享目录,开发板挂载该共享目录,达到文件传输的功能。
完成目标:
虚拟机编译c文件,将编译好的文件拷贝到共享目录,,开发板挂载共享目录并拷贝文件到开发板目录中运行。
一、虚拟机Ubuntu配置
Ubuntu 安装 NFS 服务
sudo apt-get install nfs-kernel-server
修改 NFS 配置文件
vim /etc/exports
在最后一行添加:
/srv/nfs4 *(insecure,rw,sync,no_subtree_check)
参数说明:
- /srv/nfs4 : nfs服务器共享的目录(需要本身存在,记得创建否则会挂载失败)。
- :代表允许所有的网段访问(也可以使用具体的IP)
- rw:挂接此目录的客户端对该共享目录具有读写权限
- sync:资料同步写入内存和硬盘
- no_subtree_check:不检查父目录的权限。
重启 NSF 服务器
/etc/init.d/nfs-kernel-server restart
查看本机地址验证本机nfs服务开启是否成功
mount -t nfs -o nolock 192.168.190.128:/srv/nfs4 /mnt
参数说明:
- 192.168.190.128:NSF服务器的IP地址
- /srv/nfs4 :共享目录所在的文件夹,应与搭建服务器是设置的相同
- /mnt :共享目录的挂载地址
然后我们使用交叉编译器编译一个文件先放在共享目录中,方便开发板待会儿运行使用;
#include <stdio.h> int main() { printf("hello world!\r\n"); return 0; }
二、开发板挂载
保证开发板与电脑是在同一个局域网下
ifconfig eth0 up # 打开网卡 udhcpc -i eth0 # dhcp分配IP
电脑和虚拟机以及开发板三者互ping完成通讯表示网络配置成功,然后就可以执行下面的操作;
这里我也搞了好久
好不容易ping通了还是无法挂载
这里的原因是内核不支持nfs,解决办法是在内核图形化配置中配置下面的选项
File systems—>
[*] Network File Systems —>
mount -t nfs -o nolock 192.168.1.6:/srv/nfs4 /mnt cp /mnt/main ./ ./main
执行效果
最后
Linux开发少不了文件的传输,挂载U盘、nfs都是传输文件的一种手段
本章需要注意的点:
- 电脑与开发板一定是要在同一局域网下
- 内核需要开启nfs支持
- 编译运行文件需要使用交叉编译器编译
这里还可以设置一个开机启动自动进行上面的设置大大缩短开发的时间
vi /etc/init.d/rcS
在文件末添加
ifconfig eth0 up # 打开网卡 udhcpc -i eth0 # dhcp分配IP mount -t nfs -o nolock 192.168.1.6:/srv/nfs4 /mnt
2022-7-22补充开发板挂载nfs无法创建文件到PC端
修改权限
vim /etc/exports #/srv/nfs4 *(insecure,rw,sync,no_subtree_check) # 屏蔽之前的 /srv/nfs4 *(insecure,rw,sync,no_root_squash) /etc/init.d/nfs-kernel-server restart