ARM開發(fā)板如何掛載NFS開發(fā)環(huán)境的方法步驟(mini2440無盤啟動(dòng))
首先介紹一下我的開發(fā)環(huán)境:
PC環(huán)境是ubuntu9。04,開發(fā)板為友善之臂的MINI2440
主機(jī)IP:192.168.50.72 網(wǎng)關(guān):192.168.50.1 子網(wǎng)掩碼:255.255.255.0
開發(fā)板IP:192.168.50.168 網(wǎng)關(guān):192.168.50.1 子網(wǎng)掩碼:255.255.255.0
為了能和主機(jī)建立起連接我必須得把開發(fā)板IP改成和主機(jī)一個(gè)網(wǎng)段的 .
這里首先要說明的是ubuntu的靜態(tài)IP設(shè)置問題:
默認(rèn)安裝完成后,右上角的網(wǎng)絡(luò)配置上 wired ..和eth0為灰色。不能點(diǎn)選 。
然后禁用networdmanager啟動(dòng)network以太網(wǎng)設(shè)置靜態(tài)IP的時(shí)候,不管怎么設(shè)置,子網(wǎng)掩碼都和網(wǎng)關(guān)一樣,
比如說:地址:192.168.0.22
子網(wǎng)掩碼: 192.168.0.1 //不管怎么輸入255.255.255.0 ,都不行!
網(wǎng)關(guān): 192.168.0.1 //這里改了255.255.255.0的話,上面就也成255.255.255.0了。(auto ethernet是可以聯(lián)上網(wǎng)的)。所以就上GG找答案,找解決方法。
進(jìn)入FC10,執(zhí)行終端命令(也可以用VI修改)
$ su -c ‘gedit /etc/sysconfig/networking/devices/ifcfg-eth0′
直接修改文件中的子網(wǎng)掩碼信息就可以
代碼為:
# Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI Express
DEVICE=eth0
HWADDR=00:16:e6:db:c2:96
ONBOOT=yes
BOOTPROTO=static //這個(gè)應(yīng)該是“static”,而不是“dhcp”或“none”;
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
NM_CONTROLLED=yes//這個(gè)應(yīng)該是“yes”,如不修改,鏈接仍是disconnected;
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.50.72
GATEWAY=192.168.50.1
然后重新激活下網(wǎng)卡就可以了.
#service network restart
設(shè)置完成后,右上角的網(wǎng)絡(luò)配置上System eth0與auto ethernet就可以點(diǎn)選了.
需要說明的是因?yàn)槲抑皼]有設(shè)置靜態(tài)IP之前通過 NFS 啟動(dòng)系統(tǒng)啟動(dòng)不了.
連接主機(jī)和開發(fā)板
我選擇了串口線和網(wǎng)線連接起了主機(jī)和開發(fā)板
連接好電源,串口線,網(wǎng)線,打開串口終端
配置minicom(在FC10終端輸入命令minicom -s)
進(jìn)入到minicom配置界面后選擇 :Serial port setup
然后按照下面的設(shè)置下就OK了
A – Serial Device : :/dev/ttyS0
B – Lockfile Location : /var/lock
C – Callin Program :
D – Callout Program :
E – Bps/Par/Bits : 115200 8N1
F – Hardware Flow Control : No
G – Software Flow Control : No
建立和配置 NFS 服務(wù)
(1)設(shè)置共享目錄
運(yùn)行命令
#gedit /etc/exports
編輯 nfs 服務(wù)的配置文件(注意:第一次打開時(shí)該文件是空的),添加以下內(nèi)容:
/opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash)
其中:
/opt/FriendlyARM/mini2440/root_qtopia 表示 nfs 共享目錄,它可以作為開發(fā)板的根文件系統(tǒng)通過 nfs 掛接;
* 表示所有的客戶機(jī)都可以掛接此目錄
rw 表示掛接此目錄的客戶機(jī)對該目錄有讀寫的權(quán)力
no_root_squash 表示允許掛接此目錄的客戶機(jī)享有該主機(jī)的 root 身份
(2)通過命令啟動(dòng)和停止 nfs 服務(wù)
在命令行下運(yùn)行:
#/etc/init.d/nfs restart
這將啟動(dòng) nfs 服務(wù),可以輸入以下命令檢驗(yàn) nfs 該服務(wù)是否啟動(dòng)。
# mount -t nfs 192.168.50.72: /opt/FriendlyARM/mini2440/root_qtopia /mnt/
如 果 沒 有 出 現(xiàn) 錯(cuò) 誤 信 息 , 您 將 可 以 瀏 覽 到 /mnt 目 錄 中 的 內(nèi) 容和
/opt/FriendlyARM/mini2440/root_qtopia 是一致的。
使用這個(gè)命令可以停止 nfs 服務(wù):
#/etc/init.d/nfs stop
檢查nfs服務(wù)器是否開啟: #service nfs status
重啟對應(yīng)的2個(gè)服務(wù): #service portmap restart
#service nfs restart
檢查防火墻看是否屏蔽了nfs端口
#service iptables stop
#service iptables status
通過 NFS 啟動(dòng)系統(tǒng)
當(dāng) NFS 服務(wù)設(shè)置好并啟動(dòng)后,我們就可以把 NFS 作為根文件系統(tǒng)來啟動(dòng)開發(fā)板了。通過使用 NFS 作為根文件系統(tǒng),開發(fā)板的“硬盤”就可以變得很大,因?yàn)槟褂玫氖侵鳈C(jī)的硬盤,這是使用 linux 作為開發(fā)經(jīng)常使用的方法,
設(shè)置目標(biāo)板啟動(dòng)模式為 Nand Flash 啟動(dòng),連接好電源,串口線,網(wǎng)線;打開串口終端,在開機(jī)或者復(fù)位的時(shí)候迅速按下 PC 機(jī)的空格鍵,這樣我們就進(jìn)入了 vivi 模式,輸入以下命令:
Supervivi> param set linux_cmd_line “console=ttySAC0 root=/dev/nfs
nfsroot=192.168.50.72:/opt/FriendlyARM/mini2440/root_qtopia
ip=192.168.50.168:192.168.50.72:192.168.50.1:255.255.255.0:mini2440:eth0:off”
(1,如果通過minicom監(jiān)控串口,如出現(xiàn)亂碼,可將波特率調(diào)高點(diǎn),我調(diào)的是
115200 2,輸入命令過長的話,發(fā)現(xiàn)minicom沒法
換行,其實(shí)也可以設(shè)置一下:同時(shí)按下CTRL+A 松開后按 W換行開關(guān))
注意:要是你用的是usb轉(zhuǎn)串口console=ttyUSB0。還有就是你要把你想掛載的文件系統(tǒng)放在共享的文件里面(root_qtopia)
其中 ,param set linux_cmd_line 是設(shè)置啟動(dòng) linux 時(shí)的命令參數(shù)。其各參數(shù)的含義如下:
nfsroot 后面是自己開發(fā)主機(jī)的 IP 地址。
“ip=”后面:
第一項(xiàng)(192.168.50.168)是目標(biāo)板的臨時(shí) IP(注意不要和局域網(wǎng)內(nèi)其他 IP 沖突);
第二項(xiàng)(192.168.50.72)是開發(fā)主機(jī)的 IP;
第三項(xiàng)(192.168.50.1)是目標(biāo)板上網(wǎng)關(guān)(GW)的設(shè)置;
第四項(xiàng)(255.255.255.0)是子網(wǎng)掩碼;
第五項(xiàng)是開發(fā)主機(jī)的名字(一般無關(guān)緊要,可隨便填寫)
eth0 是網(wǎng)卡設(shè)備的名稱
然后輸入 boot,按回車就可以通過 nfs 啟動(dòng)系統(tǒng)了。
在開發(fā)板上掛載NFS網(wǎng)絡(luò)文件系統(tǒng)(Linux 中最常用的方法就是采用 NFS 來執(zhí)行各種程序,這樣可以不必花費(fèi)很多時(shí)間下載程序,雖然在此下載 hello 程序用不了多久,一旦您的應(yīng)用程序變得越來越大,您就會(huì)發(fā)現(xiàn)使用 NFS 運(yùn)行的方便所在。)
通過NFS啟動(dòng)系統(tǒng)后,在開發(fā)板終端輸入
[root@FriendlyARM /]# mount -t nfs -o nolock 192.168.50.72:/opt/FriendlyARM/mini2440/root_qtopia /mnt/
這里我剛開始遇到了一個(gè)問題,以為為什么開發(fā)板不能mount,因?yàn)樘崾救缦洛e(cuò)誤信
息: mount: mounting
192.168.50.72:/opt/FriendlyARM/mini2440/root_qtopia on /mnt/ failed: No
such file or directory
于是我就ls看了一下,發(fā)現(xiàn)沒有mnt文件夾,所以就自己創(chuàng)建了一個(gè).再次mount就沒有問題了.
[root@FriendlyARM /]# ls
bin etc home linuxrc proc sbin tmp var
dev hello lib opt root sys usr www
[root@FriendlyARM /]# mkdir mnt
[root@FriendlyARM /]# ls
bin hello linuxrc proc sys var
dev home mnt root tmp www
etc lib opt sbin usr
[root@FriendlyARM /]# mount -t nfs -o nolock 192.168.50.72:/opt/FriendlyARM/mini
2440/root_qtopia /mnt/
[root@FriendlyARM /]# cd /mnt/
[root@FriendlyARM /mnt]# ls
bin hello linuxrc proc sys var
dev home mnt root tmp www
etc lib opt sbin usr
mount成功后你進(jìn)入到/mnt目錄下就可以看到你主機(jī)root_nfs目錄下的內(nèi)容了.
至此我成功在ARM開發(fā)板上掛載NFS網(wǎng)絡(luò)文件系統(tǒng).
from:
http://www.cembed.com/bbsxp/ShowPost.asp?ThreadID=6579
下邊是我轉(zhuǎn)載的完美的實(shí)現(xiàn)ubuntu的nfs方法步驟:
網(wǎng)絡(luò)文件系統(tǒng)(NFS)
一、NFS簡介
1、NFS就是Network File
System的縮寫,它的最大功能就是可以通過網(wǎng)絡(luò)讓不同的機(jī)器,不同的操作系統(tǒng)彼此共享文件(share
files)——可以通過NFS掛載遠(yuǎn)程主機(jī)的目錄,訪問該目錄就像訪問本地目錄一樣,所以也可以簡單的將它看作一個(gè)文件服務(wù)器(File
Server)。
注意:一般而言,使用NFS服務(wù)能夠方便地使各unix-like系統(tǒng)之間實(shí)現(xiàn)共享,但如果需要在unix-like和windows系統(tǒng)之間共享,那就得使用samba了。
2、NFS是通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸,那么NFS使用哪些端口呢,答案是……不知道,因?yàn)镹FS傳輸數(shù)據(jù)時(shí)使用的端口是隨機(jī)的,唯一的限制就是小于1024,客戶端怎么知道服務(wù)器使用的是哪個(gè)端口,此時(shí)就要用到遠(yuǎn)程過程調(diào)用RPC。
其實(shí),NFS運(yùn)行在SUN的RPC(Remote Procedure
Call,遠(yuǎn)程過程調(diào)用)基礎(chǔ)上,RPC定義了一種與系統(tǒng)無關(guān)的方法來實(shí)現(xiàn)進(jìn)程間通信,由此,NFS Server也可以看作是RPC
Server。正
因?yàn)镹FS是一個(gè)RPC服務(wù)程序,所以在使用它之前,先要映射好端口——通過portmap設(shè)定。比如:某個(gè)NFS
Client發(fā)起NFS服務(wù)請求時(shí),它需要先得到一個(gè)端口(port),所以它先通過portmap得到port
number(不僅是NFS,所有的RPC服務(wù)程序啟動(dòng)之前,都需要先設(shè)定好portmap)。
注意:在啟動(dòng)RPC服務(wù)(比如NFS)之前,需要先啟動(dòng)portmap服務(wù)。
3、NFS允許系統(tǒng)將其目錄和文件共享給網(wǎng)絡(luò)上的其他系統(tǒng)。通過NFS,用戶和應(yīng)用程序可以訪問遠(yuǎn)程系統(tǒng)上的文件,就像它們是本地文件一樣。那么NFS最值得注意的優(yōu)點(diǎn)有:
(1)本地工作站可以使用更少的磁盤空間,因?yàn)槌S脭?shù)據(jù)可以被保存在一臺(tái)機(jī)器上,并讓網(wǎng)絡(luò)上的其他機(jī)器可以訪問它。
(2)不需要為用戶在每臺(tái)網(wǎng)絡(luò)機(jī)器上放一個(gè)用戶目錄,因?yàn)橛脩裟夸浛梢栽贜FS服務(wù)器上設(shè)置并使其在整個(gè)網(wǎng)絡(luò)上可用。
(3)存儲(chǔ)設(shè)備如軟盤、光驅(qū)及USB設(shè)備可以被網(wǎng)絡(luò)上其它機(jī)器使用,這可能可以減少網(wǎng)絡(luò)上移動(dòng)設(shè)備的數(shù)量。
二、與NFS相關(guān)的幾個(gè)文件和命令
1、/etc/exports
對NFS服務(wù)的訪問是由exports來批準(zhǔn),它枚舉了若干有權(quán)訪問NFS服務(wù)器上文件系統(tǒng)的主機(jī)名。
2、/sbin/exportfs
維護(hù)NFS的資源共享,可以通過它重新設(shè)定/etc/exports的共享目錄,卸載NFS
Server共享的目錄或者重新共享等。
3、/usr/sbin/showmount
上面的文件主要用在NFS
Server端,而showmount則主要用在Client端,showmount可以用來查看NFS共享的目錄資源。
4、/var/lib/nfs/xtab
NFS的記錄文檔:通過它可以查看有哪些Client連接到NFS主機(jī)的記錄。
下面這幾個(gè)并不直接負(fù)責(zé)NFS,實(shí)際上它們是負(fù)責(zé)所有的RPC。
5、/etc/default/portmap
實(shí)際上,portmap負(fù)責(zé)映射所有的RPC服務(wù)端口,它的內(nèi)容非常非常之簡單。
6、/etc/hosts.deny
設(shè)定拒絕portmap服務(wù)的主機(jī),即禁止訪問的客戶端IP列表。
7、/etc/hosts.allow
設(shè)定允許portmap服務(wù)的主機(jī),即允許訪問的客戶端IP列表。
三、NFS安裝
在主機(jī)上安裝NFS服務(wù)軟件,因?yàn)镈ebian/Ubuntu上默認(rèn)是沒有安裝的。
1、安裝端口映射器portmap(可選)
$
sudo apt-get install portmap
2、在終端提示符后鍵入以下命令安裝NFS服務(wù)器
$ sudo apt-get install nfs-kernel-server
3、安裝NFS客戶端(可選)
$ sudo apt-get install nfs-common
注意:nfs-
kernel-server和nfs-common都依賴于portmap。另外,在一些文檔中提出還需要使用apt-get來手動(dòng)安裝NFS的客戶端
nfs-common,以及端口映射器portmap,但其實(shí)這是沒有必要的,因?yàn)樵诎惭bnfs-kernel-server時(shí),apt會(huì)自動(dòng)把它們安裝
好。
這樣,宿主機(jī)就相當(dāng)于NFS
Server。同樣地,目標(biāo)系統(tǒng)作為NFS的客戶端,需要安裝NFS客戶端程序。如果是Debian/Ubuntu系統(tǒng),則需要安裝nfs-common(第3步)。
四、NFS配置
1、配置portmap
方法1:編輯/etc/default/portmap,將"-i 127.0.0.1"去掉;
方法2:$ sudo dpkg-reconfigure portmap,出現(xiàn)“正在設(shè)定portmap”軟件包設(shè)置界面,對Should
portmap be bound to the loopback address?選擇“否(No)”。
2、配置/etc/hosts.deny
禁止任何host(主機(jī))能和你的NFS服務(wù)器進(jìn)行NFS連接。在該文件中加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
3、配置/etc/hosts.allow
允許那些你想要的主機(jī)和你的NFS服務(wù)器建立連接。
下列步驟將允許任何IP地址以192.168.1開頭的主機(jī)連接到NFS服務(wù)器上,具體要看你目標(biāo)板的端口地址,也可以指定特定的IP地址。在該文件中加入:
### NFS DAEMONS
portmap: 192.168.1.
lockd:
192.168.1.
rquotad:
192.168.1.
mountd:
192.168.1.
statd: 192.168.1.
通過/etc/hosts.deny和/etc/hosts.allow設(shè)置對portmap的訪問,采用這兩個(gè)配
置文件有點(diǎn)類似"mask"的意思。先在/etc/hosts.deny中禁止所有用戶對portmap的訪問,再在/etc/hosts.allow中
允許某些用戶對portmap的訪問。
然后重啟portmap daemon:
$
sudo /etc/init.d/portmap restart
4、配置/etc/exports
(1)共享的NFS目錄在/etc/exports中列出,這個(gè)文件控制對目錄的共享(NFS掛載目錄及權(quán)限由該文件定義),書寫規(guī)則是每個(gè)共享為一行)。
格式:[共享目錄] [主機(jī)名或IP](參數(shù),參數(shù)...)
第一個(gè)參數(shù)是要讓客戶機(jī)訪問的目錄,第二個(gè)是你允許的主機(jī)IP,最后的()內(nèi)是訪問控制方式。
注意:客戶端可以使用主機(jī)名或者IP地址指定,在主機(jī)名中可以使用通配符(*),IP地址后也可以跟掩碼段(/24),但出于安全原因這種情況應(yīng)該盡量避免??蛻舳说恼f明后可在圓括號(hào)中加入一系列參數(shù)。很重要的一點(diǎn),不要在最后一個(gè)客戶端聲明的后面留下任何空白或者沒關(guān)閉括號(hào),因?yàn)榭瞻锥急唤忉尦煽蛻舳说姆指舴?br />例如我要將/opt/FriendlyARM/mini2440/root_nfs目錄讓用戶的IP共享,則在該文件末尾添加下列語句:
/opt/FriendlyARM/mini2440/root_nfs
*(rw,sync,no_root_squash)
其中:
/opt/FriendlyARM/mini2440/root_nfs
表示NFS共享目錄,它可以作為開發(fā)板的根文件系統(tǒng)通過NFS掛接;
* 表示所有的客戶機(jī)都可以掛接此目錄;
rw 表示掛接此目錄的客戶機(jī)對該目錄有讀寫的權(quán)力;
sync 表示所有數(shù)據(jù)在請求時(shí)寫入共享,即數(shù)據(jù)同步寫入內(nèi)存和硬盤;
no_root_squash 表示允許掛接此目錄的客戶機(jī)享有該主機(jī)的root身份。
注意:可以用主機(jī)名來代替*,盡量指定主機(jī)名以便使那些不想其訪問的系統(tǒng)不能訪問NFS掛載的資源。另外,最好加上sync,
否則$ sudo exportfs -r時(shí)會(huì)給出警告,sync是NFS的默認(rèn)選項(xiàng)。
(2)下面是一些NFS共享的常用參數(shù):
ro
只讀訪問
rw 讀寫訪問
sync 所有數(shù)據(jù)在請求時(shí)寫入共享
async NFS在寫入數(shù)據(jù)前可以相應(yīng)請求
secure NFS通過1024以下的安全TCP/IP端口發(fā)送
insecure NFS通過1024以上的端口發(fā)送
wdelay 如果多個(gè)用戶要寫入NFS目錄,則歸組寫入(默認(rèn))
no_wdelay 如果多個(gè)用戶要寫入NFS目錄,則立即寫入,當(dāng)使用async時(shí),無需此設(shè)置
hide 在NFS共享目錄中不共享其子目錄
no_hide 共享NFS目錄的子目錄
subtree_check 如果共享/usr/bin之類的子目錄時(shí),強(qiáng)制NFS檢查父目錄的權(quán)限(默認(rèn))
no_subtree_check 和上面相對,不檢查父目錄權(quán)限
all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄
no_all_squash 保留共享文件的UID和GID(默認(rèn))
root_squash root用戶的所有請求映射成如anonymous用戶一樣的權(quán)限(默認(rèn))
no_root_squash root用戶具有根目錄的完全管理訪問權(quán)限
anonuid=xxx 指定NFS服務(wù)器/etc/passwd文件中匿名用戶的UID
anongid=xxx 指定NFS服務(wù)器/etc/passwd文件中匿名用戶的GID
(3)查看NFS Server的export
list:
$ sudo showmount -e
若更改了/etc/exports,運(yùn)行以下命令進(jìn)行更新:
$ sudo exportfs -r
然后重啟NFS服務(wù):
$ sudo /etc/init.d/nfs-kernel-server restart
五、啟動(dòng)和停止NFS服務(wù)
1、啟動(dòng)NFS的方法和啟動(dòng)其他服務(wù)器的方法類似,首先需要啟動(dòng)portmap和NFS這兩個(gè)服務(wù),并且portmap服務(wù)一定要先于NFS服務(wù)啟動(dòng)。
$ sudo /etc/init.d/portmap start
$ sudo
/etc/init.d/nfs-kernel-server start
2、停止NFS服務(wù)
在停止NFS服務(wù)的時(shí)候,需要先停止NFS服務(wù)再停止portmap服務(wù),如果系統(tǒng)中還有其他服務(wù)需要使用portmap服務(wù),則可以不停止portmap服務(wù)。
$ sudo /etc/init.d/nfs-kernel-server stop
$ sudo /etc/init.d/portmap stop
3、重新啟動(dòng)portmap和NFS服務(wù)
$ sudo /etc/init.d/portmap restart
$
sudo /etc/init.d/nfs-kernel-server restart
4、檢查portmap和NFS服務(wù)狀態(tài)
$ sudo /etc/init.d/portmap status
$ sudo /etc/init.d/nfs-kernel-server status
5、設(shè)置自動(dòng)啟動(dòng)NFS服務(wù)
(1)檢查NFS的運(yùn)行級(jí)別:
$ sudo chkconfig --list portmap
$ sudo chkconfig --list nfs-kernel-server
(2)在實(shí)際使用中,如果每次開啟計(jì)算機(jī)之后都手工啟動(dòng)NFS服務(wù)是非常麻煩的,此時(shí)可以設(shè)置系統(tǒng)在指定的運(yùn)行級(jí)別自動(dòng)啟動(dòng)portmap和NFS服務(wù)。
$ sudo chkconfig --level 235 portmap on
$ sudo chkconfig --level 235 nfs-kernel-server on
六、NFS客戶端配置(NFS測試)
1、在NFS服務(wù)器啟動(dòng)后,還需要檢查Linux服務(wù)器的防火墻設(shè)置(一般需要關(guān)閉防火墻服務(wù)),確保沒有屏蔽
NFS使用的端口和允許通信的主機(jī),主要是檢查Linux服務(wù)器iptables、ipchains等選項(xiàng)的設(shè)置,以及/etc/hosts.deny,
/etc/hosts.allow文件。通常都是在內(nèi)部局域網(wǎng)中進(jìn)行開發(fā),再安裝系統(tǒng)時(shí)最好不要安裝防火墻等網(wǎng)絡(luò)安全軟件,以方便使用時(shí)的配置。
如果你有防火墻,請確保32771、111和2049端口保持開放。
2、手動(dòng)掛載
使用mount命令來掛載其他機(jī)器共享的NFS目錄。
格式:$ sudo mount [Server IP]:/[share dir] [local
mount point]
例如:
$ sudo mount -t nfs [-o nolock]
localhost:/opt/FriendlyARM/mini2440/root_nfs /mnt/root_nfs 或
$ sudo mount -t nfs -o nolock
192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs
其中,localhost可以是具體的IP地址,同時(shí)掛載點(diǎn)/mnt/root_nfs目錄必須已經(jīng)存在,而且在/mnt/root_nfs目錄中沒有文件或子目錄。
3、自動(dòng)掛載
(1)另一個(gè)掛載其他機(jī)器的NFS共享的方式就是在/etc/fstab文件中添加一行,該行必須指明NFS服務(wù)器的主機(jī)名、服務(wù)器輸出的目錄名以及掛載NFS共享的本機(jī)目錄,同時(shí)必須是根用戶才能修改/etc/fstab文件。
格式:server.mydomain.com:/usr/local/pub /pub nfs
rsize=8192,wsize=8192,timeo=14,intr
注意:可以根據(jù)實(shí)際情況修改NFS服務(wù)器共享文件夾"servername.mydomain.com:/usr/local/pub"和在本機(jī)的掛載點(diǎn)"/pub",同時(shí)掛載點(diǎn)/pub在客戶端機(jī)器上必須存在。
(2)NFS常見掛載參數(shù):
timeo 如果超時(shí),客戶端等待的時(shí)間,以十分之一秒計(jì)算
retrans 超時(shí)嘗試的次數(shù)
bg 后臺(tái)掛載(很有用)
hard 如果server端沒有響應(yīng),那么客戶端一直嘗試掛載
rsize 讀塊大小
wsize 寫塊大小
4、使用autofs來掛載NFS
(1)掛載NFS共享的第三種方法是使用autofs,它使用automount守護(hù)進(jìn)程來管理掛載點(diǎn),只在文件系統(tǒng)被訪問時(shí)才動(dòng)態(tài)地掛載。
autofs訪問主映射配置文件/etc/auto.master來決定要定義哪些掛載點(diǎn),然后使用適用于各個(gè)掛載
點(diǎn)的參數(shù)來啟動(dòng)automount守護(hù)進(jìn)程。主映射配置中的每一行都定義一個(gè)掛載點(diǎn),一個(gè)分開的映射文件定義在該掛載點(diǎn)下要掛載的文件系統(tǒng)。如/etc
/auto.misc文件可能會(huì)定義/misc目錄中的掛載點(diǎn),這種關(guān)系在/etc/auto.master文件中會(huì)被定義。
(2)/etc/auto.master文件中的每個(gè)項(xiàng)目都有3個(gè)字段,第1個(gè)字段是掛載點(diǎn);第2個(gè)字段是映射文件的位置;第3個(gè)字段可選,可以包括超時(shí)數(shù)值之類的信息。
例如:要在機(jī)器上的/misc/myproject掛載點(diǎn)上掛載遠(yuǎn)程機(jī)penguin.example.net中的/project52目錄。
在/etc/auto.master文件中添加以下行:
/misc /etc/auto.misc --timeout 60
在/etc/auto.misc文件中添加以下行:
myproject -rw,soft,intr,rsize=8192,wsize=8192
penguin.example.net:/proj52
/etc/auto.misc中的第1個(gè)字段是/misc子目錄的名稱,該目錄被automount動(dòng)態(tài)地創(chuàng)建,它不應(yīng)該在客戶端機(jī)器上實(shí)際存在;第2個(gè)字段包括掛載選項(xiàng),如rw代表讀寫訪問權(quán),第3個(gè)字段是要導(dǎo)出的NFS的位置,包括主機(jī)名和目錄。
(3)autofs是一種服務(wù),要啟動(dòng)這項(xiàng)服務(wù),在shell提示下鍵入以下命令:
$ sudo /sbin/service autofs restart
要查看活躍的掛載點(diǎn),在shell提示下鍵入以下命令:
$ sudo /sbin/service autofs status
如果在autofs運(yùn)行時(shí)修改了/etc/auto.master配置文件,則必須在shell提示下鍵入以下命令來通知automount守護(hù)進(jìn)程重新載入配置文件:
$ sudo /sbin/service autofs reload
5、可以運(yùn)行df命令查看是否掛載成功:
$ sudo df
取消掛載的命令如下:
$ sudo umount /mnt/root_nfs
七、目標(biāo)板NFS配置操作
主機(jī)IP:192.168.1.101
目標(biāo)板IP:192.168.1.230
將USB轉(zhuǎn)串口連接上,在終端輸入minicom與板子連起,作為“超級(jí)終端”使用。
啟動(dòng)目標(biāo)板并連通網(wǎng)絡(luò)后,首先查看目標(biāo)板kernel自身是否支持NFS,在minicom中輸入cat
/proc/filesystems命令查看其中是否有NFS一行,若沒有則表示內(nèi)核不支持NFS,就需要重新編譯和燒寫內(nèi)核;有則OK,接下來就可以直接進(jìn)行mount操作了。
具體命令是:
# mount -t
nfs -o nolock
192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs
無任何提示表示成功,這時(shí)可以進(jìn)入/mnt/root_nfs目錄,對文件進(jìn)行cp、mv等操作。
但是如果使用命令mount -t nfs
192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs,則會(huì)有如下的錯(cuò)誤提示(也就是省去了"-o
nolock"):
# mount -t
nfs 192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs
portmap: server localhost
not responding, timed out
RPC: failed to contact portmap (errno -5).
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
lockd_up: makesock failed, error=-5
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
這時(shí)如果使用ls
/mnt/root_nfs命令查看該目錄內(nèi)容時(shí),你會(huì)發(fā)現(xiàn)此時(shí)NFS確確實(shí)實(shí)已經(jīng)掛載成功了。
然后取消掛載的時(shí)候會(huì)出現(xiàn)如下的錯(cuò)誤提示:
#
umount /mnt/root_nfs/
lockd_down: no lockd running.
而成功取消掛載時(shí)沒有任何提示,同樣此時(shí)NFS也確實(shí)已經(jīng)取消掛載了。
那么出現(xiàn)上面錯(cuò)誤提示的可能原因是:
nfs
mount默認(rèn)選項(xiàng)包括文件鎖,依賴于portmap提供的動(dòng)態(tài)端口分配功能。
簡單的解決方法:kill文件鎖(lockd)或者使用mount -o
nolock命令。
上面說的文件鎖具體是什么原因,目前還沒有找到更好的解決辦法。不過,如果主機(jī)防火墻有設(shè)置時(shí),也可能導(dǎo)致目標(biāo)板無法正常訪問。
想要使用命令端口,只要進(jìn)入MINICOM(主意用筆記本的話,你的端口不能用TTY0而是TTYUSB0)進(jìn)入,ENTER
后就可以輸入命令了。然后直接,掛載??梢杂谩5悄愕腅TH0肯定會(huì)和你的無限沖突。自己覺得改了恐怕不行。因?yàn)樗麜?huì)不是別你的網(wǎng)卡,導(dǎo)致NFS不能連接
PC環(huán)境是ubuntu9。04,開發(fā)板為友善之臂的MINI2440
主機(jī)IP:192.168.50.72 網(wǎng)關(guān):192.168.50.1 子網(wǎng)掩碼:255.255.255.0
開發(fā)板IP:192.168.50.168
為了能和主機(jī)建立起連接我必須得把開發(fā)板IP改成和主機(jī)一個(gè)網(wǎng)段的 .
這里首先要說明的是ubuntu的靜態(tài)IP設(shè)置問題:
默認(rèn)安裝完成后,右上角的網(wǎng)絡(luò)配置上 wired ..和eth0為灰色。不能點(diǎn)選 。
然后禁用networdmanager啟動(dòng)network以太網(wǎng)設(shè)置靜態(tài)IP的時(shí)候,不管怎么設(shè)置,子網(wǎng)掩碼都和網(wǎng)關(guān)一樣,
比如說:地址:192.168.0.22
子網(wǎng)掩碼: 192.168.0.1 //不管怎么輸入255.255.255.0 ,都不行!
網(wǎng)關(guān): 192.168.0.1 //這里改了255.255.255.0的話,上面就也成255.255.255.0了。(auto ethernet是可以聯(lián)上網(wǎng)的)。所以就上GG找答案,找解決方法。
進(jìn)入FC10,執(zhí)行終端命令(也可以用VI修改)
$ su -c ‘gedit /etc/sysconfig/networking/devices/ifcfg-eth0′
直接修改文件中的子網(wǎng)掩碼信息就可以
代碼為:
# Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI Express
DEVICE=eth0
HWADDR=00:16:e6:db:c2:96
ONBOOT=yes
BOOTPROTO=static //這個(gè)應(yīng)該是“static”,而不是“dhcp”或“none”;
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
NM_CONTROLLED=yes//這個(gè)應(yīng)該是“yes”,如不修改,鏈接仍是disconnected;
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.50.72
GATEWAY=192.168.50.1
然后重新激活下網(wǎng)卡就可以了.
#service network restart
設(shè)置完成后,右上角的網(wǎng)絡(luò)配置上System eth0與auto ethernet就可以點(diǎn)選了.
需要說明的是因?yàn)槲抑皼]有設(shè)置靜態(tài)IP之前通過 NFS 啟動(dòng)系統(tǒng)啟動(dòng)不了.
連接主機(jī)和開發(fā)板
我選擇了串口線和網(wǎng)線連接起了主機(jī)和開發(fā)板
連接好電源,串口線,網(wǎng)線,打開串口終端
配置minicom(在FC10終端輸入命令minicom -s)
進(jìn)入到minicom配置界面后選擇 :Serial port setup
然后按照下面的設(shè)置下就OK了
A – Serial Device : :/dev/ttyS0
B – Lockfile Location : /var/lock
C – Callin Program :
D – Callout Program :
E – Bps/Par/Bits : 115200 8N1
F – Hardware Flow Control : No
G – Software Flow Control : No
建立和配置 NFS 服務(wù)
(1)設(shè)置共享目錄
運(yùn)行命令
#gedit /etc/exports
編輯 nfs 服務(wù)的配置文件(注意:第一次打開時(shí)該文件是空的),添加以下內(nèi)容:
/opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash)
其中:
/opt/FriendlyARM/mini2440/root_qtopia 表示 nfs 共享目錄,它可以作為開發(fā)板的根文件系統(tǒng)通過 nfs 掛接;
* 表示所有的客戶機(jī)都可以掛接此目錄
rw 表示掛接此目錄的客戶機(jī)對該目錄有讀寫的權(quán)力
no_root_squash 表示允許掛接此目錄的客戶機(jī)享有該主機(jī)的 root 身份
(2)通過命令啟動(dòng)和停止 nfs 服務(wù)
在命令行下運(yùn)行:
#/etc/init.d/nfs
這將啟動(dòng) nfs 服務(wù),可以輸入以下命令檢驗(yàn) nfs 該服務(wù)是否啟動(dòng)。
# mount -t nfs 192.168.50.72: /opt/FriendlyARM/mini2440/root_qtopia
如 果 沒 有 出 現(xiàn) 錯(cuò) 誤 信 息 , 您 將 可 以 瀏 覽 到 /mnt 目 錄 中 的 內(nèi) 容和
/opt/FriendlyARM/mini2440/root_qtopia 是一致的。
使用這個(gè)命令可以停止 nfs 服務(wù):
#/etc/init.d/nfs stop
檢查nfs服務(wù)器是否開啟:
重啟對應(yīng)的2個(gè)服務(wù):
#service nfs restart
檢查防火墻看是否屏蔽了nfs端口
#service iptables stop
#service iptables status
通過 NFS 啟動(dòng)系統(tǒng)
當(dāng) NFS 服務(wù)設(shè)置好并啟動(dòng)后,我們就可以把 NFS 作為根文件系統(tǒng)來啟動(dòng)開發(fā)板了。通過使用 NFS 作為根文件系統(tǒng),開發(fā)板的“硬盤”就可以變得很大,因?yàn)槟褂玫氖侵鳈C(jī)的硬盤,這是使用 linux 作為開發(fā)經(jīng)常使用的方法,
設(shè)置目標(biāo)板啟動(dòng)模式為 Nand Flash 啟動(dòng),連接好電源,串口線,網(wǎng)線;打開串口終端,在開機(jī)或者復(fù)位的時(shí)候迅速按下 PC 機(jī)的空格鍵,這樣我們就進(jìn)入了 vivi 模式,輸入以下命令:
Supervivi> param set linux_cmd_line “console=ttySAC0 root=/dev/nfs
nfsroot=192.168.50.72:/opt/FriendlyARM/mini2440/root_qtopia
ip=192.168.50.168:192.168.50.72:192.168.50.1:255.255.255.0:mini2440:eth0:off”
(1,如果通過minicom監(jiān)控串口,如出現(xiàn)亂碼,可將波特率調(diào)高點(diǎn),我調(diào)的是
115200
換行,其實(shí)也可以設(shè)置一下:同時(shí)按下CTRL+A
注意:要是你用的是usb轉(zhuǎn)串口console=ttyUSB0。還有就是你要把你想掛載的文件系統(tǒng)放在共享的文件里面(root_qtopia)
其中 ,param set linux_cmd_line 是設(shè)置啟動(dòng) linux 時(shí)的命令參數(shù)。其各參數(shù)的含義如下:
nfsroot 后面是自己開發(fā)主機(jī)的 IP 地址。
“ip=”后面:
第一項(xiàng)(192.168.50.168)是目標(biāo)板的臨時(shí) IP(注意不要和局域網(wǎng)內(nèi)其他 IP 沖突);
第二項(xiàng)(192.168.50.72)是開發(fā)主機(jī)的 IP;
第三項(xiàng)(192.168.50.1)是目標(biāo)板上網(wǎng)關(guān)(GW)的設(shè)置;
第四項(xiàng)(255.255.255.0)是子網(wǎng)掩碼;
第五項(xiàng)是開發(fā)主機(jī)的名字(一般無關(guān)緊要,可隨便填寫)
eth0 是網(wǎng)卡設(shè)備的名稱
然后輸入 boot,按回車就可以通過 nfs 啟動(dòng)系統(tǒng)了。
在開發(fā)板上掛載NFS網(wǎng)絡(luò)文件系統(tǒng)(Linux 中最常用的方法就是采用 NFS 來執(zhí)行各種程序,這樣可以不必花費(fèi)很多時(shí)間下載程序,雖然在此下載 hello 程序用不了多久,一旦您的應(yīng)用程序變得越來越大,您就會(huì)發(fā)現(xiàn)使用 NFS 運(yùn)行的方便所在。)
通過NFS啟動(dòng)系統(tǒng)后,在開發(fā)板終端輸入
[root@FriendlyARM /]# mount -t nfs -o nolock 192.168.50.72:/opt/FriendlyARM/mini2440/root_qtopia
這里我剛開始遇到了一個(gè)問題,以為為什么開發(fā)板不能mount,因?yàn)樘崾救缦洛e(cuò)誤信
息:
192.168.50.72:/opt/FriendlyARM/mini2440/root_qtopia on /mnt/ failed: No
such file or directory
于是我就ls看了一下,發(fā)現(xiàn)沒有mnt文件夾,所以就自己創(chuàng)建了一個(gè).再次mount就沒有問題了.
[root@FriendlyARM /]# ls
bin
dev
[root@FriendlyARM /]# mkdir mnt
[root@FriendlyARM /]# ls
bin
dev
etc
[root@FriendlyARM /]# mount -t nfs -o nolock 192.168.50.72:/opt/FriendlyARM/mini
2440/root_qtopia
[root@FriendlyARM /]# cd /mnt/
[root@FriendlyARM /mnt]# ls
bin
dev
etc
mount成功后你進(jìn)入到/mnt目錄下就可以看到你主機(jī)root_nfs目錄下的內(nèi)容了.
至此我成功在ARM開發(fā)板上掛載NFS網(wǎng)絡(luò)文件系統(tǒng).
from:
http://www.cembed.com/bbsxp/ShowPost.asp?ThreadID=6579
下邊是我轉(zhuǎn)載的完美的實(shí)現(xiàn)ubuntu的nfs方法步驟:
網(wǎng)絡(luò)文件系統(tǒng)(NFS)
一、NFS簡介
1、NFS就是Network File
System的縮寫,它的最大功能就是可以通過網(wǎng)絡(luò)讓不同的機(jī)器,不同的操作系統(tǒng)彼此共享文件(share
files)——可以通過NFS掛載遠(yuǎn)程主機(jī)的目錄,訪問該目錄就像訪問本地目錄一樣,所以也可以簡單的將它看作一個(gè)文件服務(wù)器(File
Server)。
注意:一般而言,使用NFS服務(wù)能夠方便地使各unix-like系統(tǒng)之間實(shí)現(xiàn)共享,但如果需要在unix-like和windows系統(tǒng)之間共享,那就得使用samba了。
2、NFS是通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸,那么NFS使用哪些端口呢,答案是……不知道,因?yàn)镹FS傳輸數(shù)據(jù)時(shí)使用的端口是隨機(jī)的,唯一的限制就是小于1024,客戶端怎么知道服務(wù)器使用的是哪個(gè)端口,此時(shí)就要用到遠(yuǎn)程過程調(diào)用RPC。
其實(shí),NFS運(yùn)行在SUN的RPC(Remote Procedure
Call,遠(yuǎn)程過程調(diào)用)基礎(chǔ)上,RPC定義了一種與系統(tǒng)無關(guān)的方法來實(shí)現(xiàn)進(jìn)程間通信,由此,NFS Server也可以看作是RPC
Server。正
因?yàn)镹FS是一個(gè)RPC服務(wù)程序,所以在使用它之前,先要映射好端口——通過portmap設(shè)定。比如:某個(gè)NFS
Client發(fā)起NFS服務(wù)請求時(shí),它需要先得到一個(gè)端口(port),所以它先通過portmap得到port
number(不僅是NFS,所有的RPC服務(wù)程序啟動(dòng)之前,都需要先設(shè)定好portmap)。
注意:在啟動(dòng)RPC服務(wù)(比如NFS)之前,需要先啟動(dòng)portmap服務(wù)。
3、NFS允許系統(tǒng)將其目錄和文件共享給網(wǎng)絡(luò)上的其他系統(tǒng)。通過NFS,用戶和應(yīng)用程序可以訪問遠(yuǎn)程系統(tǒng)上的文件,就像它們是本地文件一樣。那么NFS最值得注意的優(yōu)點(diǎn)有:
(1)本地工作站可以使用更少的磁盤空間,因?yàn)槌S脭?shù)據(jù)可以被保存在一臺(tái)機(jī)器上,并讓網(wǎng)絡(luò)上的其他機(jī)器可以訪問它。
(2)不需要為用戶在每臺(tái)網(wǎng)絡(luò)機(jī)器上放一個(gè)用戶目錄,因?yàn)橛脩裟夸浛梢栽贜FS服務(wù)器上設(shè)置并使其在整個(gè)網(wǎng)絡(luò)上可用。
(3)存儲(chǔ)設(shè)備如軟盤、光驅(qū)及USB設(shè)備可以被網(wǎng)絡(luò)上其它機(jī)器使用,這可能可以減少網(wǎng)絡(luò)上移動(dòng)設(shè)備的數(shù)量。
二、與NFS相關(guān)的幾個(gè)文件和命令
1、/etc/exports
對NFS服務(wù)的訪問是由exports來批準(zhǔn),它枚舉了若干有權(quán)訪問NFS服務(wù)器上文件系統(tǒng)的主機(jī)名。
2、/sbin/exportfs
維護(hù)NFS的資源共享,可以通過它重新設(shè)定/etc/exports的共享目錄,卸載NFS
Server共享的目錄或者重新共享等。
3、/usr/sbin/showmount
上面的文件主要用在NFS
Server端,而showmount則主要用在Client端,showmount可以用來查看NFS共享的目錄資源。
4、/var/lib/nfs/xtab
NFS的記錄文檔:通過它可以查看有哪些Client連接到NFS主機(jī)的記錄。
下面這幾個(gè)并不直接負(fù)責(zé)NFS,實(shí)際上它們是負(fù)責(zé)所有的RPC。
5、/etc/default/portmap
實(shí)際上,portmap負(fù)責(zé)映射所有的RPC服務(wù)端口,它的內(nèi)容非常非常之簡單。
6、/etc/hosts.deny
設(shè)定拒絕portmap服務(wù)的主機(jī),即禁止訪問的客戶端IP列表。
7、/etc/hosts.allow
設(shè)定允許portmap服務(wù)的主機(jī),即允許訪問的客戶端IP列表。
三、NFS安裝
在主機(jī)上安裝NFS服務(wù)軟件,因?yàn)镈ebian/Ubuntu上默認(rèn)是沒有安裝的。
1、安裝端口映射器portmap(可選)
$
sudo apt-get install portmap
2、在終端提示符后鍵入以下命令安裝NFS服務(wù)器
$ sudo apt-get install nfs-kernel-server
3、安裝NFS客戶端(可選)
$ sudo apt-get install nfs-common
注意:nfs-
kernel-server和nfs-common都依賴于portmap。另外,在一些文檔中提出還需要使用apt-get來手動(dòng)安裝NFS的客戶端
nfs-common,以及端口映射器portmap,但其實(shí)這是沒有必要的,因?yàn)樵诎惭bnfs-kernel-server時(shí),apt會(huì)自動(dòng)把它們安裝
好。
這樣,宿主機(jī)就相當(dāng)于NFS
Server。同樣地,目標(biāo)系統(tǒng)作為NFS的客戶端,需要安裝NFS客戶端程序。如果是Debian/Ubuntu系統(tǒng),則需要安裝nfs-common(第3步)。
四、NFS配置
1、配置portmap
方法1:編輯/etc/default/portmap,將"-i 127.0.0.1"去掉;
方法2:$ sudo dpkg-reconfigure portmap,出現(xiàn)“正在設(shè)定portmap”軟件包設(shè)置界面,對Should
portmap be bound to the loopback address?選擇“否(No)”。
2、配置/etc/hosts.deny
禁止任何host(主機(jī))能和你的NFS服務(wù)器進(jìn)行NFS連接。在該文件中加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
3、配置/etc/hosts.allow
允許那些你想要的主機(jī)和你的NFS服務(wù)器建立連接。
下列步驟將允許任何IP地址以192.168.1開頭的主機(jī)連接到NFS服務(wù)器上,具體要看你目標(biāo)板的端口地址,也可以指定特定的IP地址。在該文件中加入:
### NFS DAEMONS
portmap: 192.168.1.
lockd:
192.168.1.
rquotad:
192.168.1.
mountd:
192.168.1.
statd: 192.168.1.
通過/etc/hosts.deny和/etc/hosts.allow設(shè)置對portmap的訪問,采用這兩個(gè)配
置文件有點(diǎn)類似"mask"的意思。先在/etc/hosts.deny中禁止所有用戶對portmap的訪問,再在/etc/hosts.allow中
允許某些用戶對portmap的訪問。
然后重啟portmap daemon:
$
sudo /etc/init.d/portmap restart
4、配置/etc/exports
(1)共享的NFS目錄在/etc/exports中列出,這個(gè)文件控制對目錄的共享(NFS掛載目錄及權(quán)限由該文件定義),書寫規(guī)則是每個(gè)共享為一行)。
格式:[共享目錄] [主機(jī)名或IP](參數(shù),參數(shù)...)
第一個(gè)參數(shù)是要讓客戶機(jī)訪問的目錄,第二個(gè)是你允許的主機(jī)IP,最后的()內(nèi)是訪問控制方式。
注意:客戶端可以使用主機(jī)名或者IP地址指定,在主機(jī)名中可以使用通配符(*),IP地址后也可以跟掩碼段(/24),但出于安全原因這種情況應(yīng)該盡量避免??蛻舳说恼f明后可在圓括號(hào)中加入一系列參數(shù)。很重要的一點(diǎn),不要在最后一個(gè)客戶端聲明的后面留下任何空白或者沒關(guān)閉括號(hào),因?yàn)榭瞻锥急唤忉尦煽蛻舳说姆指舴?br />例如我要將/opt/FriendlyARM/mini2440/root_nfs目錄讓用戶的IP共享,則在該文件末尾添加下列語句:
/opt/FriendlyARM/mini2440/root_nfs
*(rw,sync,no_root_squash)
其中:
/opt/FriendlyARM/mini2440/root_nfs
表示NFS共享目錄,它可以作為開發(fā)板的根文件系統(tǒng)通過NFS掛接;
* 表示所有的客戶機(jī)都可以掛接此目錄;
rw 表示掛接此目錄的客戶機(jī)對該目錄有讀寫的權(quán)力;
sync 表示所有數(shù)據(jù)在請求時(shí)寫入共享,即數(shù)據(jù)同步寫入內(nèi)存和硬盤;
no_root_squash 表示允許掛接此目錄的客戶機(jī)享有該主機(jī)的root身份。
注意:可以用主機(jī)名來代替*,盡量指定主機(jī)名以便使那些不想其訪問的系統(tǒng)不能訪問NFS掛載的資源。另外,最好加上sync,
否則$ sudo exportfs -r時(shí)會(huì)給出警告,sync是NFS的默認(rèn)選項(xiàng)。
(2)下面是一些NFS共享的常用參數(shù):
ro
只讀訪問
rw 讀寫訪問
sync 所有數(shù)據(jù)在請求時(shí)寫入共享
async NFS在寫入數(shù)據(jù)前可以相應(yīng)請求
secure NFS通過1024以下的安全TCP/IP端口發(fā)送
insecure NFS通過1024以上的端口發(fā)送
wdelay 如果多個(gè)用戶要寫入NFS目錄,則歸組寫入(默認(rèn))
no_wdelay 如果多個(gè)用戶要寫入NFS目錄,則立即寫入,當(dāng)使用async時(shí),無需此設(shè)置
hide 在NFS共享目錄中不共享其子目錄
no_hide 共享NFS目錄的子目錄
subtree_check 如果共享/usr/bin之類的子目錄時(shí),強(qiáng)制NFS檢查父目錄的權(quán)限(默認(rèn))
no_subtree_check 和上面相對,不檢查父目錄權(quán)限
all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄
no_all_squash 保留共享文件的UID和GID(默認(rèn))
root_squash root用戶的所有請求映射成如anonymous用戶一樣的權(quán)限(默認(rèn))
no_root_squash root用戶具有根目錄的完全管理訪問權(quán)限
anonuid=xxx 指定NFS服務(wù)器/etc/passwd文件中匿名用戶的UID
anongid=xxx 指定NFS服務(wù)器/etc/passwd文件中匿名用戶的GID
(3)查看NFS Server的export
list:
$ sudo showmount -e
若更改了/etc/exports,運(yùn)行以下命令進(jìn)行更新:
$ sudo exportfs -r
然后重啟NFS服務(wù):
$ sudo /etc/init.d/nfs-kernel-server restart
五、啟動(dòng)和停止NFS服務(wù)
1、啟動(dòng)NFS的方法和啟動(dòng)其他服務(wù)器的方法類似,首先需要啟動(dòng)portmap和NFS這兩個(gè)服務(wù),并且portmap服務(wù)一定要先于NFS服務(wù)啟動(dòng)。
$ sudo /etc/init.d/portmap start
$ sudo
/etc/init.d/nfs-kernel-server start
2、停止NFS服務(wù)
在停止NFS服務(wù)的時(shí)候,需要先停止NFS服務(wù)再停止portmap服務(wù),如果系統(tǒng)中還有其他服務(wù)需要使用portmap服務(wù),則可以不停止portmap服務(wù)。
$ sudo /etc/init.d/nfs-kernel-server stop
$ sudo /etc/init.d/portmap stop
3、重新啟動(dòng)portmap和NFS服務(wù)
$ sudo /etc/init.d/portmap restart
$
sudo /etc/init.d/nfs-kernel-server restart
4、檢查portmap和NFS服務(wù)狀態(tài)
$ sudo /etc/init.d/portmap status
$ sudo /etc/init.d/nfs-kernel-server status
5、設(shè)置自動(dòng)啟動(dòng)NFS服務(wù)
(1)檢查NFS的運(yùn)行級(jí)別:
$ sudo chkconfig --list portmap
$ sudo chkconfig --list nfs-kernel-server
(2)在實(shí)際使用中,如果每次開啟計(jì)算機(jī)之后都手工啟動(dòng)NFS服務(wù)是非常麻煩的,此時(shí)可以設(shè)置系統(tǒng)在指定的運(yùn)行級(jí)別自動(dòng)啟動(dòng)portmap和NFS服務(wù)。
$ sudo chkconfig --level 235 portmap on
$ sudo chkconfig --level 235 nfs-kernel-server on
六、NFS客戶端配置(NFS測試)
1、在NFS服務(wù)器啟動(dòng)后,還需要檢查Linux服務(wù)器的防火墻設(shè)置(一般需要關(guān)閉防火墻服務(wù)),確保沒有屏蔽
NFS使用的端口和允許通信的主機(jī),主要是檢查Linux服務(wù)器iptables、ipchains等選項(xiàng)的設(shè)置,以及/etc/hosts.deny,
/etc/hosts.allow文件。通常都是在內(nèi)部局域網(wǎng)中進(jìn)行開發(fā),再安裝系統(tǒng)時(shí)最好不要安裝防火墻等網(wǎng)絡(luò)安全軟件,以方便使用時(shí)的配置。
如果你有防火墻,請確保32771、111和2049端口保持開放。
2、手動(dòng)掛載
使用mount命令來掛載其他機(jī)器共享的NFS目錄。
格式:$ sudo mount [Server IP]:/[share dir] [local
mount point]
例如:
$ sudo mount -t nfs [-o nolock]
localhost:/opt/FriendlyARM/mini2440/root_nfs /mnt/root_nfs 或
$ sudo mount -t nfs -o nolock
192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs
其中,localhost可以是具體的IP地址,同時(shí)掛載點(diǎn)/mnt/root_nfs目錄必須已經(jīng)存在,而且在/mnt/root_nfs目錄中沒有文件或子目錄。
3、自動(dòng)掛載
(1)另一個(gè)掛載其他機(jī)器的NFS共享的方式就是在/etc/fstab文件中添加一行,該行必須指明NFS服務(wù)器的主機(jī)名、服務(wù)器輸出的目錄名以及掛載NFS共享的本機(jī)目錄,同時(shí)必須是根用戶才能修改/etc/fstab文件。
格式:server.mydomain.com:/usr/local/pub /pub nfs
rsize=8192,wsize=8192,timeo=14,intr
注意:可以根據(jù)實(shí)際情況修改NFS服務(wù)器共享文件夾"servername.mydomain.com:/usr/local/pub"和在本機(jī)的掛載點(diǎn)"/pub",同時(shí)掛載點(diǎn)/pub在客戶端機(jī)器上必須存在。
(2)NFS常見掛載參數(shù):
timeo 如果超時(shí),客戶端等待的時(shí)間,以十分之一秒計(jì)算
retrans 超時(shí)嘗試的次數(shù)
bg 后臺(tái)掛載(很有用)
hard 如果server端沒有響應(yīng),那么客戶端一直嘗試掛載
rsize 讀塊大小
wsize 寫塊大小
4、使用autofs來掛載NFS
(1)掛載NFS共享的第三種方法是使用autofs,它使用automount守護(hù)進(jìn)程來管理掛載點(diǎn),只在文件系統(tǒng)被訪問時(shí)才動(dòng)態(tài)地掛載。
autofs訪問主映射配置文件/etc/auto.master來決定要定義哪些掛載點(diǎn),然后使用適用于各個(gè)掛載
點(diǎn)的參數(shù)來啟動(dòng)automount守護(hù)進(jìn)程。主映射配置中的每一行都定義一個(gè)掛載點(diǎn),一個(gè)分開的映射文件定義在該掛載點(diǎn)下要掛載的文件系統(tǒng)。如/etc
/auto.misc文件可能會(huì)定義/misc目錄中的掛載點(diǎn),這種關(guān)系在/etc/auto.master文件中會(huì)被定義。
(2)/etc/auto.master文件中的每個(gè)項(xiàng)目都有3個(gè)字段,第1個(gè)字段是掛載點(diǎn);第2個(gè)字段是映射文件的位置;第3個(gè)字段可選,可以包括超時(shí)數(shù)值之類的信息。
例如:要在機(jī)器上的/misc/myproject掛載點(diǎn)上掛載遠(yuǎn)程機(jī)penguin.example.net中的/project52目錄。
在/etc/auto.master文件中添加以下行:
/misc /etc/auto.misc --timeout 60
在/etc/auto.misc文件中添加以下行:
myproject -rw,soft,intr,rsize=8192,wsize=8192
penguin.example.net:/proj52
/etc/auto.misc中的第1個(gè)字段是/misc子目錄的名稱,該目錄被automount動(dòng)態(tài)地創(chuàng)建,它不應(yīng)該在客戶端機(jī)器上實(shí)際存在;第2個(gè)字段包括掛載選項(xiàng),如rw代表讀寫訪問權(quán),第3個(gè)字段是要導(dǎo)出的NFS的位置,包括主機(jī)名和目錄。
(3)autofs是一種服務(wù),要啟動(dòng)這項(xiàng)服務(wù),在shell提示下鍵入以下命令:
$ sudo /sbin/service autofs restart
要查看活躍的掛載點(diǎn),在shell提示下鍵入以下命令:
$ sudo /sbin/service autofs status
如果在autofs運(yùn)行時(shí)修改了/etc/auto.master配置文件,則必須在shell提示下鍵入以下命令來通知automount守護(hù)進(jìn)程重新載入配置文件:
$ sudo /sbin/service autofs reload
5、可以運(yùn)行df命令查看是否掛載成功:
$ sudo df
取消掛載的命令如下:
$ sudo umount /mnt/root_nfs
七、目標(biāo)板NFS配置操作
主機(jī)IP:192.168.1.101
目標(biāo)板IP:192.168.1.230
將USB轉(zhuǎn)串口連接上,在終端輸入minicom與板子連起,作為“超級(jí)終端”使用。
啟動(dòng)目標(biāo)板并連通網(wǎng)絡(luò)后,首先查看目標(biāo)板kernel自身是否支持NFS,在minicom中輸入cat
/proc/filesystems命令查看其中是否有NFS一行,若沒有則表示內(nèi)核不支持NFS,就需要重新編譯和燒寫內(nèi)核;有則OK,接下來就可以直接進(jìn)行mount操作了。
具體命令是:
# mount -t
nfs -o nolock
192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs
無任何提示表示成功,這時(shí)可以進(jìn)入/mnt/root_nfs目錄,對文件進(jìn)行cp、mv等操作。
但是如果使用命令mount -t nfs
192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs,則會(huì)有如下的錯(cuò)誤提示(也就是省去了"-o
nolock"):
# mount -t
nfs 192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs
/mnt/root_nfs
portmap: server localhost
not responding, timed out
RPC: failed to contact portmap (errno -5).
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
lockd_up: makesock failed, error=-5
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
這時(shí)如果使用ls
/mnt/root_nfs命令查看該目錄內(nèi)容時(shí),你會(huì)發(fā)現(xiàn)此時(shí)NFS確確實(shí)實(shí)已經(jīng)掛載成功了。
然后取消掛載的時(shí)候會(huì)出現(xiàn)如下的錯(cuò)誤提示:
#
umount /mnt/root_nfs/
lockd_down: no lockd running.
而成功取消掛載時(shí)沒有任何提示,同樣此時(shí)NFS也確實(shí)已經(jīng)取消掛載了。
那么出現(xiàn)上面錯(cuò)誤提示的可能原因是:
nfs
mount默認(rèn)選項(xiàng)包括文件鎖,依賴于portmap提供的動(dòng)態(tài)端口分配功能。
簡單的解決方法:kill文件鎖(lockd)或者使用mount -o
nolock命令。
上面說的文件鎖具體是什么原因,目前還沒有找到更好的解決辦法。不過,如果主機(jī)防火墻有設(shè)置時(shí),也可能導(dǎo)致目標(biāo)板無法正常訪問。
想要使用命令端口,只要進(jìn)入MINICOM(主意用筆記本的話,你的端口不能用TTY0而是TTYUSB0)進(jìn)入,ENTER
后就可以輸入命令了。然后直接,掛載??梢杂谩5悄愕腅TH0肯定會(huì)和你的無限沖突。自己覺得改了恐怕不行。因?yàn)樗麜?huì)不是別你的網(wǎng)卡,導(dǎo)致NFS不能連接
評論