1、NFS(网络文件系统)
网络文件系统也被称为NFS,是指允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。NFS至少有两个主要部分:一台服务器和一台(或者更多)客户端设备,通过建立NFS客户端设备可远程访问存放在服务器上输出目录下的数据。为了方便Linux 嵌入式开发,搭建NFS可以直接在嵌入式开发板上操作Linux 服务器下的输出目录,对程序进行调试和修改。
2、测试环境
3、NFS 服务器的配置
(1)编辑配置文件/etc/exports,文件内容如下:
/home 192.168.1.*(rw,sync,no_root_squash)
内容表示允许ip地址范围在192.168.1.*的计算机以读写的权限来访问/home目录。
为服务器输出共享目录。
括号内的参数意义描述如下:
:读/写权限,只读权限的参数为ro;
:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。
:NFSroot,那么对于这个共享目录来说就具有 root 的权限。
(2)除了编辑配置文件也可通系统菜单来配置,如fedora11 linux系统的配置操作为:
打开主机菜单:系统->管理->服务器设置->NFS,点击“添加”按钮,在弹出对话框的菜单“基本”中的“目录”输入框输入“/home”,“主机”输入框中输入”192.168.1.*”,在“用户访问”菜单中选择“将远程根目录用户视为本地根目录用户”,最后点击“确定”。
4、linux主机上启动NFS服务
# service portmap start #首先打开portmap
# service nfs start # 再打开 nfs
5、NFS客户端的使用
在开发板(或其它主机)终端输入命令:
# mount -t nfs 192.168.1.211:/home /mnt。
192.168.1.211 为LinuxIP 地址,/home为Linux服务器端所配置的共享输出目录,/mnt为嵌入式开发板的本地目录。
挂接成功后输入命令:
# ls /mnt
此时查看开发板系统的/mnt目录的内容为Linux 服务器的输出目录/home下的内容。然后用增/删/修改文件的方式来验证实际效果。
最后卸载远程目录:
# umount /mnt。
6、常见问题:
(1)Root用户无法启动nfs服务,其他可用户可以(其他用户可用后再切换为root ,root也可以使用)。
(2)客户端提示no router是因为有防火墙。
(3)客户端提示版本老的警告,没有问题,可以挂接成功。
(4)主机服务器端一定要激活以太网,网络设置中有选项。
(5)在开发板终端输入命令:# mount -t nfs 192.168.1.211:/home /var/lib
出现以下问题:
[root@(none) /]# mount -t nfs 192.168.1.16:/nfsroot /var/lib
mount: 192.168.1.16:/nfsroot failed, reason given by server: Permissnfs warning: mount version older than kernel
NFS: mount program didn't pass remote address!
ion denied
mount: nfsmount failed: Bad file descriptor
mount: Mounting 192.168.1.16:/nfsroot on /var/lib failed: Invalid argument
因为主机在service里面无法把防火墙关闭,因为每次关闭出去它又自动打开了 ,所以在主机系统输入命令: #service iptables stop。
(6)如果在开发板挂接服器端中出现以下错误,则挂载命令之后加参数“-o nolock”
root:/usr> mount -t nfs 192.168.1.226:/root/rd tmp/
rpcbind: server localhost not responding, timed out
RPC: failed to contact local rpcbind server (errno 5).
rpcbind: server localhost not responding, timed out
RPC: failed to contact local rpcbind server (errno 5).
lockd_up: makesock failed, error=-5
rpcbind: server localhost not responding, timed out
RPC: failed to contact local rpcbind server (errno 5).
mount: mounting 192.168.1.226:/root/rd on tmp/ failed