Ubuntu下配置tftp服務和NFS服務


原文:http://www.cnblogs.com/shenhaocn/archive/2011/03/13/1983042.html

 

 

配置tftp

方法一:(推薦方法)Ubuntu10.04 測試通過

1.安裝TFTP軟件

sudo apt-get install tftp-hpa tftpd-hpa

tftp-hpa是客戶端,tftpd-hpa是服務器端

2.建立tftpboot目錄,作為服務器的目錄
sudo mkdir ~/tftpboot
釋放權限:(服務器目錄,需要設置權限為777,chomd 777)
sudo chmod 777 ~/tftpboot

 

3.配置TFTP服務器

sudo gedit /etc/default/tftpd-hpa

將原來的內容為:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
#TFTP_DIRECTORY="/var/lib/tftpboot"  #修改為自己需要的路徑,與上面創建的目錄一致
TFTP_ADDRESS="0.0.0.0:69"
#TFTP_OPTIONS="--secure"  #可以通過查看mantftpd,看各種參數的意義

#修改為

TFTP_DIRECTORY="/home/shenhao/tftpboot"

TFTP_OPTIONS="-l -c -s"

3.重新啟動TFTP服務

sudo service tftpd-hpa restart

4.測試下

$ cd ~/tftpboot echo "hello tftp service">>a.txt

$ echo "hello tftp service,put to tftp serive">>b.txt

$ tftp localhost

tftp> get a.txt

tftp> put b.txt

tftp> quit 

其中get是取得文件,put是將文件上傳到TFTP服務器上。

方法二:

配置tftp服務的步驟: 
1、安裝相關軟件包:tftpd(服務端),tftp(客戶端),xinetd 
sudo apt-get install tftpd tftp xinetd

2、建立配置文件(藍色的目錄是可以更改為其他地址的,例如/home/user/tftpboot) 
在/etc/xinetd.d/下建立一個配置文件tftp 
sudo vi tftp 
在文件中輸入以下內容: 
service tftp 

socket_type = dgram 
protocol = udp 
wait = yes 
user = root 
server = /usr/sbin/in.tftpd 
server_args = -s /tftpboot 
disable = no 
per_source = 11 
cps = 100 2 
flags = IPv4 

保存退出

3、建立tftp服務文件目錄(上傳文件與下載文件的位置),並且更改其權限 
sudo mkdir /tftpboot

sudu chmod 777 /tftpboot

4、重新啟動服務 
sudo /etc/init.d/xinetd restart 
至此tftp服務已經安裝完成了,下面可以對其進行一下測試。(假設在當前目錄下有一個測試文件test.txt) 
$tftp 192.168.16.2 (本機的ip地址) 
tftp> get test.txt 
tftp> quit 
$

通過get命令,可以把當前目錄下的test.txt文件,通過tftp上傳到它的服務文件目錄。這時,在/tftpboot下面會出現test.txt文件。通過put命令,可以從/tftpboot下,下載test.txt文件。這樣就驗證了tftp服務配置的正確性。當文件上傳與下載結束后,可以通過quit命令退出。

嚴格按照以上步驟配置tftp服務,一般都可以成功。如果出現無法get或者put的時候,可以查看一下防火牆是否關閉。

-----------------------------------------------------------------------------------------------------

配置nfs服務器

  
在ubuntu下安裝、配置nfs服務的步驟如下: 
1、安裝nfs 
Ubuntu上默認是沒有安裝nfs服務器的,因此我們首先安裝nfs服務器端: 
$sudo apt-get install nfs-kernel-server 
在一些文檔中,提出還需要使用apt-get來手動安裝nfs的客戶端nfs-common,以及端口映射器portmap,但其實這是沒有必要的,因為在安裝nfs-kernel-server時,apt會自動為我們把它們安裝好。

2、配置/etc/exports 
nfs允許掛載的目錄及權限在文件/etc/exports中進行了定義。 
例如,我們要將根目錄下的rootfs目錄共享出來,那么我們需要在/etc/exports文件末尾添加如下一行:

/rootfs  *(rw,sync,no_root_squash) 
其中: /rootfs是要共享的目錄,

            *代表允許所有的網絡段訪問,

            rw是可讀寫權限,sync是資料同步寫入內存和硬盤,

no_root_squash是nfs客戶端分享目錄使用者的權限,如果客戶端使用的是root用戶,那么對於該共享目錄而言,該客戶端就具有root權限。

其它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

3、重啟服務 
$sudo /etc/init.d/portmap restart 
$sudo /etc/init.d/nfs-kernel-server restart

4、測試nfs 
此時可以運行以下命令來顯示一下共享出來的目錄: 
$showmount -e 
或者可以使用以下命令把它掛載在本地磁盤上,例如將/rootfs掛載到/mnt下: 
$sudo mount -t nfs localhost:/rootfs /mnt

可以運行df命令查看是否掛載成功。查看后可以使用以下命令卸載: 
$ sudo umount /mnt

------------------------------------------------

關於NFS配置錯誤

 

ubuntu測試本機nfs出錯:mount.nfs:access denied by server while mounting...

相信出現這種錯誤的應該有一些人吧,沒關系,一會就幫你搞定。 
首先運行:sudo vim /etc/exports 
在其文本后添加 
/home/work 192.168.1.*(rw,sync,no_root_squash) 
然后保存退出。

注意,上面的主機IP可能不能使用*來通配,否則在客戶機上會出現訪問拒絕,但是如果我們要設置局域網訪問呢?怎么辦,使用子網掩碼例如:10.1.60.0/255.255.254.0即可讓10.1.60.*和10.1.61.*都可以訪問,還可以使用10.1.60/23這種方式類確定子網。

/home/work就表示共享目錄,當然,你可以隨便換成自己喜歡的目錄,192.168.1.*,前面三位是你主機的ip地址(怎么獲得本機的ip地址?ifconfig命令就可以了) 
rw:讀/寫權限,只讀權限的參數為ro; 
sync:數據同步寫入內存和硬盤,也可以使用async,此時數據會先暫存於內存中,而不立即寫入硬盤。 
no_root_squash:NFS 服務器共享目錄用戶的屬性,如果用戶是 root,那么對於這個共享目錄來說就具有 root 的權限。

下面淺藍色的文字,可略過去! 
起用保護機制 
上面設置了只要在192.168.1.*這個網段的所有IP地址用戶都可以訪問共享目錄,但我只想讓一個IP地址訪問,比如192.168.1.101(把剛才192.168.1.*直接換成192.168.1.101不行么?應該可以吧,沒試過),那么就可以這樣設置了。 
可以通過設定/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.101 
lockd:192.168.1.101 
mountd:192.168.1.101 
rquotad:192.168.1.101 
statd:192.168.1.101 
同時使用這兩個文件就會使得只有ip為192.168.1.101的機器使用NFS服務。你的target 
board的ip地址設定為192.168.1.101,這樣就可以了。 
淺藍色文字可略過。

接着執行如下命令: 
啟動端口映射: #sudo 
/etc/rc.d/init.d/portmap start(如果說找不到,就執行 #sudo /etc/init.d/portmap start) 
如果這一步不成功,最后也連接不上了。 
啟動NFS 服務: #sudo /etc/rc.d/init.d/nfs start(又找不到,執行 #sudo 
/etc/init.d/nfs start或#sudo /etc/init.d/nfs-kernel-server start) 
這兩項執行成功 
的話,就會顯示[ok] 
最后執行:#sudo mount –t nfs 192.168.1.101:/home/work /mnt 
這里面的192.168.1.101是你自己主機的ip地址,也可以用127.0.0.1來代替自己的主機ip地址,同樣可以連接上。/home/work就是剛才在etc/exports里添加的路徑。 
如果在這一步又出錯了,呵呵,重新#sudo vim /etc/exports,將“ 192.168.1.*”換成“*”,就這一個星星哦! 
執行:# ls /mnt

恭喜你,mnt下是不是有了/home/work里的內容了。

卸載:#sudo umount /mnt/

如果上面操作做好了,還是不行,我覺得你應該重啟一下機子試一下了! 
更詳細請點擊:linux.chinaunix.net/bbs/thread-985579-1-1.html

提示:掛載根文件時,提示“Warning: unable to open an initial console. ”啟動信息問題的解決,以NFS為例。

清單51 問題現象


VFS: Mounted root (nfs filesystem).

Freeing init memory: 144K

Warning: unable to open an initial console.<啟動停到此處>


根據提示信息定位錯誤

查找錯誤原因: 根據錯誤提示信息:”Warning: unable to open an initial 
console.”查看內核源代碼。可定位錯誤提示在內核文件linux-2.6.26.2/init/main.c文件中。

清單52 分析main.c的調用關系


asmlinkage void __init start_kernel(void)

{

rest_init();

}

static void noinline __init_refok rest_init(void)

__releases(kernel_lock)

{

kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);

}

static int __init kernel_init(void * unused)

{

init_post();

return 0;

}

static int noinline init_post(void)

{

if (sys_open((const char __user *) "/dev/console", O_RDWR, 
0) < 0)

printk(KERN_WARNING "Warning: unable to open an initial 
console.
\n");

run_init_process("/sbin/init");

}通過分析知道內核啟動時需要成功打開/dev/console設備,否則給出"Warning: unable to open an 
initial console.
"的錯誤提示。

//為目標機配置console設備文件節點

進入你的nfs文件系統的/dev/目錄

sudo mknod console c 5 1

創建console文件,再重啟即可。

如果還不可以可以試下以下操作:

內核啟動顯示:

Warning: unable to open an initial console. 
Failed to execute /linuxrc.  Attempting defaults... 
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.

解決:

創建rootfs過程中,在/dev目錄下手動創建如下節點:

sudo mknod -m 660 null c 1 3

sudo mknod -m 660 console c 5 1

  

 

以下內容轉載自:http://hi.baidu.com/linuxcfan/blog/item/2c4c7e39723194c8d56225b4.html

網絡文件系統(NFS)

一、NFS簡介

1、NFS就是Network File System的縮寫,它的最大功能就是可以通過網絡讓不同的機器,不同的操作系統彼此共享文件(share files)——可以通過NFS掛載遠程主機的目錄,訪問該目錄就像訪問本地目錄一樣,所以也可以簡單的將它看作一個文件服務器(File Server)。

注意:一般而言,使用NFS服務能夠方便地使各unix-like系統之間實現共享,但如果需要在unix-like和windows系統之間共享,那就得使用samba了。

2、NFS是通過網絡進行數據傳輸,那么NFS使用哪些端口呢,答案是……不知道,因為NFS傳輸數據時使用的端口是隨機的,唯一的限制就是小於1024,客戶端怎么知道服務器使用的是哪個端口,此時就要用到遠程過程調用RPC。

其實,NFS運行在SUN的RPC(Remote Procedure Call,遠程過程調用)基礎上,RPC定義了一種與系統無關的方法來實現進程間通信,由此,NFS Server也可以看作是RPC Server。正因為NFS是一個RPC服務程序,所以在使用它之前,先要映射好端口——通過portmap設定。比如:某個NFS Client發起NFS服務請求時,它需要先得到一個端口(port),所以它先通過portmap得到port number(不僅是NFS,所有的RPC服務程序啟動之前,都需要先設定好portmap)。

注意:在啟動RPC服務(比如NFS)之前,需要先啟動portmap服務。

3、NFS允許系統將其目錄和文件共享給網絡上的其他系統。通過NFS,用戶和應用程序可以訪問遠程系統上的文件,就像它們是本地文件一樣。那么NFS最值得注意的優點有:
(1)本地工作站可以使用更少的磁盤空間,因為常用數據可以被保存在一台機器上,並讓網絡上的其他機器可以訪問它。
(2)不需要為用戶在每台網絡機器上放一個用戶目錄,因為用戶目錄可以在NFS服務器上設置並使其在整個網絡上可用。
(3)存儲設備如軟盤、光驅及USB設備可以被網絡上其它機器使用,這可能可以減少網絡上移動設備的數量。

二、與NFS相關的幾個文件和命令

1、/etc/exports
對NFS服務的訪問是由exports來批准,它枚舉了若干有權訪問NFS服務器上文件系統的主機名。

2、/sbin/exportfs
維護NFS的資源共享,可以通過它重新設定/etc/exports的共享目錄,卸載NFS Server共享的目錄或者重新共享等。

3、/usr/sbin/showmount 
上面的文件主要用在NFS Server端,而showmount則主要用在Client端,showmount可以用來查看NFS共享的目錄資源。

4、/var/lib/nfs/xtab
NFS的記錄文檔:通過它可以查看有哪些Client連接到NFS主機的記錄。

下面這幾個並不直接負責NFS,實際上它們是負責所有的RPC。

5、/etc/default/portmap
實際上,portmap負責映射所有的RPC服務端口,它的內容非常非常之簡單。

6、/etc/hosts.deny
設定拒絕portmap服務的主機,即禁止訪問的客戶端IP列表。

7、/etc/hosts.allow
設定允許portmap服務的主機,即允許訪問的客戶端IP列表。

三、NFS安裝

在主機上安裝NFS服務軟件,因為Debian/Ubuntu上默認是沒有安裝的。

1、安裝端口映射器portmap(可選)
$ sudo apt-get install portmap

2、在終端提示符后鍵入以下命令安裝NFS服務器
$ sudo apt-get install nfs-kernel-server

3、安裝NFS客戶端(可選)
$ sudo apt-get install nfs-common

注意:nfs- kernel-server和nfs-common都依賴於portmap。另外,在一些文檔中提出還需要使用apt-get來手動安裝NFS的客戶端 nfs-common,以及端口映射器portmap,但其實這是沒有必要的,因為在安裝nfs-kernel-server時,apt會自動把它們安裝好。

這樣,宿主機就相當於NFS Server。同樣地,目標系統作為NFS的客戶端,需要安裝NFS客戶端程序。如果是Debian/Ubuntu系統,則需要安裝nfs-common(第3步)。

四、NFS配置

1、配置portmap
方法1:編輯/etc/default/portmap,將"-i 127.0.0.1"去掉;
方法2:$ sudo dpkg-reconfigure portmap,出現“正在設定portmap”軟件包設置界面,對Should portmap be bound to the loopback address?選擇“否(No)”。

2、配置/etc/hosts.deny
禁止任何host(主機)能和你的NFS服務器進行NFS連接。在該文件中加入:

### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

3、配置/etc/hosts.allow
允許那些你想要的主機和你的NFS服務器建立連接。

下列步驟將允許任何IP地址以192.168.1開頭的主機連接到NFS服務器上,具體要看你目標板的端口地址,也可以指定特定的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設置對portmap的訪問,采用這兩個配置文件有點類似"mask"的意思。先在/etc/hosts.deny中禁止所有用戶對portmap的訪問,再在/etc/hosts.allow中允許某些用戶對portmap的訪問。

然后重啟portmap daemon:
$ sudo /etc/init.d/portmap restart

4、配置/etc/exports

(1)共享的NFS目錄在/etc/exports中列出,這個文件控制對目錄的共享(NFS掛載目錄及權限由該文件定義),書寫規則是每個共享為一行)。

格式:[共享目錄] [主機名或IP](參數,參數...)
第一個參數是要讓客戶機訪問的目錄,第二個是你允許的主機IP,最后的()內是訪問控制方式。

注意:客戶端可以使用主機名或者IP地址指定,在主機名中可以使用通配符(*),IP地址后也可以跟掩碼段(/24),但出於安全原因這種情況應該盡量避免。客戶端的說明后可在圓括號中加入一系列參數。很重要的一點,不要在最后一個客戶端聲明的后面留下任何空白或者沒關閉括號,因為空白都被解釋成客戶端的分隔符。

例如我要將/opt/FriendlyARM/mini2440/root_nfs目錄讓用戶的IP共享,則在該文件末尾添加下列語句:
/opt/FriendlyARM/mini2440/root_nfs *(rw,sync,no_root_squash)

其中:
/opt/FriendlyARM/mini2440/root_nfs 表示NFS共享目錄,它可以作為開發板的根文件系統通過NFS掛接;
* 表示所有的客戶機都可以掛接此目錄;
rw 表示掛接此目錄的客戶機對該目錄有讀寫的權力;
sync 表示所有數據在請求時寫入共享,即數據同步寫入內存和硬盤;
no_root_squash 表示允許掛接此目錄的客戶機享有該主機的root身份。

注意:可以用主機名來代替*,盡量指定主機名以便使那些不想其訪問的系統不能訪問NFS掛載的資源。另外,最好加上sync, 否則$ sudo exportfs -r時會給出警告,sync是NFS的默認選項。

(2)下面是一些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_squash root用戶具有根目錄的完全管理訪問權限
anonuid=xxx 指定NFS服務器/etc/passwd文件中匿名用戶的UID
anongid=xxx 指定NFS服務器/etc/passwd文件中匿名用戶的GID

(3)查看NFS Server的export list:
$ sudo showmount -e

若更改了/etc/exports,運行以下命令進行更新:
$ sudo exportfs -r

然后重啟NFS服務:
$ sudo /etc/init.d/nfs-kernel-server restart

五、啟動和停止NFS服務

1、啟動NFS的方法和啟動其他服務器的方法類似,首先需要啟動portmap和NFS這兩個服務,並且portmap服務一定要先於NFS服務啟動。
$ sudo /etc/init.d/portmap start
$ sudo /etc/init.d/nfs-kernel-server start

2、停止NFS服務
在停止NFS服務的時候,需要先停止NFS服務再停止portmap服務,如果系統中還有其他服務需要使用portmap服務,則可以不停止portmap服務。
$ sudo /etc/init.d/nfs-kernel-server stop
$ sudo /etc/init.d/portmap stop

3、重新啟動portmap和NFS服務
$ sudo /etc/init.d/portmap restart
$ sudo /etc/init.d/nfs-kernel-server restart

4、檢查portmap和NFS服務狀態
$ sudo /etc/init.d/portmap status(不知原文是否有誤,我的ubuntu上portmap貌似沒status這個命令參數)
$ sudo /etc/init.d/nfs-kernel-server status

5、設置自動啟動NFS服務

(1)檢查NFS的運行級別:
$ sudo chkconfig --list portmap      (我的電腦也沒chconfig這個工具,不過沒多大關系,如果有問題再回頭)
$ sudo chkconfig --list nfs-kernel-server

(2)在實際使用中,如果每次開啟計算機之后都手工啟動NFS服務是非常麻煩的,此時可以設置系統在指定的運行級別自動啟動portmap和NFS服務。
$ sudo chkconfig --level 235 portmap on  (由於沒有chkconfig工具,所以我就用services-admin(也就是圖形界面的“系統─>“服務”)來代替,至於level就不管了,用默認設置)
$ sudo chkconfig --level 235 nfs-kernel-server on

六、NFS客戶端配置(NFS測試)

1、在NFS服務器啟動后,還需要檢查Linux服務器的防火牆設置(一般需要關閉防火牆服務),確保沒有屏蔽 NFS使用的端口和允許通信的主機,主要是檢查Linux服務器iptables、ipchains等選項的設置,以及/etc/hosts.deny, /etc/hosts.allow文件。通常都是在內部局域網中進行開發,再安裝系統時最好不要安裝防火牆等網絡安全軟件,以方便使用時的配置。

如果你有防火牆,請確保32771、111和2049端口保持開放。

2、手動掛載
使用mount命令來掛載其他機器共享的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地址,同時掛載點/mnt/root_nfs目錄必須已經存在,而且在/mnt/root_nfs目錄中沒有文件或子目錄。

3、自動掛載

(1)另一個掛載其他機器的NFS共享的方式就是在/etc/fstab文件中添加一行,該行必須指明NFS服務器的主機名、服務器輸出的目錄名以及掛載NFS共享的本機目錄,同時必須是根用戶才能修改/etc/fstab文件(目標板上可能沒有fstab,需要自己創建一個)。

格式(參考PC上的fstab):host_ip:/nfs_path /target_path nfsrsize=8192,wsize=8192,timeo=14,intr,nolock  0   0

注意:可以根據實際情況修改NFS服務器共享文件夾"servername.mydomain.com:/usr/local/pub"和在本機的掛載點"/pub",同時掛載點/pub在客戶端機器上必須存在。

(2)NFS常見掛載參數:

intr 允許通知中斷一個NFS調用。當服務器沒有應答需要放棄的時候有用處。

timeo 如果超時,客戶端等待的時間,以十分之一秒計算
retrans 超時嘗試的次數
bg 后台掛載(很有用)
hard 如果server端沒有響應,那么客戶端一直嘗試掛載
rsize 讀塊大小
wsize 寫塊大小

4、使用autofs來掛載NFS

(1)掛載NFS共享的第三種方法是使用autofs,它使用automount守護進程來管理掛載點,只在文件系統被訪問時才動態地掛載。

autofs訪問主映射配置文件/etc/auto.master來決定要定義哪些掛載點,然后使用適用於各個掛載點的參數來啟動automount守護進程。主映射配置中的每一行都定義一個掛載點,一個分開的映射文件定義在該掛載點下要掛載的文件系統。如/etc /auto.misc文件可能會定義/misc目錄中的掛載點,這種關系在/etc/auto.master文件中會被定義。

(2)/etc/auto.master文件中的每個項目都有3個字段,第1個字段是掛載點;第2個字段是映射文件的位置;第3個字段可選,可以包括超時數值之類的信息。

例如:要在機器上的/misc/myproject掛載點上掛載遠程機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個字段是/misc子目錄的名稱,該目錄被automount動態地創建,它不應該在客戶端機器上實際存在;第2個字段包括掛載選項,如rw代表讀寫訪問權,第3個字段是要導出的NFS的位置,包括主機名和目錄。

(3)autofs是一種服務,要啟動這項服務,在shell提示下鍵入以下命令:
$ sudo /sbin/service autofs restart
要查看活躍的掛載點,在shell提示下鍵入以下命令:
$ sudo /sbin/service autofs status
如果在autofs運行時修改了/etc/auto.master配置文件,則必須在shell提示下鍵入以下命令來通知automount守護進程重新載入配置文件:
$ sudo /sbin/service autofs reload

5、可以運行df命令查看是否掛載成功:
$ sudo df

取消掛載的命令如下:
$ sudo umount /mnt/root_nfs

七、目標板NFS配置操作

主機IP:192.168.1.101
目標板IP:192.168.1.230

將USB轉串口連接上,在終端輸入minicom與板子連起,作為“超級終端”使用。

啟動目標板並連通網絡后,首先查看目標板kernel自身是否支持NFS,在minicom中輸入cat /proc/filesystems命令查看其中是否有NFS一行,若沒有則表示內核不支持NFS,就需要重新編譯和燒寫內核;有則OK,接下來就可以直接進行mount操作了。

具體命令是:
# mount -t nfs -o nolock 192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs /mnt/root_nfs

無任何提示表示成功,這時可以進入/mnt/root_nfs目錄,對文件進行cp、mv等操作。

但是如果使用命令mount -t nfs 192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs /mnt/root_nfs,則會有如下的錯誤提示(也就是省去了"-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).

這時如果使用ls /mnt/root_nfs命令查看該目錄內容時,你會發現此時NFS確確實實已經掛載成功了。

然后取消掛載的時候會出現如下的錯誤提示:
# umount /mnt/root_nfs/
lockd_down: no lockd running.

而成功取消掛載時沒有任何提示,同樣此時NFS也確實已經取消掛載了。

那么出現上面錯誤提示的可能原因是:
nfs mount默認選項包括文件鎖,依賴於portmap提供的動態端口分配功能。

簡單的解決方法:kill文件鎖(lockd)或者使用mount -o nolock命令。

上面說的文件鎖具體是什么原因,目前還沒有找到更好的解決辦法。不過,如果主機防火牆有設置時,也可能導致目標板無法正常訪問。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM