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

相关推荐
Dola_Pan26 分钟前
Linux文件IO(二)-文件操作使用详解
java·linux·服务器
城南云小白2 小时前
Linux网络服务只iptables防火墙工具
linux·服务器·网络
咩咩大主教2 小时前
C++基于select和epoll的TCP服务器
linux·服务器·c语言·开发语言·c++·tcp/ip·io多路复用
Flying_Fish_roe2 小时前
linux-网络管理-网络配置
linux·网络·php
FuLLovers2 小时前
2024-09-13 冯诺依曼体系结构 OS管理 进程
linux·开发语言
xuanyu223 小时前
Linux常用指令
linux·运维·人工智能
有时间要学习4 小时前
Linux——应用层自定义协议与序列化
linux·服务器·网络
阑梦清川4 小时前
简明linux系统编程--互斥锁--TCP--UDP初识
linux·udp·tcp·互斥锁·信号·解锁·加锁
hardStudy_h4 小时前
Linux——常用系统设置和快捷键操作指令
linux·运维·服务器
XF鸭5 小时前
TCP 和 UDP 协议的区别?
linux