詳細說(shuō)明如何配置嵌入式linux 的nfs開(kāi)發(fā)環(huán)境
NFS(Network File System)即網(wǎng)絡(luò )文件系統,是FreeBSD支持的文件系統中的一種,它允許網(wǎng)絡(luò )中的計算機之間通過(guò)TCP/IP網(wǎng)絡(luò )共享資源。在nfs的應用中,本地nfs的客戶(hù)端應用可以透明地讀寫(xiě)位于遠端nfs服務(wù)器上的文件,就像訪(fǎng)問(wèn)本地文件一樣。nfs作為一種將遠程主機上的分區(目錄)經(jīng)網(wǎng)絡(luò )掛載到本地系統的一種機制,嵌入式開(kāi)發(fā)者經(jīng)常需要到。
本文引用地址:http://dyxdggzs.com/article/201609/303288.htmnfs有很多實(shí)際應用。下面是比較常見(jiàn)的一些:
1. 多個(gè)機器共享一臺CDROM或者其他設備。這對于在多臺機器中安裝軟件來(lái)說(shuō)更加便宜跟方便。
2. 在大型網(wǎng)絡(luò )中,配置一臺中心 nfs服務(wù)器用來(lái)放置所有用戶(hù)的home目錄可能會(huì )帶來(lái)便利。這些目錄能被輸出到網(wǎng)絡(luò )以便用戶(hù)不管在哪臺工作站上登錄,總能得到相同的home目錄。
3. 不同客戶(hù)端可在nfs上觀(guān)看影視文件,節省本地空間。
4. 在客戶(hù)端完成的工作數據,可以備份保存到nfs服務(wù)器上用戶(hù)自己的路徑下。
nfs是運行在應用層的協(xié)議。隨著(zhù)nfs多年的發(fā)展和改進(jìn),nfs既可以用于局域網(wǎng)也可以用于廣域網(wǎng),且與操作系統和硬件無(wú)關(guān),可以在不同的計算機或系統上運行。
在嵌入式linux 的開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者需要在linux 服務(wù)器上進(jìn)行所有的軟件開(kāi)發(fā),交叉編譯后,通用FTP 方式將可執行文件下載到嵌入式系統運行,但這種方式不但效率低下,且無(wú)法實(shí)現在線(xiàn)的調試。因此,可以通過(guò)建操作linux 服務(wù)器,同時(shí)可以在線(xiàn)對程序進(jìn)行調試和修改,大大的方便了軟件的開(kāi)發(fā)。因此,nfs的是嵌入式linux 開(kāi)發(fā)的一個(gè)重要的組成部分,本部分內容將詳細說(shuō)明如何配置嵌入式linux 的nfs開(kāi)發(fā)環(huán)境。
嵌入式linux 的nfs開(kāi)發(fā)環(huán)境的實(shí)現包括兩個(gè)方面:一是linux 服務(wù)器端的nfs服務(wù)器支持;二是嵌入式目標系統的nfs客戶(hù)端的支持。因此,nfs開(kāi)發(fā)環(huán)境的建立需要配置linux 服務(wù)器端和嵌入式目標系統端。
一、linux 服務(wù)器端nfs服務(wù)器的配置
以root 身份登陸linux 服務(wù)器,編輯/etc 目錄下的共享目錄配置文件exports,指定共享目錄及權限等。
執行如下命令編輯文件/etc/exports:
# vi /etc/exports
在該文件里添加如下內容:
/home/work 192.168.0.*(rw,sync,no_root_squash)
然后保存退出。
添加的內容表示:允許ip 地址范圍在192.168.0.*的計算機以讀寫(xiě)的權限來(lái)訪(fǎng)問(wèn)/home/work 目錄。
/home/work 也稱(chēng)為服務(wù)器輸出共享目錄。
括號內的參數意義描述如下:
rw:讀/寫(xiě)權限,只讀權限的參數為ro;
sync:數據同步寫(xiě)入內存和硬盤(pán),也可以使用async,此時(shí)數據會(huì )先暫存于內存中,而不立即寫(xiě)入硬盤(pán)。
no_root_squash:nfs服務(wù)器共享目錄用戶(hù)的屬性,如果用戶(hù)是 root,那么對于這個(gè)共享目錄來(lái)說(shuō)就具有 root 的權限。
接著(zhù)執行如下命令,啟動(dòng)端口映射:
# /etc/rc.d/init.d/portmap start
最后執行如下命令啟動(dòng)nfs服務(wù),此時(shí)nfs會(huì )激活守護進(jìn)程,然后就開(kāi)始監聽(tīng) Client 端的請求:
# /etc/rc.d/init.d/nfsstart
用戶(hù)也可以重新啟動(dòng)linux 服務(wù)器,自動(dòng)啟動(dòng)nfs服務(wù)。
在nfs服務(wù)器啟動(dòng)后,還需要檢查linux 服務(wù)器的防火墻等設置(一般需要關(guān)閉防火墻服務(wù)),確保沒(méi)有屏蔽掉nfs使用的端口和允許通信的主機,主要是檢查linux 服務(wù)器iptables,ipchains 等選項的設置,以及/etc/hosts.deny,/etc/hosts.allow 文件。
我們首先在linux 服務(wù)器上進(jìn)行nfs服務(wù)器的回環(huán)測試,驗證共享目錄是否能夠被訪(fǎng)問(wèn)。在linux 服務(wù)器上運行如下命令:
# mount –t nfs192.168.0.20:/home/work /mnt
# ls /mnt
命令將linux 服務(wù)器的nfs輸出共享目錄掛載到/mnt 目錄下,因此,如果nfs正常工作,應該能夠在/mnt 目錄看到/home/work 共享目錄中的內容。
二、嵌入式目標系統nfs客戶(hù)端的配置
在linux 服務(wù)器設置好后,還需要對客戶(hù)端進(jìn)行相關(guān)配置。在配置內核時(shí)選擇Load an Alternate Configuration File輸入配置文件的路徑和文件名添加內核對nfs的支持:
選中networking options-》IP:kernel level auloconfiguralion項
選中file systems-》network file systems-》下的root file system on nfs
和nfsfile system support重新編譯內核下載bootloader和kernel到開(kāi)發(fā)板上
在嵌入式目標系統的linux Shell 下,執行如下命令來(lái)進(jìn)行nfs共享目錄掛載:
# mkdir /mnt/nfs//建立linux 服務(wù)器輸出共享目錄的掛載點(diǎn);
# mount –t nfs192.168.0.20:/home/work /mnt/nfs–o nolock
# cd /mnt/nfs
# ls
此時(shí),嵌入式目標系統端所顯示的內容即為linux 服務(wù)器的輸出目錄的內容,即linux 服務(wù)器的輸出目錄/home/work 通過(guò)nfs映射到了嵌入式目標系統的/mnt/nfs目錄。用戶(hù)可以用增/刪/修改文件的方式來(lái)驗證實(shí)際效果。mount 命令中的192.168.0.20 為linux 服務(wù)器的IP 地址,/home/work 為linux 服務(wù)器端所配置的共享輸出目錄,/mnt/nfs為嵌入式設備上的本地目錄。

在開(kāi)發(fā)過(guò)程中,來(lái)回輸入命令非常煩人,我寫(xiě)了兩個(gè)簡(jiǎn)單的腳本來(lái)完成nfs的啟動(dòng),掛載。
評論