原理参考 文档:
https://blog.csdn.net/sinat_41075146/article/details/80800812
简单点参考:
https://blog.csdn.net/qq_37860012/article/details/86717891
详细参数解析参考:
https://www.cnblogs.com/lykyl/archive/2013/06/14/3136921.html
基本指令:
1,服务器端PC: apt-get install nfs-kernel-server
2,客户端嵌入式开发板 : sudo apt-get install nfs-common
3,服务器添加自启动共享目录: sudo vim /etc/exports
最后一行增加:
/share *(insecure,rw,sync,no_root_squash,no_subtree_check) #wq保存退出
# share为共享目录,
* 表示允许任何网段 IP 的系统访问该 NFS 目录(也可以指定ip才可以访问这里就写次ip)
括号内说明:
ro:共享目录只读;
rw:共享目录可读可写;
all_squash:所有访问用户都映射为匿名用户或用户组;
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
root_squash(默认):将来访的root用户映射为匿名用户或用户组;
no_root_squash:来访的root用户保持root帐号权限;
anonuid=<UID>:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);
anongid=<GID>:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);
secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
4, exportfs -r 使增加的生效
5,sudo mkdir /share
sudo chmod -R 777 /share
sudo chown vinson:vinson /nfsroot/ -R # vinson为当前用户,-R 表示递归更改该目录下所有文件
6,sudo /etc/init.d/nfs-kernel-server start 或者
sudo /etc/init.d/nfs-kernel-server restart //启动 nfs服务
7,设置开机自启动 nfs服务: 未做
8,客户端 链接共享位置:sudo mount -t nfs 192.168.0.140:/share /shareown -o nolock 即可
10,注意 查看 状态;nfsstat, 注意:在 mount 与 umount(解除挂载)操作时,用户的当前路径不能是操作的目标路径。