网络文件系统(NFS)是一种通过网络将远程主机上的分区(目录)挂载到本地系统的机制。通过支持网络文件系统,用户可以像操作本地分区一样,在本地系统上操作远程主机的共享分区(目录)。
在开发嵌入式Linux的过程中,开发者需要在Linux服务器上完成所有的软件开发。交叉编译后,通过一般的FTP方式将可执行文件下载到嵌入式系统中运行,但这种方式不仅效率低,而且无法实现在线调试。因此,通过建立NFS,可以将Linux服务器上的特定分区共享给要调试的嵌入式目标系统。可以在嵌入式目标系统上直接操作Linux服务器,同时可以在线调试和修改程序,大大方便了软件的开发。因此,NFS是嵌入式Linux开发的重要组成部分。这一部分将详细说明如何配置嵌入式Linux的NFS开发环境。
Linux嵌入式NFS开发环境的实现包括两个方面:一是NFS服务器对Linux服务器的支持;第二,嵌入式目标系统NFS客户端的支持。因此,NFS开发环境的建立需要配置Linux服务器和嵌入式目标系统。
NFS由Sun公司开发,用于通过网络在不同机器和不同操作系统之间共享文件。NFS服务器也可以看作是在类UNIX系统之间共享文件的文件服务器,它可以很容易地挂载到一个目录中,操作起来就像本地文件一样方便。
类型:系统V-启动的服务
包:nfs-utils
进程:nfsd、lockd、rpciod、RPC。{已安装,rquotad,statd}
脚本:nfs,nfslock
端口:端口映射服务分配的端口(111)
配置文件:/etc/exports
辅助工具:端口映射(必需)
相关命令:rpcinfo -p [IPADD]:查看服务器提供的rpc服务。
查看服务共享的目录。
服务器端:
1./etc/exports格式:
选择
示例:向192.168.0.x的用户共享/共享目录
/共享192.168.0.0/24
/home/haiouc/haioushare *(rw,sync,all_squash)
/mnt/cdrom 192.168.0。*(ro)
====*表示允许所有ip访问;
给目录/home/home/haiou UC/haiou share一定的权限;
您可以加载本地光盘,并通过nfs与他人共享。
2.启动端口映射服务:
服务端口映射启动[重新启动]
3.启动NFS服务:
服务nfs启动[重新启动]
客户端:
1.启动端口映射服务:
服务端口映射启动[重新启动]
2.在服务器端挂载共享目录(假设服务器端是192.168.0.1):
mkdir /mnt/localshare
mount-t NFS 192 . 168 . 0 . 1:/share/mnt/local share
=========================================================================
Showmount //显示有关NFS服务器文件系统装载的信息。
Showmount -e //显示NFS服务器的输出列表。
=========================================================================
chkconfig-level 35 nfson//设置NFS自动启动模式;
=========================================================================
通过修改/etc/fstab文件,可以在启动时自动挂载nfs目录。
[root @ server 6 NFS 1]# cat/etc/fstab
#此文件由fstab-sync编辑-有关详细信息,请参见“man fstab-sync”
LABEL=//ext3默认值1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs默认值0 0
无/进程进程默认值0 0
none /sys sysfs默认值0 0
LABEL=SWAP-hdc2 swap交换默认值0 0
192 . 168 . 1 . 10:/home/haiouc/haioucshare/mnt/NFS 1 NFS默认值0 0
=========================================================================
NFS的参数信息:
访问权限选项。设置输出目录只读ro。将输出目录设为读写rw
用户映射选项。all_squash将远程访问的所有普通用户及其所属组映射到匿名用户或用户组(NFS nobody);no_all_squash和all_squash取反(默认设置);root_squash将root用户及其附属组映射到匿名用户或用户组(默认设置);no_root_squash是rootsquash的逆;匿名id=xxx将远程访问的所有用户映射到匿名用户,并将该用户指定为本地用户(UID=XXX);anonymous id=XXX将远程访问的所有用户组映射到匿名用户组帐户,并将该匿名用户组帐户指定为本地用户组帐户(GID=XXX);
其他选项
安全限制客户端只能从小于1024(默认设置)的tcp/ip端口连接到nfs服务器;不安全允许客户端从大于1024的tcp/ip端口连接到服务器;sync将数据同步写入内存缓冲区和磁盘,效率较低,但可以保证数据的一致性;async先把数据保存在内存缓冲区,需要的时候再写到磁盘;wdelay检查是否有相关的写操作,如果有,这些写操作会一起执行,这样可以提高效率(默认设置);no_wdelay如果有写操作会立即执行,要和sync配合使用;子树如果输出目录是子目录,nfs服务器会检查其父目录的权限(默认设置);no_subtree即使输出目录是子目录,nfs服务器也不检查其父目录的权限,可以提高效率;