开发环境和开发板需要能够互通共享文件,NFS服务的主要目的是在网络上实现文件共享。在嵌入式系统开发中,特别是在嵌入式 Linux 系统开发中,经常会使用 NFS 来实现开发板和开发环境之间的文件共享。这样,就可以在开发环境上进行代码编写、编译和调试等操作,然后通过 NFS 将编译好的程序、镜像文件等传输到嵌入式开发板上运行。
NFS(Network File System)是一种分布式文件系统协议,用于允许一个计算机通过网络访问另一台计算机上的文件系统。搭建该服务分为两部分,一个是服务端,一个是客户端。
一、NFS服务端
1.1 安装NFS服务器
打开Ubuntu终端,输入下面的命令:
shell
sudo apt update
sudo apt install nfs-kernel-server
1.2 配置NFS共享目录
shell
sudo mkdir /home/nfs/shared
1.2.1 打开配置文件
shell
sudo vim /etc/exports
1.2.2 在文件后面中添加一行
shell
/home/nfs/shared *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
/srv/nfs/shared
: 共享的目录路径*
: 允许任何主机访问rw
: 读写权限nohide
: 文件系统被挂载时,该目录将一直可见insecure
: 允许客户端使用非特权端口连接到 NFS 服务器。async
: 异步写入,提高性能no_subtree_check
: 禁用子树检查no_root_squash
: 根用户在客户端将具有服务器上的根用户的权限
1.2.3 重启NFS服务
shell
sudo systemctl restart nfs-kernel-server
1.2.4 验证共享目录
shell
showmount -e
1.3 配置mountd端口
1.3.1 输入sudo gedit /etc/services
打开配置文件
shell
sudo gedit /etc/services
1.3.2 添加以下两行
shell
mountd 9999/tcp
mountd 9999/udp
1.3.3 查看端口
shell
sudo rpcinfo -p
二、NFS客户端
将开发板插入电源,插入串口,打开串口连接工具等待连接,此时打开电源开关即可成功连接上开发板终端。
在配置好开发板网络的前提下进行下面的操作,如果板子没有sudo命令就不用加sudo:
2.1 安装客户端软件
shell
sudo apt update
sudo apt install nfs-common
2.2 创建挂载目录
shell
sudo mkdir -p /mnt/nfs
2.3 进行挂载
这里的192.168.0.121
是服务端的地址
shell
sudo mount 192.168.0.121:/home/nfs/shared /mnt/nfs
或者
shell
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
方式(失败了)
板子开机加载半天没动,吓我一跳,以为成砖了,挂载没有成功,不晓得原因,暂时还是使用终端连接工具提供的自定义宏功能吧。
2.4.1.1 打开/etc/fstab
文件
shell
sudo vim /etc/fstab
2.4.1.2 将挂载信息添加到 /etc/fstab
文件中
这里的192.168.0.121
是服务端的地址
shell
192.168.0.121:/home/nfs /mnt nfs nolock,vers=3,port=2049,mountport=9999 0 0
2.5 验证挂载
shell
mount -a
或
shell
df -h
2.6 使用etc/rc.d/rc.local
方式
我的这个板子没有etc/rc.d/rc.local
我就不弄这个了
嵌入式Linux系列文章:
-
Part 1: Linux开发学习手册------ 一、网络配置 - 推开Linux开发的大门。
-
Part 2: Linux开发学习手册------ 二、搭建NFS网络文件系统服务 - 向开发板共享文件。
END