新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式uClinux應(yīng)用程序的NFS開(kāi)發(fā)

嵌入式uClinux應(yīng)用程序的NFS開(kāi)發(fā)

作者: 時(shí)間:2011-05-20 來(lái)源:網(wǎng)絡(luò) 收藏

在目標(biāo)機(jī)上可以運(yùn)行了,接著就需要完成特定任務(wù)的了。由于的特殊環(huán)境(主機(jī)——目標(biāo)機(jī)),其模式也有多種。

本文引用地址:http://butianyuan.cn/article/150728.htm

  一種是在主機(jī)上編寫(xiě)程序,然后編譯、連接、調(diào)試,成功后將程序和內(nèi)核一同編譯并下載到目標(biāo)板。這種模式中不利于開(kāi)發(fā)的問(wèn)題有:主機(jī)和目標(biāo)機(jī)的運(yùn)行環(huán)境(如指令集,函數(shù)庫(kù)等)不同。另一種是通過(guò)網(wǎng)線(xiàn)或串口線(xiàn)將目標(biāo)機(jī)和主機(jī)連起來(lái),直接在目標(biāo)機(jī)上開(kāi)發(fā)調(diào)試。這種模式使用將主機(jī)的特定目錄mount到目標(biāo)機(jī)上,對(duì)主機(jī)的操作就是對(duì)目標(biāo)機(jī)的操作。采用 模式可以方便的開(kāi)發(fā),減少映像文件的下載次數(shù)和對(duì)flash的燒寫(xiě)次數(shù)。這對(duì)于縮短開(kāi)發(fā)周期,提高開(kāi)發(fā)效率,加快產(chǎn)品的上市時(shí)間相當(dāng)重要。

  1 的簡(jiǎn)要介紹

  NFS是Network File System(網(wǎng)絡(luò)文件系統(tǒng))的縮寫(xiě),最初是由Sun公司開(kāi)發(fā)出來(lái)的分布式文件系統(tǒng)。提供NFS服務(wù)的一方是NFS Server(遠(yuǎn)程主機(jī)),使用NFS服務(wù)的一方是NFS Client(客戶(hù)機(jī))。利用它,客戶(hù)機(jī)可以將遠(yuǎn)程主機(jī)提供的共享目錄掛載到自己的目錄上,在本地的操作如同對(duì)遠(yuǎn)程主機(jī)的操作。

  NFS有自己的協(xié)議與端口號(hào)(2049),它本身并沒(méi)有提供傳輸資料的協(xié)議,但是NFS卻能通過(guò)網(wǎng)絡(luò)進(jìn)行資料的共享。這是因?yàn)樵谫Y料傳送或者其它相關(guān)數(shù)據(jù)交互的時(shí)候,NFS用遠(yuǎn)程過(guò)程調(diào)用(Remote Procedure Call, RPC)的傳輸協(xié)議。RPC服務(wù)portmap負(fù)責(zé)管理服務(wù)與相關(guān)端口映射的工作。因此,使用NFS服務(wù)必須先激活RPC服務(wù)portmap,在主機(jī)和目標(biāo)機(jī)上都要實(shí)現(xiàn)RPC服務(wù),才可以使用NFS。

  使用NFS Server還需要激活至少兩個(gè)系統(tǒng)守護(hù)進(jìn)程:rpc.nfsd用于管理Client使用主機(jī)共享目錄的權(quán)限,包含對(duì)Client的IP的判別; rpc.mountd用于管理NFS的文件系統(tǒng)。當(dāng)Client通過(guò)rpc.nfsd后,在使用NFS Server提供的文件前,還必須取得使用權(quán)限的認(rèn)證。rpc.nfsd及rpc.mountd的系統(tǒng)服務(wù)是由nfs-utils提供的。

  2配置主機(jī)和目標(biāo)機(jī)的NFS服務(wù)

  系統(tǒng)的開(kāi)發(fā)是基于主機(jī)/目標(biāo)機(jī),在主機(jī)上要安裝目標(biāo)機(jī)的交叉編譯工具。需要在主機(jī)上編譯出可以在目標(biāo)機(jī)上運(yùn)行的可執(zhí)行文件。該可執(zhí)行文件通常需要下在到目標(biāo)機(jī)上才可以運(yùn)行,而利用NFS可以不用下載即可運(yùn)行。下面以主機(jī)RedHat9.0+PC,IP為192.168.111.8;目標(biāo)機(jī) uCLinux(內(nèi)核為linux.2.4.x)+S3C44B0,IP為192.168.111.1的環(huán)境講解使用NFS需要的配置。

  2.1主機(jī)上的配置

  NFS服務(wù)需要內(nèi)核(Kernel)支持,因此,內(nèi)核版本最好高于2.2.x。如果重新編譯內(nèi)核,一定要選擇支持NFS。主機(jī)上的配置均以root用戶(hù)進(jìn)行。

  2.1.1確認(rèn)是否安裝了NFS服務(wù)

  NFS服務(wù)一般在RedHat9.0安裝時(shí)就默認(rèn)安裝的。檢查是否安裝了nfs的方法是:

  (1)查看/etc/rc.d/init.d目錄下是否有nfs和nfslock文件,如果有說(shuō)明主機(jī)已經(jīng)安裝了nfs服務(wù)。(#ls /etc/rc.d/init.d/)

  (2)#rpm -qa| grep -i nfs,出現(xiàn)redhat-config-nfs-1.0.4-5,

  nfs-utils-1.0.1-2.9這表示安裝了NFS。如果沒(méi)有安裝,安裝過(guò)程如下:

  #mount /dev/cdrom /mnt/cdrom(掛載光盤(pán))

  #cd /mnt/cdrom/RedHat/RPMS

  #rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm rpm2.1.2檢查RPC程序是否已經(jīng)啟動(dòng)

  #rpcinfo –p,檢查系統(tǒng)RPC運(yùn)行狀況,若出現(xiàn)

  100000 2 tcp 111 portmapper

  100000 2 udp 111 portmapper 表示已經(jīng)啟動(dòng)RPC程序。

  2.1.3啟動(dòng)主機(jī)上的NFS服務(wù),并關(guān)閉防火墻

  NFS服務(wù)一般不會(huì)在開(kāi)機(jī)時(shí)自動(dòng)啟用。啟動(dòng)該服務(wù):

  (1)#ntsysv,選中nfs,nfslock和portmap;或者#setup,選擇System services里的nfs,nfslock和portmap。

  (2)啟用portmap服務(wù),# /etc/rc.d/init.d/portmap start。也可以#service nfs start 和#service portmap start啟動(dòng)服務(wù)。激活portmap后,就會(huì)出現(xiàn)一個(gè)端口號(hào)為111的rpc服務(wù)。至于nfs則會(huì)激活至少兩個(gè)以上的系統(tǒng)守護(hù)進(jìn)程,然后就開(kāi)始監(jiān)聽(tīng) Client的請(qǐng)求,用#cat /var/log/messages可以看到以上操作是否成功。

  由于防火墻會(huì)關(guān)閉NFS服務(wù)(2049端口號(hào))的對(duì)外服務(wù),所以必須關(guān)閉防火墻。在RedHat9.0上運(yùn)行setup,選擇Firewall configuration,選中No firewall。然后到上一層菜單選擇System services,去掉ipchains 和iptables 兩項(xiàng)服務(wù)。

  2.1.4設(shè)置共享目錄

  在文件/etc/exports中設(shè)定允許被訪(fǎng)問(wèn)的共享目錄以及訪(fǎng)問(wèn)的權(quán)限。該文件的格式:/共享目錄 主機(jī)名稱(chēng)或IP(權(quán)限參數(shù))。修改此文件添加共享目錄(該目錄要存在),/home/pub *() //允許所有主機(jī)訪(fǎng)問(wèn)此目錄,權(quán)限為rw.

  /home/nfs 192.168.111.8(rw) //允許IP為192.168.111.8的主機(jī)訪(fǎng)問(wèn)此目錄。權(quán)限為讀寫(xiě)。

  權(quán)限參數(shù)設(shè)定為:

  rw:讀寫(xiě)權(quán)限 ro:只讀權(quán)限

  no_root_squash:如果是root使用共享目錄,對(duì)于此目錄,他就具有root的權(quán)限

  root_squash:如果是root使用共享目錄,那么他的權(quán)限將被壓縮為匿名者(nobody)

  all_squash:不論NFS的使用者身份如何,他都會(huì)被壓縮成為匿名使用者(nobody)

  anonuid:前面的匿名使用者的UID設(shè)定值,通常為nobody;也可自行設(shè)定UID的值。(這個(gè)UID必需要存在于/etc/passwd中)

  anongid:同anonuid,但是變成groupID就是了

  sync:資料同步寫(xiě)入到內(nèi)存與硬盤(pán)中

  async:資料會(huì)先暫存于內(nèi)存當(dāng)中,而不會(huì)直接寫(xiě)入硬盤(pán)

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉