網絡文件系統(NFS,Network File System)是一種將遠程主機上的分區(目錄)經網絡掛載到本地系統的一種機制,通過對網絡文件系統的支持,用戶可以在本地系統上像操作本地分區一樣來對遠程主機的共享分區(目錄)進行操作。
在嵌入式Linux 的開發過程中,開發者需要在Linux 服務器上進行所有的軟件開發,交叉編譯後,通用FTP 方式將可執行文件下載到嵌入式系統運行,但這種方式不但效率低下,且無法實現在線的調試.因此,可以通過建立NFS,把Linux 服務器上的特定分區共享到待調試的嵌入式目標系統上,就可以直接在嵌入式目標系統上操作Linux 服務器,同時可以在線對程序進行調試和修改,大大的方便了軟件的開發.因此,NFS 的是嵌入式Linux 開發的一個重要的組成部分,本部分內容將詳細說明如何配置嵌入式Linux 的NFS 開發環境。
嵌入式Linux 的NFS 開發環境的實現包括兩個方面:一是Linux 服務器端的NFS 服務器支持;二是嵌入式目標系統的NFS 客戶端的支持.因此,NFS 開發環境的建立需要配置Linux 服務器端和嵌入式目標系統端.
NFS是由Sun開發並發展起來的一項用於在不同機器,不同操作系統之間通過網絡互相分享各自的文件.NFS server也可以看作是一個FILE SERVER,用於在UNIX類系統之間共享文件,可以輕松的掛載(mount)到一個目錄上,操作起來就像本地文件一樣的方便。
類型:System V-launched Service
軟件包:nfs-utils
進程:nfsd,lockd,rpciod,rpc.{mounted,rquotad,statd}
腳本:nfs,nfslock
端口:由portmap服務指派端口(111)
配置文件:/etc/exports
輔助工具:portmap(必須)
相關命令:rpcinfo -p [IPADD]:查看服務器提供的rpc服務
showmount -e:查看服務共享的目錄
Server端:
1./etc/exports格式:
目錄 選項
例:共享/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/haiouc/haioucshare 要給出一定的權限;
可以加載本地的光盤,然後用nfs共享給他人
2.啟動portmap服務:
service portmap start[restart]
3.啟動NFS服務:
service nfs start[restart]
Client端:
1.啟動portmap服務:
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服務器也不檢查其父目錄的權限,這樣可以提高效率;