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