NFS服务软件安装
===============

NFS（Network
FileSystem，网络文件系统）是由SUN公司发展，并于1984年推出的技术，用于在不同机器，不同操作系统之间通过网络互相分享各自的文件。NFS设计之初就是为了在不同的系统间使用，所以它的通讯协议设计与主机及操作系统无关。

NFS分服务器和客户机，当使用远端文件时只要用mount命令就可把远端NFS服务器上的文件系统挂载在本地文件系统之下，操作远程文件与操作本地文件没有不同。NFS服务器所共享文件或目录记录在/etc/exports文件中。

嵌入式Linux开发中，会经常使用NFS，目标系统通常作为NFS客户机使用，Linux主机作为NFS服务器。在目标系统上通过NFS，将服务器的NFS共享目录挂载到本地，可以直接运行服务器上的文件。在调试系统驱动模块以及应用程序，NFS都是十分必要的，并且Linux还支持NFS根文件系统，能直接从远程NFS
root启动系统，这对嵌入式Linux根文件系统裁剪和集成也是十分有必要的。

安装NFS服务
-----------

1) 通过下面的命令安装NFS服务器

+-----------------------------------------------------------------------+
| sudo apt-get install nfs-kernel-server                                |
+-----------------------------------------------------------------------+

.. image:: images/04_media/image1.png

2) 新建一个work目录做为NFS的一个工作目录，以后我们可以把交叉编译的程序放在这个目录里，开发板可以很方便共享到这个目录里的文件。

.. image:: images/04_media/image2.png

3) 使用下面命令编辑/etc/exports文件，配置NFS服务路径

+-----------------------------------------------------------------------+
| sudo gedit /etc/exports                                               |
+-----------------------------------------------------------------------+

.. image:: images/04_media/image3.png

4) 在尾部添加/home/alinx/work
   \*(rw,sync,no_root_squash,no_subtree_check)
   ，配置/home/alinx/work目录为NFS的一个工作目录。

.. image:: images/04_media/image4.png

5) 执行下面命令重启rpcbind
   服务。nfs是一个RPC程序，使用它前，需要映射好端口，通过rpcbind 设定

+-----------------------------------------------------------------------+
| sudo /etc/init.d/rpcbind restart                                      |
+-----------------------------------------------------------------------+

6) 执行下面命令重启nfs服务

+-----------------------------------------------------------------------+
| sudo /etc/init.d/nfs-kernel-server restart                            |
+-----------------------------------------------------------------------+

测试NFS
-------

1) 通过下面命令挂载NFS，在本机将NFS工作路径挂载在/mnt目录

+-----------------------------------------------------------------------+
| sudo mount -t nfs 127.0.0.1:/home/alinx/work /mnt                     |
+-----------------------------------------------------------------------+

2) 进入/mnt,新建一个test目录测试一下，可以在/home/alinx/work目录同步看到test文件夹

+-----------------------------------------------------------------------+
| cd /mnt                                                               |
|                                                                       |
| mkdir test                                                            |
+-----------------------------------------------------------------------+

常见问题
--------

NFS无法挂载
~~~~~~~~~~~

首先确认虚拟机和开发板是不是一个网段？

使用ifconfig命令查看虚拟机IP地址，下图的例子中是192.168.1.55，属于192.168.1网段，由于开发环境中有DHCP服务器存在，所以虚拟机的IP地址是自动分配的，因为网络环境不同，本教程不讲解如何配置网络，如果不会配置网络，咨询自己网络管理员。

.. image:: images/04_media/image5.png

在串口终端中使用ifconfig命令查看开发板IP地址，下图的例子中是192.168.1.46，属于192.168.1网段，如果没有IP，或和开发板IP不同网段，请联系网络管理员。

.. image:: images/04_media/image6.png

在串口终端中ping虚拟机，例程中ping
192.168.1.55，这是因为虚拟机IP是192.168.1.55，能够ping通才能正常挂载NFS

.. image:: images/04_media/image7.png
