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

相关推荐
Web3探索者15 小时前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo17 小时前
Linux系统中网线与USB网络共享冲突
linux
荣--2 天前
在 strip 二进制 + 基址随机化的栈里做崩溃去重 —— 三阶段算法与一行 Crash Flag
嵌入式·崩溃分析·栈指纹·去重算法
释然小师弟2 天前
Android开发十年:反思与回顾
android·后端·嵌入式
Sokach10152 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
FreakStudio2 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
AlfredZhao3 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3104 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode4 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒6 天前
TShark:Wireshark CLI 功能
linux