開發板上linux虛擬機器的nfs檔案系統

來源:互聯網
上載者:User

開發板上linux虛擬機器的nfs檔案系統

http://apps.hi.baidu.com/share/detail/48189956

今天,做了一下嵌入式應用程式的實驗

在你的宿主機上交叉編譯的應用程式如何在嵌入式上運行呢

在這裡我選擇了用網路來掛載nfs檔案系統.

我的實驗環境:

宿主機是虛擬機器centos5.4

目標機是mini2440上的linux

這裡我用交叉網線來串連

一,要在虛擬機器安裝nfs伺服器

(1)需要安裝下面兩個檔案
# rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm portmap-4.0-54.i386.rpm
portmap監控程式只是定向RPC通訊資料流,使NFS客戶機找到從NFS伺服器共用的目錄。

(2)配置nfs,設定輸出的共用目錄

[root@localhost mnt]# vi /etc/exports

這裡我只是簡單的設定

/home/share *(rw,sync)

然後,生效設定檔

[root@localhost mnt]# exportfs -rv
exporting *:/home/share

起動nfs

[root@localhost mnt]# /etc/init.d/portmap restart
停止 portmap:                                             [確定]
啟動 portmap:                                             [確定]
[root@localhost mnt]# /etc/init.d/nfs restart
關閉 NFS mountd:                                          [確定]
關閉 NFS 守護進程:                                        [確定]
關閉 NFS quotas:                                          [確定]
關閉 NFS 服務:                                            [確定]
啟動 NFS 服務:                                            [確定]
關掉 NFS 配額:                                            [確定]
啟動 NFS 守護進程:                                        [確定]
啟動 NFS mountd:                                          [確定]
[root@localhost mnt]#

注意起動順序不可亂,先起動portmap再起動nfs

二,實現虛擬機器與開發板串連

1,設定虛擬機器與本地機的網路模式為橋接

2,開發板與本地機的串連用交叉網線

3,設定本地機,虛擬機器,開發板的網路在同一個網段中

在這裡我設定為

本地機:10.6.173.224

虛擬機器:10.6.173.225

開發板:10.6.173.226

ping一下,能通,嗯,成功在向你招手

三,從超級終端裡串連開發板,然後掛載nfs檔案系統:

# mount -o nolock,rw -t nfs 10.6.173.225:/home/share /mnt/nfs

要加參數:-o nolock(一開始,我沒加,就掛載不了,老是提示逾時)

然後,上網找了一些資料:

下面附加一篇別人的總結: 來源:http://tensing.blog.sohu.com/77399040.htm 1 建立NFS開發環境
嵌入式linux的NFS開發環境包含著兩個方面:一是linux server端的NFS Server支援;二是target board的NFS Client支援。

1.1 linux server端
1.1.1 以root的身份登入,編譯共用目錄的設定檔exports,指定共用目錄及其許可權。
#vi /etc/exports
在該檔案中添加:
/home/lqm(共用目錄) 192.168.1.*(rw,sync,no_root_squash)
添加的內容表示允許IP範圍在192.168.1.*的電腦以讀寫的許可權來訪問共用目錄/home/lqm。
【註:參數說明如下:
rw---讀/寫入權限。如果設定唯讀許可權,則設為ro。但是一般情況下,為了方便互動,要設定為rw。
sync--資料同步寫入記憶體和硬碟。
no_root_squash--此參數用來要求伺服器允許遠程系統以它自己的root特權存取該目錄。就是說,如果使用者是root,那麼他就對這個共用目錄有root的許可權。很明顯,該參數授予了target board很大的權利。安全性是首先要考慮的,可以採取一定的保護機制,在下面會講一下保護機制。如果使用預設的root_squash,target board自己的根檔案系統可能有很多無法寫入,所以運行會受到極大的限制。在安全性有所保障的前提下,推薦使用no_root_squash參數。】

1.1.2 起用保護機制
可以通過設定/etc/hosts.deny和/etc/hosts.allow檔案來限制網路服務的存取許可權。
***/etc/hosts.deny***
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
***/etc/hosts.allow***
portmap:192.168.1.100
lockd:192.168.1.100
mountd:192.168.1.100
rquotad:192.168.1.100
statd:192.168.1.100
同時使用這兩個檔案就會使得只有ip為192.168.1.100的機器使用NFS服務。你的target board的ip地址設定為192.168.1.100,這樣就可以了。

1.1.3 啟動
首先要啟動portmapper(連接埠映射)服務,這是NFS本身需要的。
#/etc/init.d/portmap start
然後啟動NFS Server。此時NFS會啟用守護進程,然後開始監聽用戶端的請求。
#/etc/init.d/nfs start
NFS Server啟動後,還要檢查一下linux server的iptables等,確定沒有屏蔽NFS使用的連接埠和允許通訊的主機。
可以首先在 linux server上面進行NFS的迴環測設。修改/etc/hosts.allow,把ip改為linux server的ip地址,然後在linux server上執行命令:

#mount -t nfs <your-server-ip>:/home/lqm /mnt
#ls /mnt
如果NFS Server正常工作,應該在/mnt下面看到共用目錄/home/lqm的內容。
1.2 target board端的client
1.2.1 嵌入式linux核心應該支援NFS用戶端。
核心配置時,選擇如下:
File system--> Network File Systems-->
選中NFS System support和Provide NFSvs client support,然後儲存退出,重新編譯核心,將產生的zImage重新下載到target board。

1.2.2 在target board的linux shell下,執行下列命令來進行NFS共用目錄的掛載。
#mkdir /mnt/nfs
#mount -o nolock -t nfs <your-server-ip>:/home/lqm /mnt/nfs
#ls /mnt/nfs
由於很多嵌入式裝置的根檔案系統中不帶portmap,所以一般都使用-o nolock參數,即不使用NFS檔案鎖,這樣就可以避免使用portmap。如果順利,在/mnt/nfs下,就可以看到linux server的共用資料夾下的內容了,而且兩個檔案夾內的修改是同步的。

2 應用程式執行個體
編寫一個簡單的C程式test.c
-------------------------------------------
/*This is a test program.*/
int main(void)
{
int i;
for(i=0;i<10;i++)
printf("Hello World %d times.\n",i);
return 0;
}
-------------------------------------------
編譯該程式:
#arm-linux-gcc -o test test.c
2.1 FTP方式
首先將test下載到target board。啟動target board的linux,在超級終端中執行:
#cd /var
#ftp <your-server-ip>
ftp>bin                //以binary mode傳輸檔案
ftp>get test
ftp>exit
然後修改檔案屬性:
#chmod +x test
#./test
這時可以查看結果了。
2.2 NFS方式
在target board端掛載linux server的共用輸出目錄,並且運行程式。
#mkdir /mnt/nfs
#mount -o nolock -t nfs <your-server-ip>:/home/lqm /mnt/nfs
#ls /mnt/nfs
這時應該可以顯示linux server的共用目錄的內容。然後執行:
#./test
3 總結
這兩種方式在應用程式不是特別複雜時區別不是很大,但是當開發程式比較複雜時,採用NFS方式顯然效率要高得多。完成應用程式得開發,調試好後就可以下載 到嵌入式目標板的flash檔案系統,或者直接編譯到嵌入式linux核心並且燒寫到flash,從而最終成為一個獨立的嵌入式應用程式。

+++++++++++++
下面是一些NFS共用的常用參數:
ro:唯讀訪問
rw:讀寫訪問
sync:所有資料在請求時寫入共用
async:NFS 在寫入資料前可以響應請求
secure:NFS通過1024以下的安全TCP/IP連接埠發送
insecure:NFS通過 1024以上的連接埠發送
wdelay:如果多個使用者要寫入NFS目錄,則歸組寫入(預設)
no_wdelay:如果多個使用者要寫入NFS目錄,則立即寫入,當使用async時,無需此設定。
hide:在NFS共用目錄中不共用其子目錄
no_hide:共用 NFS目錄的子目錄
subtree_check:如果共用/usr/bin之類的子目錄時,強制NFS檢查父目錄的許可權(預設)
no_subtree_check:和上面相對,不檢查父目錄許可權
all_squash:共用檔案的UID和GID映射匿名使用者anonymous,適合公用目錄。
no_all_squash:保留共用檔案的UID和GID(預設)
root_squash:root使用者的所有請求映射成如anonymous使用者一樣的許可權(預設)
no_root_squas:root使用者具有根目錄的完全管理存取權限
anonuid=xxx:指定NFS伺服器/etc /passwd檔案中匿名使用者的UID
anongid=xxx:指定NFS伺服器/etc/passwd檔案中匿名使用者的GID

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.