I.MX6U开发板网络环境搭建:NFS服务配置与实战指南(Ubuntu 20.04)
在嵌入式Linux开发中,NFS(网络文件系统)是连接开发板与主机之间高效共享文件的核心工具。本文将带你从零开始,在Ubuntu 20.04上搭建NFS服务,并完成与I.MX6U开发板的联调测试。无论你是刚接触嵌入式开发,还是希望系统梳理NFS配置流程,这篇文章都能为你提供清晰的步骤和实用的经验。
一、NFS简介:为什么嵌入式开发离不开它?
NFS(Network File System)由SUN公司设计,是一种基于UNIX的表示层协议,允许客户端通过网络访问远程服务器上的文件,就像操作本地磁盘一样便捷。在嵌入式Linux开发中,它最大的价值在于:你可以在Ubuntu主机上编译并制作开发板的根文件系统,然后通过NFS将其挂载到开发板的DDR内存中,从而快速迭代和调试系统。
与TFTP(简单文件传输协议)不同,NFS不仅支持文件传输,还支持目录级别的共享和实时访问。这意味着开发板可以直接运行主机上的程序,无需频繁烧录存储介质。对于使用JavaScript、Python、C++或Java等语言开发的嵌入式应用,NFS能显著缩短“修改-编译-测试”的循环周期。
最佳实践:在项目初期,推荐同时搭建TFTP和NFS环境——TFTP用于快速加载内核和设备树,NFS用于挂载根文件系统。这样既能保证启动速度,又能灵活调试。
二、安装NFS服务:一行命令搞定
在Ubuntu 20.04终端中,执行以下命令即可安装NFS服务器:
sudo apt-get install nfs-kernel-server
安装过程会自动下载nfs-kernel-server及其依赖包。如果你之前安装过,系统会提示已是最新版本(如下图所示)。

⚠️ 常见问题:如果遇到依赖错误,请先执行sudo apt update更新软件包列表。在TypeScript或Java项目中,若需要跨平台编译,建议在NFS服务器上安装与开发板相同架构的交叉编译工具链。
三、创建NFS共享目录:权限设置是关键
安装完成后,我们需要创建一个专用的共享目录,并赋予适当的权限。执行以下命令:
sudo mkdir /home/duan/linux/nfs
sudo chmod 777 /home/duan/linux/nfs/
这里我们创建了/home/duan/linux/nfs目录,并递归赋予777权限(可读、可写、可执行)。对于生产环境,建议根据实际需求设置更严格的权限,例如755或770,以提升安全性。

✅ 经验之谈:将NFS目录与项目代码分离管理。例如,在/home/duan/linux/nfs下存放根文件系统,而在/home/duan/project下存放C++或Python源码,通过软链接或挂载点关联,避免文件混乱。
四、配置NFS服务:编辑exports文件
NFS的核心配置文件是/etc/exports。执行以下命令打开它:
sudo vi /etc/exports
在文件末尾添加如下内容:
/home/duan/linux/nfs *(rw,sync,no_root_squash)
各参数含义如下:
- rw:允许客户端读写共享目录。
- sync:同步写入,确保数据一致性(推荐用于调试)。
- no_subtree_check:禁用子树检查,提升性能。
- no_root_squash:允许客户端root用户拥有主机root权限,这对嵌入式开发至关重要。

保存退出后,重启NFS服务使配置生效:
sudo /etc/init.d/nfs-kernel-server restart

验证共享目录是否成功:
showmount -e
如果看到/home/duan/linux/nfs出现在列表中,说明配置正确。

进阶技巧:若需要在多块开发板或不同子网中共享,可以在exports文件中添加多个条目,例如:/home/duan/linux/nfs 192.168.1.0/24(rw,sync,no_root_squash)。这在Java或Python的微服务架构中尤其有用。
五、网络环境:确保三端互通
在测试NFS之前,必须确保Ubuntu虚拟机、Windows主机和I.MX6U开发板能够相互ping通。以本文配置为例:
- 开发板IP:192.168.10.50
- 虚拟机IP:192.168.10.100
- 电脑网口IP:192.168.10.200
网络配置建议:将虚拟机网络模式设置为“桥接模式”,并手动指定静态IP,避免DHCP分配导致IP变动。对于使用TypeScript或C++开发的网络应用,稳定的网络环境是调试的基础。
如果ping不通,请检查以下常见问题:
- 防火墙是否关闭(
sudo ufw disable)。 - 虚拟机网络适配器是否选择正确。
- 开发板网线是否连接完好。
六、NFS测试:从主机到开发板的实战
首先,在共享目录中创建一个测试文件:

然后,在开发板端执行以下命令:
mkdir get
mount -t nfs -o nolock,nfsvers=3 192.168.10.100:/home/duan/linux/nfs get/
这条命令将虚拟机的NFS共享目录挂载到开发板的/get目录。挂载成功后,查看目录内容:
df
如果看到mytest.c文件,说明NFS工作正常!


测试完成后,卸载NFS目录:
umount get

✅ 注意事项:在开发板断电或重启前,务必先卸载NFS挂载点,否则可能导致文件系统损坏。在Python或Java的自动化测试脚本中,可以添加umount命令作为清理步骤。
总结:NFS让嵌入式开发更高效
通过本文,我们完成了在Ubuntu 20.04上搭建NFS服务的完整流程,并验证了与I.MX6U开发板的文件共享功能。NFS不仅简化了根文件系统的加载过程,还为C++、JavaScript等语言的交叉编译提供了实时同步能力。记住三个关键点:正确的权限设置、稳定的网络环境、以及规范的挂载/卸载操作。希望这篇指南能帮助你更快地进入嵌入式Linux开发的世界!
[AFFILIATE_SLOT_2]
浙公网安备 33010602011771号