1. 程式人生 > >關於NFS的在嵌入式開發中的使用

關於NFS的在嵌入式開發中的使用

1. NFS簡介
NFS是Network FileSystem的縮寫,NFS是由Sun開發並發展起來的一項用於在不同機器,不同作業系統之間通過網路互相分享檔案的技術。NFS可以讓你的PC通過網路將遠端的NFS 伺服器共享出來的檔案mount到自己的系統中,在客戶端看來使用NFS的遠端檔案就象是在使用本地檔案一樣。 使用NFS可以使應用程式的開發變得十分方便, 客戶端不需要大容量的儲存器,更不需要進行映像檔案的燒錄和下載,只要mount到伺服器端的特定目錄下,然後執行該目錄下的程式即可觀察到結果。建立NFS開發環境的工作分為兩個方面,配置NFS伺服器和配置客戶端。

2.配置NFS伺服器端

2.1確認主機安裝了NFS
服務方法是檢視/etc/rc.d/init.d目錄下是否有nfs檔案,如果有說明主機已經安裝了nfs服務。

2.2編輯/etc/exports檔案
伺服器端在檔案/etc/exports中設定允許被訪問的檔案、目錄以及訪問的許可權。設定格式如下:
欲分享出去的目錄 主機名稱 或者IP (引數1,引數2)
可以設定的引數主要有以下這些:
rw:可讀寫的許可權;
ro:只讀的許可權;
sync:資料同步寫入儲存器中。
async:資料會先暫時存放在記憶體中,不會直接寫入硬碟。
例如可以編輯/etc/exports為: /home/test  192.168.0.100(rw)

2.3使/etc/exports檔案的修改生效

在啟動了NFS之後又修改了/etc/exports,是不是還要重新啟動nfs呢?這個時候我們就可以用exportfs命令來使改動立刻生效,該命令格式如下: exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的內容
-r :重新mount /etc/exports中分享出來的目錄
-u :umount 目錄
-v :在 export 的時候,將詳細的資訊輸出到螢幕上。
具體例子: exportfs –rv這個命令列要求全部重新輸出一次。
在每次修改了/etc/exports檔案後都要執行一次該命令。

2.4啟動NFS服務
現在就可以啟動NFS服務了:/etc/rc.d/init.d/nfs start
如果要停止NFS服務:/etc/rc.d/init.d/nfs stop
重新啟動(停止後再啟動,在修改/etc/exports之後使用)命令:/etc/rc.d/init.d/nfs restart

3.配置客戶端 (ARM 板)

3.1配置核心
進入File Systems --->選項選中:

NFS file system support
Provide NFSv3 client support
3.2配置使用者選項
進入Network Applications ---> 選項選中:
portmap進入BusyBox --->選項選中:
mount
mount:support NFS mounts完成以上配置後,即可編譯產生映像檔案。


4.NFS的應用

4.1啟動portmap伺服器
用串列埠線和網線連線好主機和開發板。啟動資訊成功顯示後,輸入:/> portmap &
【portmap】NFS本身沒有提供資訊傳輸的協議和功能,但NFS卻能讓我們通過網路進行資料的分享,這是因為NFS使用了RPC(Remote Procedure Call遠端程式呼叫)的功能。客戶端通過網路傳送RPC到遠端電腦,請求服務。這裡,portmap是一個server,主要功能是將TCP/IP 通訊協議中的埠號轉換為RPC程式號,這樣客戶端才能完成RPC呼叫。

4.2掛載到主機
通過以下命令列,掛載到主機上:
/>mount –t nfs –o rsize=1024,wsize=1024,timeo=3,udp 192.168.253.1:/opt/uClinux-dist/user/Myapp /var/tmp
命令列的引數是必要的,能夠改善NFS下應用程式執行的速度。當出現下一個/>時,mount成功,接下來就可以按讀寫本地檔案的方式讀寫遠端檔案系統了 

我用的開發板是UP-netARM2410。我的配置以及遇到的問題的解決如下:

 在你的linux上nfs可以通過圖形化的方式設定,也可以直接對etc/exports進行編輯。
輸入 /arm2410dev   192.168.0.*(rw,sync,no_root_squash)
就是設定/arm2410dev 位共享目錄,並且允許192.168.0.*的所有機器都可以訪問,設定許可權為讀寫,

啟動nfs服務
/sbin/service nfs start     確保NFS服務已經啟動
然後在用超級終端上連線arm板,執行命令:
mount -t nfs -o nolock 192.168.0.10:/arm2410dev  /host
然後退出/host
在進入/host 就可以看到主機/arm2410dev下的東西了

如果在超級終端上執行mount命令時出現一下錯誤:

mount:RPC:Unable to receive; eNrno=connetionF refused
mountS nfsmount faile:d: bad f le descriptor
mount program didn't pass remote address!
mount:mounting 192.168.0.10:/ on /tmp failed:invalid agument
請修改linux的安全級別為“無防火牆”

相關推薦

no