项目场景:
在眺望电子TW-IMX6DL-EVM开发板上配置NFS服务器。
编译环境及开发包:
主机:ubuntu18.04
交叉编译器:arm-linux-gnueabihf-gcc
QT5.12.8:qt-everywhere-opensource-src-5.12.8
开发板:TW-IMX6DL-EVM
Linux:Linux-4.1.15
串口工具:Xshell
注意:本文章的所有命令涉及到的路径均为眺望电子官方环境路径,需根据自身实际环境改变。本文所演示的平台来自于眺望电子 iMX6 ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9的核心板。
解决方案:
1.NFS服务器配置
NFS即网络文件系统(Network File-System),可以通过网络,让不同机器、不同系统之间可以实现文件共享。通过NFS,可以访问远程共享目录,就像访问本地磁盘一样。NFS只是一种文件系统,本身并没有传输功能,是基于RPC(远程过程调用)协议实现的,采用C/S架构。
嵌入式Linux开发中,通常需要在主机上配置NFS服务器,将某系统特定目录共享给目标系统访问和使用。通过NFS,目标系统可以直接运行存放于主机上的程序,可以减少对目标系统FLASH的烧写,既减少了对FLASH损害,同时也节省了烧写FLASH所花费的时间。
1.1添加NFS目录
创建NFS目录,在此创建目录为/nfsroot。
sudo mkdir /nfsroot
sudo chmod 777 /nfsroot
修改/etc/exports
文件,在其中增加NFS目录(需要root权限,请使用sudo命令)并指定访问主机的IP以及访问权限。
sudo vi /etc/exports
如增加/nfsroot目录,并允许IP为192.168.1.*的任何系统进行NFS访问,增加内容如下。
/nfsroot 192.168.1.*(rw,sync,no_root_squash)
或者如增加/nfsroot目录,并允许任何系统进行NFS访问,增加内容如下。
/nfsroot *(insecure,rw)
1.2启动NFS服务
同样需要root权限,执行以下命令,可以启动或者重新启动NFS服务。
sudo /etc/init.d/nfs-kernel-server start
sudo /etc/init.d/nfs-kernel-server restart
在NFS服务已经启动的情况下,如果修改了/etc/exports文件,可以重启NFS服务,刷新NFS共享目录,或者输入exports -rv命令重新导出NFS共享目录。
sudo exportfs -rv
1.3测试NFS服务器
首先可以在主机上进行自测,将已经设定好的NFS共享目录mount到另外一个目录下,看能否成功。假定主机IP为192.168.1.10,NFS共享目录为/nfsroot,可使用如下命令进行测试。
sudo mount -t nfs 192.168.1.10:/nfsroot /mnt
或者
mount -t nfs -o nolock,nfsvers=3 192.168.1.10:/nfsroot /mnt
如果指令运行没有出出错,则NFS挂载成功,在/mnt目录下应该可以看到/nfsroot目录下的内容。
在进行远程挂载之前,最好先用ping命令检查网络通信是否正常,只有在能ping通的情况下,才能进行正常挂载,否则请检查网络。如果在已经ping通的情况下,远程挂载出现错误,请检查主机和目标机的其它设置。