新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式uClinux應用程序的NFS開發

        嵌入式uClinux應用程序的NFS開發

        作者: 時間:2011-05-20 來源:網絡 收藏

        在目標機上可以運行了,接著就需要完成特定任務的了。由于的特殊環境(主機——目標機),其模式也有多種。

        本文引用地址:http://www.104case.com/article/150728.htm

          一種是在主機上編寫程序,然后編譯、連接、調試,成功后將程序和內核一同編譯并下載到目標板。這種模式中不利于開發的問題有:主機和目標機的運行環境(如指令集,函數庫等)不同。另一種是通過網線或串口線將目標機和主機連起來,直接在目標機上開發調試。這種模式使用將主機的特定目錄mount到目標機上,對主機的操作就是對目標機的操作。采用 模式可以方便的開發,減少映像文件的下載次數和對flash的燒寫次數。這對于縮短開發周期,提高開發效率,加快產品的上市時間相當重要。

          1 的簡要介紹

          NFS是Network File System(網絡文件系統)的縮寫,最初是由Sun公司開發出來的分布式文件系統。提供NFS服務的一方是NFS Server(遠程主機),使用NFS服務的一方是NFS Client(客戶機)。利用它,客戶機可以將遠程主機提供的共享目錄掛載到自己的目錄上,在本地的操作如同對遠程主機的操作。

          NFS有自己的協議與端口號(2049),它本身并沒有提供傳輸資料的協議,但是NFS卻能通過網絡進行資料的共享。這是因為在資料傳送或者其它相關數據交互的時候,NFS用遠程過程調用(Remote Procedure Call, RPC)的傳輸協議。RPC服務portmap負責管理服務與相關端口映射的工作。因此,使用NFS服務必須先激活RPC服務portmap,在主機和目標機上都要實現RPC服務,才可以使用NFS。

          使用NFS Server還需要激活至少兩個系統守護進程:rpc.nfsd用于管理Client使用主機共享目錄的權限,包含對Client的IP的判別; rpc.mountd用于管理NFS的文件系統。當Client通過rpc.nfsd后,在使用NFS Server提供的文件前,還必須取得使用權限的認證。rpc.nfsd及rpc.mountd的系統服務是由nfs-utils提供的。

          2配置主機和目標機的NFS服務

          系統的開發是基于主機/目標機,在主機上要安裝目標機的交叉編譯工具。需要在主機上編譯出可以在目標機上運行的可執行文件。該可執行文件通常需要下在到目標機上才可以運行,而利用NFS可以不用下載即可運行。下面以主機RedHat9.0+PC,IP為192.168.111.8;目標機 uCLinux(內核為linux.2.4.x)+S3C44B0,IP為192.168.111.1的環境講解使用NFS需要的配置。

          2.1主機上的配置

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

          2.1.1確認是否安裝了NFS服務

          NFS服務一般在RedHat9.0安裝時就默認安裝的。檢查是否安裝了nfs的方法是:

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

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

          nfs-utils-1.0.1-2.9這表示安裝了NFS。如果沒有安裝,安裝過程如下:

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

          #cd /mnt/cdrom/RedHat/RPMS

          #rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm rpm2.1.2檢查RPC程序是否已經啟動

          #rpcinfo –p,檢查系統RPC運行狀況,若出現

          100000 2 tcp 111 portmapper

          100000 2 udp 111 portmapper 表示已經啟動RPC程序。

          2.1.3啟動主機上的NFS服務,并關閉防火墻

          NFS服務一般不會在開機時自動啟用。啟動該服務:

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

          (2)啟用portmap服務,# /etc/rc.d/init.d/portmap start。也可以#service nfs start 和#service portmap start啟動服務。激活portmap后,就會出現一個端口號為111的rpc服務。至于nfs則會激活至少兩個以上的系統守護進程,然后就開始監聽 Client的請求,用#cat /var/log/messages可以看到以上操作是否成功。

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

          2.1.4設置共享目錄

          在文件/etc/exports中設定允許被訪問的共享目錄以及訪問的權限。該文件的格式:/共享目錄 主機名稱或IP(權限參數)。修改此文件添加共享目錄(該目錄要存在),/home/pub *() //允許所有主機訪問此目錄,權限為rw.

          /home/nfs 192.168.111.8(rw) //允許IP為192.168.111.8的主機訪問此目錄。權限為讀寫。

          權限參數設定為:

          rw:讀寫權限 ro:只讀權限

          no_root_squash:如果是root使用共享目錄,對于此目錄,他就具有root的權限

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

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

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

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

          sync:資料同步寫入到內存與硬盤中

          async:資料會先暫存于內存當中,而不會直接寫入硬盤

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 周至县| 伊吾县| 商丘市| 宜川县| 贺兰县| 淮阳县| 乌恰县| 大理市| 准格尔旗| 许昌市| 崇左市| 玛纳斯县| 大连市| 阿尔山市| 新民市| 方正县| 汤原县| 北宁市| 罗源县| 常德市| 惠安县| 安平县| 依安县| 寻甸| 双桥区| 滁州市| 车险| 金昌市| 分宜县| 新平| 临颍县| 库车县| 许昌县| 宝鸡市| 闸北区| 县级市| 莒南县| 雅江县| 渭源县| 涞水县| 阿鲁科尔沁旗|