NFS是network filesystem的简称,可以不同的主机通过网络访问远端的NFS服务器共享出来的文件,这样主机通过网络访问NFS服务器,我们就可以在开发板上通过网络访问主机的文件。
1、传送速度快,学习过stm等单片机知道可以通过串口的方式进行下载,但是串口的传输速率有限(以9600波特率为例,1s传输9600bit也就是1200个字节),当工程文件非常大的时候,串口传输就显得十分吃力。但是网口的速度一般都为1000Mb/s,有较大的信息吞吐量,传输速率也快。
2、提高调试的效率,有些时候需要多次的调试开发板的文件系统内的文件内的某个应用程序,这就需要进行多次的编译拷贝等操作,当我们前期调试的时候,我们可以再VM虚拟机等服务器上的ubuntu的nfs目录下的文件系统进行远程调试,提高调试效率。
PC机端:
1、安装服务:
//如果虚拟机中没有该功能需要安装
sudo apt-get install nfs-kernel-server
2、在虚拟机/home/book目录下创建目录nfs_roots
mkdir /home/book/nfs_roots
3、创建共享目录,修改/etc/exports文件末尾
sudo vi /etc/exports
或者
sudo gedit /etc/exports
在文件末尾加入下面一行:
/home/book/nfs_roots? *(rw,sync,no_root_squash)
这样就可以将主机的/home/book/nfs_roots目录当成共享目录
4、启动NFS服务器,重启 nfs-kernel-server 服务:
sudo /etc/init.d/nfs-kernel-server restart
这里我使用的开发板是韦东山老师的iM6ULL_pro,配置起来比较方便因为卫东山老师都已经配置好了,只需要确保开发板可以ping通之后在开发板上执行下边的命令就可以挂载NFS:
mount -t nfs -o nolock,vers=3 IP地址:/home/book/nfs_rootfs /mnt
1、将ubuntu虚拟机的IP地址设置为静态地址: 192.168.1.76
2、确保通过网线将开发板与 PC 机连接好,并在 PC 机上开启了 NFS 服务
3、设置开发板的 IP 与 PC 机的 IP 在同一网段,如:
PC 机 IP :192.168.1.75
目标板 IP:192.168.1.203
Network Marsk: 255.255.255.0
Broadcast IP: 192.168.1.255
这里可以将开发板的IP也设置为静态的
修改配置文件设置IP,修改一次即可无需重复配置,
vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
????????address 192.168.1.203
????????netmask 255.255.255.0
????????gateway 192.168.1.1
? 按下键盘ESC,然后输入执行 :wq保存并退出,
? 执行/etc/init.d/S40network restart 重启网络服务。
重启开发板后使用ifconfig查看IP端口的配置
4、测试网络
在开发板上 ping 主机,在超级终端运行如下命令:
ping 192.168.1.75
在主机上以同样的方式 ping 开发板,如果主机和开发板可以互相 ping 通,则说明网络连接正常
5、挂载主机 NFS 服务器(在开发板上操作)
mount -o nolock 192.168.1.76:/home/book/nfs_roots??/mnt/
cd /mnt/
挂载正确后,可以在开发板的/mnt 目录下看到虚拟机ubuntu的根目录
注意:本文只是大体介绍了NFS的概念和使用方式,针对于不同的开发板使用NFS的原理都是相同的