大家好,接下来的一段时间我将开始学习野火的Linux系统课程并将学习到的干货逐步更新到我的CSDN博客中。没时间刷课的同学可以把我的博客喂给AI 突击一下。
目录
什么是NFS?
常见配置命令
常见问题
实战:
1.更新apt:
2.下载NFS软件包:
3.创建一个文件夹:
4.进入/etc/exports文件:
5.编辑/etc/exports文件:
6.更新 exports 配置(不重启服务,动态加载配置)
7.Ubuntu 服务端查看本机 NFS 共享
8.打开MobaXterm软件,连接好电源+usb,启动开发板,登录账密
9.在主机端和MobaXterm串口端都输入ifconfig命令查看主机和板子的IP地址
10.板子串口端PING主机IP地址,主机PING板子IP地址:
11.开发板安装 NFS 客户端
12.开发板查看 NFS 服务器共享目录
13.挂载 NFS 文件系统
什么是NFS?
NFS:网络文件系统,嵌入式开发常用,开发板可以通过网络直接访问 Ubuntu 主机上的共享文件夹,不用反复拷贝文件。
常见配置命令
1.安装服务端
sudo apt install nfs-kernel-server -y2.创建共享文件夹
sudo mkdir -p /home/embedfire/workdir # 修改目录权限,避免挂载权限报错 sudo chmod 777 /home/embedfire/workdir3.编辑 exports 配置文件
sudo vim /etc/exports4.在文件末尾添加这一行(允许任意 IP 访问,嵌入式开发常用)
/home/embedfire/workdir *(rw,sync,no_subtree_check,no_root_squash)参数解释:
/home/embedfire/workdir:要共享的本地目录*:允许所有 IP 访问,可以替换成指定 IP 例如192.168.1.0/24只允许局域网网段rw:可读可写sync:数据同步写入磁盘no_subtree_check:不检查父目录权限,提升性能no_root_squash:客户端 root 用户不压缩权限,嵌入式开发板挂载必加
5.重启 NFS 服务,让配置生效
sudo systemctl restart nfs-kernel-server6.查看 NFS 共享是否生效
showmount -e localhost输出出现共享目录代表服务配置成功。
7.开发板挂载命令
mount -t nfs 192.168.x.x:/home/embedfire/workdir /mnt
192.168.x.x是你的 Ubuntu 主机 IP,/mnt是开发板本地挂载点。
常见问题
- 修改
/etc/exports后必须重启 nfs‑kernel‑server 服务配置才生效。 - 挂载失败:检查 Ubuntu 防火墙,关闭防火墙或者放行 NFS 端口。
- 权限报错:确认共享目录权限、
no_root_squash参数是否写对。
实战:
1.更新apt:
sudo apt update2.下载NFS软件包:
sudo apt install nfs-kernel-server -yNFS会被下载到/etc/exports,
3.创建一个文件夹:
sudo mkdir -p /home/embedfire/workdir4.进入/etc/exports文件:
sudo vi /etc/exports5.编辑/etc/exports文件:
NFS 共享配置行用来告诉 NFS 服务器:哪个文件夹对外共享、允许谁访问、权限是什么。
配置语法:
/home/embedfire/workdir *(rw,sync,no_subtree_check,no_root_squash)| 片段 | 含义 |
|---|---|
/home/embedfire/workdir | Ubuntu 本机要对外共享的文件夹路径 |
* | 允许所有 IP 地址的设备访问;可以改成192.168.1.0/24只允许局域网设备 |
rw | read‑write,客户端可以读、写这个共享目录 |
sync | 同步模式:客户端写入文件,立刻保存到磁盘,防止断电丢数据 |
no_subtree_check | 不校验父目录权限,减少系统开销,提升 NFS 运行速度 |
no_root_squash | 关键(嵌入式开发板必加):开发板上 root 用户访问共享文件夹时,不压制权限。不加这条,开发板 root 会变成普通用户,出现权限不足,无法创建 / 修改文件。 |
6.更新 exports 配置(不重启服务,动态加载配置)
sudo exportfs -arv -a:全部共享目录 -r:重新加载/etc/exports配置 -v:verbose,打印输出过程,看到 exporting 就代表成功两种生效方式二选一:
sudo exportfs -arv:热加载,不重启 NFS 进程,已经挂载的连接不会断开sudo systemctl restart nfs‑kernel‑server:完整重启服务,会断开现有挂载连接
7.Ubuntu 服务端查看本机 NFS 共享
showmount -e #输出列表出现共享目录,代表配置生效。8.打开MobaXterm软件,连接好电源+usb,启动开发板,登录账密
9.在主机端和MobaXterm串口端都输入ifconfig命令查看主机和板子的IP地址
10.板子串口端PING主机IP地址,主机PING板子IP地址:
都能PING通,说明主机的UBUNTU系统和板子上的Debian系统是通的。
11.开发板安装 NFS 客户端
sudo apt install nfs-common -ysudo:管理员权限apt install:安装软件包nfs‑common:NFS 客户端工具包(开发板只做客户端,不需要装 nfs‑kernel‑server 服务端)-y:自动确认安装,不用手动输入 yes
只有开发板是 Debian/Ubuntu 系统才敲这条;很多嵌入式开发板根文件系统已经自带 nfs 客户端,就不用装。
12.开发板查看 NFS 服务器共享目录
showmount -e 192.168.1.100 作用:在开发板上,远程查询 Ubuntu (NFS 服务端) 开放了哪些共享文件夹。服务端、客户端查看 NFS共享目录区别:
| 命令 | 执行机器 | 功能 |
|---|---|---|
showmount -e | Ubuntu(服务端本机) | 查看本机自己的 NFS 共享 |
showmount -e 192.168.x.x | 开发板(客户端) | 远程查看 Ubuntu 的共享目录 |
13.挂载 NFS 文件系统
mount -t nfs 服务端IP:服务端共享目录 开发板本地挂载点 sudo mount -t nfs 192.168.1.100:/home/embedfire/workdir /mnt语句解析
| 片段 | 解释 |
|---|---|
sudo mount | 挂载命令,需要管理员权限 |
‑t nfs | ‑t指定文件系统类型;nfs就是 NFS 网络文件系统 |
192.168.1.100:/home/embedfire/workdir | 服务端地址:共享目录,冒号不能丢,代表 Ubuntu 上的共享文件夹 |
/mnt | 开发板本地挂载点,挂载之后访问开发板/mnt,就等价于访问 Ubuntu 的共享目录 |
逻辑:把 Ubuntu 电脑的文件夹,映射到开发板的 /mnt 目录,开发板读写 /mnt,文件实际存放在 Ubuntu 主机上。
卸载命令
sudo umount /mnt