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

相关推荐
光而不耀@lgy1 小时前
C++初登门槛
linux·开发语言·网络·c++·后端
偶尔微微一笑1 小时前
AI网络渗透kali应用(gptshell)
linux·人工智能·python·自然语言处理·编辑器
Run1.1 小时前
深入解析 Linux 中动静态库的加载机制:从原理到实践
linux·运维·服务器
The Mr.Nobody1 小时前
STM32MPU开发之旅:从零开始构建嵌入式Linux镜像
linux·stm32·嵌入式硬件
老兵发新帖2 小时前
Ubuntu 上安装 Conda
linux·ubuntu·conda
秋秋秋秋秋雨2 小时前
linux安装单节点Elasticsearch(es),安装可视化工具kibana
linux·elasticsearch·jenkins
码农hbk3 小时前
linux ptrace 图文详解(七) gdb、strace跟踪系统调用
linux·服务器
hotlinhao3 小时前
ThinkPHP6模型中多组条件逻辑或Or查询的使用
linux·服务器·数据库
Jogging-Snail3 小时前
从零开始掌握Linux数据流:管道与重定向完全指南
linux·运维·管道·重定向·linux 数据流·管道原理
niuTaylor3 小时前
Linux驱动开发快速上手指南:从理论到实战
linux·运维·开发语言·驱动开发·c#