在UBUNTU下進行NFS伺服器配置,雖說有實驗指導書,但由於使用的LINUX版本不一樣,一個簡單的NFS伺服器配置都花了一天半的時間,網上很多方法都嘗試了,沒有效果。終於找到了一個可以解決的辦法,特意記錄下來,或許能協助遇到這個問題的朋友。
首先,要把主機的防火牆關掉。並把主機當作伺服器,讓開發板作為用戶端。
NFS伺服器配置NFS用於Linux主機訪問網路中其他Linux主機上的共用資源。NFS的原理是在用戶端上通過網路將遠程主機共用檔案系統以掛載(Mount)的方式加入原生檔案系統,之後的操作就如同在本機上一樣。NFS伺服器(宿主機) 1.安裝NFS Ubuntu上預設是沒有安裝NFS伺服器的,首先要安裝NFS服務程式:$ sudo apt-get install nfs-kernel-server (安裝nfs-kernel-server時,apt會自動安裝nfs-common和portmap)這樣,宿主機就相當於NFS Server。 2. 配置NFS 1)配置portmap 方法1: 編輯/etc/default/portmap, 將 -i 127.0.0.1 去掉.方法2: $ sudo dpkg-reconfigure portmap 對Should portmap be bound to the loopback address? 選N.2)配置/etc/hosts.deny $ sudo gedit /etc/hosts.deny(禁止任何host(主機)能和你的NFS伺服器進行NFS串連),加入:### NFS DAEMONSportmap:ALLlockd:ALLmountd:ALLrquotad:ALLstatd:ALL3)配 置/etc/hosts.allow $ sudo gedit /etc/hosts.allow允許那些你想要的主機和你的NFS伺服器建立串連。下列步驟將允許任何IP地址以192.168.1開頭的主機(串連到NFS伺服器上),也可以指定特定的IP地址。### NFS DAEMONSportmap: 192.168.1.lockd: 192.168.1.rquotad: 192.168.1.mountd: 192.168.1.statd: 192.168.1.起用保護機制 上面設定了只要在192.168.1.*這個網段的所有IP地址使用者都可以訪問共用目錄,但我只想讓一個IP地址訪問,比如 192.168.1.101那麼就可以這樣設定了。可以通過設定/etc/hosts.deny和/etc/hosts.allow檔案來限制網路服務的存取許可權。***/etc/hosts.deny***portmap:ALLlockd:ALLmountd:ALLrquotad:ALLstatd:ALL***/etc/hosts.allow***portmap:192.168.1.101lockd:192.168.1.101mountd:192.168.1.101rquotad:192.168.1.101statd:192.168.1.101 同時使用這兩個檔案就會使得只有ip為192.168.1.101的機器使用NFS服務。你的target board的ip地址設定為192.168.1.101,這樣就可以了。 /etc/hosts.deny 和 /etc/hosts.allow 設定對portmap的訪問. 採用這兩個設定檔有點類似"mask"的意思. 現在/etc/hosts.deny中禁止所有使用者對portmap的訪問. 再在/etc/hosts.allow 中允許某些使用者對portmap的訪問。 4)重啟portmap daemon 每次對/etc/hosts.deny 和 /etc/hosts.allow兩檔案的修改後都要重啟portmap daemon。不然修改無效。 $ sudo /etc/init.d/portmap restart5)配置/etc/exports NFS掛載目錄及許可權由/etc/exports檔案定義。 $sudo gedit /etc/exports 比如我要將我的home目錄中的/home/lin/NFSshare目錄讓192.168.1.*的IP共用, 則在該檔案末尾添加下列語句: /home/lin/NFSshare 192.168.1.*(rw,sync,no_root_squash) 然後儲存退出。 /home/lin/NFSshare就表示共用目錄,當然,你可以隨便換成自己喜歡的目錄。 192.168.1.*:前面三位是你主機(NFS用戶端)的ip地址(本機終端ifconfig命令就可以獲得原生ip地址)。 rw:讀/寫入權限,唯讀許可權的參數為ro; sync:資料同步寫入記憶體和硬碟,也可以使用async,此時資料會先暫存於記憶體中,而不立即寫入硬碟。 no_root_squash:NFS 伺服器共用目錄使用者的屬性,如果使用者是 root,那麼對於這個共用目錄來說就具有 root 的許可權。 6)重啟nfs服務 $ sudo /etc/init.d/nfs-kernel-server restart 執行這個命令的時候可能會提示一些錯誤,如下: * Stopping NFS kernel daemon [ OK ] * Unexporting directories for NFS kernel daemon... [ OK ] * Exporting directories for NFS kernel daemon... exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.1.*:/home/lin/NFSshare". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x [ OK ] * Starting NFS kernel daemon [ OK ] 我不知道具體原因,不用管,不影響後面的使用。 注意:每次對/etc/exports檔案的修改,都要重啟一下nfs服務。 7)nfs伺服器端測試 由於nfs伺服器端預設是安裝了nfs用戶端(nfs-common)的,所以可以在伺服器端掛載共用資料夾作測試。$sudo mount 192.168.1.100:/home/liu /mnt 192.168.1.100是nfs伺服器端IP地址,可以在伺服器端終端通過命令ifconfig獲得。 可能出現錯誤,解決辦法 重新$sudo gedit /etc/exports,將“ 192.168.1.* ”換成“*”,要注意就這一個星星哦!修改完之後不要忘了重啟一下nfs服務 $ sudo /etc/init.d/nfs-kernel-server restart 這樣修改之後,就可以看到/mnt檔案下共用了/home/lin/NFSshare檔案夾裡的內容。測試完畢,要卸載nfs的掛載 $sudo umount /umt