开发环境和开发板需求能够互通同享文件,NFS服务的首要目的是在网络上实现文件同享。在嵌入式体系开发中,特别是在嵌入式 Linux 体系开发中,经常会运用 NFS 来实现开发板和开发环境之间的文件同享。这样,就可以在开发环境上进行代码编写、编译和调试等操作,然后经过 NFS 将编译好的程序、镜像文件等传输到嵌入式开发板上运转。

NFS(Network File System)是一种分布式文件体系协议,用于答应一个核算机经过网络访问另一台核算机上的文件体系。建立该服务分为两部分,一个是服务端,一个是客户端。

一、NFS服务端

1.1 安装NFS服务器

翻开Ubuntu终端,输入下面的指令:

sudo apt update
sudo apt install nfs-kernel-server

1.2 装备NFS同享目录

sudo mkdir /home/nfs/shared

1.2.1 翻开装备文件

sudo vim /etc/exports

1.2.2 在文件后边中增加一行

/home/nfs/shared *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

Linux开发学习手册—— 二、建立NFS网络文件体系服务

  • /srv/nfs/shared: 同享的目录路径
  • *: 答应任何主机访问
  • rw: 读写权限
  • nohide: 文件体系被挂载时,该目录将一向可见
  • insecure: 答应客户端运用非特权端口衔接到 NFS 服务器。
  • async: 异步写入,进步功能
  • no_subtree_check: 禁用子树检查
  • no_root_squash: 根用户在客户端将具有服务器上的根用户的权限

1.2.3 重启NFS服务

sudo systemctl restart nfs-kernel-server

1.2.4 验证同享目录

showmount -e

1.3 装备mountd端口

1.3.1 输入sudo gedit /etc/services 翻开装备文件

sudo gedit /etc/services

1.3.2 增加以下两行

mountd 9999/tcp
mountd 9999/udp

Linux开发学习手册—— 二、建立NFS网络文件体系服务

1.3.3 检查端口

sudo rpcinfo -p

Linux开发学习手册—— 二、建立NFS网络文件体系服务


二、NFS客户端

将开发板刺进电源,刺进串口,翻开串口衔接东西等待衔接,此刻翻开电源开关即可成功衔接上开发板终端。

在装备好开发板网络的前提下进行下面的操作,假如板子没有sudo指令就不用加sudo:

2.1 安装客户端软件

sudo apt update
sudo apt install nfs-common

2.2 创立挂载目录

sudo mkdir -p /mnt/nfs

2.3 进行挂载

这儿的192.168.0.121是服务端的地址

sudo mount 192.168.0.121:/home/nfs/shared /mnt/nfs

或许

mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.0.121:/home/nfs/shared /mnt/nfs

2.4 装备体系启动时主动挂载

Linux的部分装备文件在每次体系启动时都会执行一次。因此,假如有需求在体系启动时挂载的NFS同享,可以将对应的挂载指令写入装备文件,比方:1. 经过修改“/etc/fstab”文件的方法。 2. 经过修改“/etc/rc.d/rc.local”文件的方法。 from support.huawei.com/enterprise/…

2.4.1 运用/etc/fstab方法(失利了)

板子开机加载半响没动,吓我一跳,认为成砖了,挂载没有成功,不晓得原因,暂时仍是运用终端衔接东西提供的自定义宏功能吧。

Linux开发学习手册—— 二、建立NFS网络文件体系服务

2.4.1.1 翻开/etc/fstab 文件

sudo vim /etc/fstab

2.4.1.2 将挂载信息增加到 /etc/fstab 文件中

这儿的192.168.0.121是服务端的地址

192.168.0.121:/home/nfs /mnt nfs nolock,vers=3,port=2049,mountport=9999 0 0

Linux开发学习手册—— 二、建立NFS网络文件体系服务

2.5 验证挂载

mount -a

df -h

Linux开发学习手册—— 二、建立NFS网络文件体系服务

2.6 运用etc/rc.d/rc.local方法

我的这个板子没有etc/rc.d/rc.local我就不弄这个了


嵌入式Linux系列文章:

END