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

开发环境和开发板需要能够互通共享文件,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系列文章:

END

相关推荐
耶啵奶膘1 小时前
uniapp-是否删除
linux·前端·uni-app
2401_850410832 小时前
文件系统和日志管理
linux·运维·服务器
XMYX-02 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
二十雨辰4 小时前
[linux]docker基础
linux·运维·docker
饮浊酒5 小时前
Linux操作系统 ------(3.文本编译器Vim)
linux·vim
lihuhelihu5 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
矛取矛求6 小时前
Linux系统性能调优技巧
linux
One_Blanks6 小时前
渗透测试-Linux基础(1)
linux·运维·安全
Perishell6 小时前
无人机避障——大疆与Airsim中的角速度信息订阅获取
linux·动态规划·无人机
爱吃喵的鲤鱼6 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++