网络文件系统(NFS,NetworkFile System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。

在嵌入式linux的开发过程中,开发者需要在linux服务器上进行所有的软件开发,交叉编译后,通用FTP方式将可执行文件下载到嵌入式系统运行,但这种方式不但效率低下,且无法实现在线的调试。因此,可以通过建立NFS,把linux服务器上的特定分区共享到待调试的嵌入式目标系统上,就可以直接在嵌入式目标系统上操作linux服务器,同时可以在线对程序进行调试和修改,大大的方便了软件的开发。因此,NFS的是嵌入式linux开发的一个重要的组成部分,本部分内容将详细说明如何配置嵌入式linux的NFS开发环境。

嵌入式linux的NFS开发环境的实现包括两个方面:一是linux服务器端的NFS服务器支持;二是嵌入式目标系统的NFS客户端的支持。因此,NFS开发环境的建立需要配置linux服务器端和嵌入式目标系统端。

NFS主要用于linux和linux系统或者linux和unix之间的系统。NFS只能共享文件夹不能共享文件

下面我们就配置NFS服务器

一:NFS服务器配置

1.查看NFS软件包是否安装

[root@localhost ~]# cd /mnt/cdrom/Server

[root@localhost Server]# rpm -qa |grep nfs

nfs-utils-lib-1.0.8-7.6.el5

nfs-utils-1.0.9-42.el5   这个就是nfs的软件包已经安装

2.NFS的共享清单文件是在/etc/exports,在exports文件中可以写共享的内容,内容格式为第一列写物理文件夹的路径及名称第二列写来源,来源后面跟着来源的权限和选项,来源我们可以写一个单一(single host)的主机IP地址或者名称,名称要fqdn格式的需要域名解析成IP地址,也可以写一个组(netgroups)该格式为@group,也可以写一个通配符(wildcards),通配符有很多如*和?号,“*”表示任意的字符和字符串所以表示所有的来源,“?”表示一个字符只表示一个来源,也可以写IP网络(IP networks)网段要写子网掩码。子网掩码可以写成点分十进制也可以为长度。来源的权限是网络权限分别是ro(只读)和rw(可读可写),来源的选项可有可无分别有async(可写时异步)、sync(可写时同步)、root_squash表示映射成一个系统帐号,在客户端是以管理员的身份进行操作,而在服务器端却映射成一个系统帐号,all_squash表示在客户端无论使用那个帐号在服务器端都别映射为系统帐号。

3.在NFS服务器端改变共享文件夹的权限为可写那么客户端就有该权限

[root@localhost~]# chmod o+wt /共享文件夹路径

二:NFS客户端配置

1.检查rpc是否正常

[root@localhost ~]# rpcinfo p

检查是否有权利访问NFS服务器

[root@localhost ~]# showmount e  +  NFS服务器IP地址

2.建立挂载点和挂载

[root@localhost~]# mkdir /mnt/nfs     任意取名

[root@localhost~]# mount NFS的IP地址:/共享物理路径   /mnt/nfs挂载点

3.我们实现开启自动挂载,自动挂载可以在开机自动启动的/etc/rc.d/rc.local中写也可以在/etc/fstab中,把挂载写道/etcfstab能够开机自动挂载,举例服务器共享根下的/public,NFS服务器IP为192.168.255.250,客户端为192.168.255.251

服务器在共享清单上写共享文件夹

[root@localhost ~]# vim /etc/exports

/public         *(rw,sync)    任何人都可读写

[root@localhost ~]# chmod o+wt /public/    改变权限

客户端配置

[root@localhost ~]# vim /etc/fstab

192.168.255.250:/public   /mnt/nfs(挂载点)    nfs(类型)     rw,soft,intr    0 0

[root@localhost ~]# mount –a 不重启就执行该命令

[root@localhost ~]# df –h   是否挂载

192.168.255.250:/public

                    9.5G  2.8G  6.3G 31% /mnt/nfs

三:自动挂载NFS

一个NFS服务器可以由多个客户端访问,能够做到客户端自动挂载NFS会节省很多资源,自动挂载使用的服务器是autofs,我们到光盘上查看是否安装,在客户端操作

[root@localhost Server]# rpm -qa |grep auto       已经安装

autofs-5.0.1-0.rc2.131.el5

[root@localhost Server]# chkconfig --list |grep auto 开机自动启动

autofs         0:off   1:off   2:off  3:on    4:on    5:on   6:off

autofs是服务器有配置文件,编译配置文件

[root@localhost Server]# vim /etc/auto.master

/mnt/cdrom(监听的目录)  /etc/auto.nfs(选项)  --timeout=60

我们创建auto.nfs

[root@localhost ~]# cp /etc/auto.misc /etc/auto.nfs

[root@localhost ~]# vim /etc/auto.nfs

Server(客户端切换到该目录时)          -rw,soft,intr           192.168.255.250:/public(服务器上共享目录)

[root@localhost ~]# service autofs restart

停止 automount:                                           [确定]

启动 automount:                                           [确定]

[root@localhost ~]# df –h    没有挂载

Filesystem           Size  Used Avail Use% Mounted on

/dev/sda2            9.5G  2.8G  6.3G 31% /

/dev/sda1              99M  12M   83M  12% /boot

tmpfs                252M     0  252M  0% /dev/shm

/dev/hdc             2.8G  2.8G     0 100% /media/RHEL_5.4 i386 DVD

[root@localhost nfs]#cd server  被自动挂载

192.168.255.250:/public on /mnt/nfs type nfs(rw,soft,intr,addr=192.168.255.250)