如下:
ifconfig eth0 hw ether 00:10:85:18:01:84 /*配置MAC地址*/
ifconfig eth0 10.85.180.184 netmask 255.255.254.0 /*配置IP地址和子網掩碼*/
route add default gw 10.85.180.1 /*配置默認網關*/
mount -t nfs -o nolock 10.85.180.133:/home/c54122/glibc-nfs /mnt /*掛
載NFS目錄至JFFS2文件系統的mnt目錄下*/
(安裝nfs-kernel-server時,apt會自動安裝nfs-common和portmap) 這樣,宿主機就相當於NFS Server。
2 宿主機NFS的配置
2.1 修改配置文件/etc/exports
在終端下用 # vi /etc/exports打開exports文件。
如果你沒有配置過這個文件的話此文件應該是空的。
* -- 表示允許任意用戶使用,也可以使用具體IP;
(rw,sync,no_root_squash) -- rw,掛載此目錄的客戶機對此目錄有讀寫權利;
sync,……;
no_root_squash,掛載此目錄的客戶機享有主機root的權利;
我是將主機的根目錄設置為共享目錄 / *(rw,sync,no_root_squash)
修改完成之后輸入:# exportfs –rv來使配置文件生效
安裝完NFS服務后就可以通過 # /etc/init.d/nfs-kernel-server restart(/etc/init.d/nfs-kernel-server start)來重新開啟網絡文件系統服務,以便后面的開發板掛載。也可以通過# /etc/init.d/nfs-kernel-server stop來停止。
3 目標板的掛載操作
目標機上電,目標板上的Linux操作系統起來以后,在PC機上Ubuntu操作系統上打開minicom,通過串口向目 標板發送shell命令。
像主機操作一樣,首先檢查目標板(宿主機)的IP是否與宿主機的IP再同一個地址段上,否則用上面用過的命令 進行檢查和設置本地IP。
既在minicom中輸入# ping 192.168.1.101 (宿主機IP地址)連接成功會不斷的打印信息。
接下來就是在開發板上進行掛載mount
# mount -onolock 192.168.1.101:/opt/nfsroot /mnt
其中:/opt/nfsroot 是 宿主機的共享目錄; /mnt是開發板的掛載目錄
如果你想取消掛在可以使用命令# umount /mnt就可以了
其它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
此時可以運行以下命令來顯示一下共享出來的目錄:
$showmount -e
關於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這種方式類確定子網。
可以通過設定/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,這樣就可以了。
exportfs 指令主要的三個作用:
1. exportfs -rv 重新讀取共享配置文件,馬上生效
2. exportfs -auv 馬上停止所有本機上的NFS共享,並不改變 /etc/exports 文件的內容,只是當前停止共享
3. exportfs -av 顯示所有當前機器上的NFS共享目錄信息
我的/etc/exports 文件:
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#/home/yingc/work *(rw,async,no_root_squash)
/home/yingc/work/durian/solution/output *(rw,async,no_root_squash)
/home/yingc/work/durian1/solution/output *(rw,async,no_root_squash)
/home/yingc/work/durian/buildroot/package/netscript/sbin1 *(rw,async,no_root_squash)
#
# mount host dir
############################################################
mount -t nfs -o rw,nolock,udp 192.168.110.10:/home/yingc/work/durian/solution/ob
mount -t nfs -o rw,nolock,udp 192.168.110.10:/home/yingc/work/durian/buildroot/t
yingc@yingc:~$ sudo apt-get install portmap 正在讀取軟件包列表... 完成 正在分析軟件包的依賴關系樹 正在讀取狀態信息... 完成 注意,選取 rpcbind 而非 portmap
sudo apt-get install nfs-kernel-server sudo vim /etc/exports 添加: /opt/nfs *(rw,sync,all_squash,no_subtree_check) 注意:使用上面這個,碰到了權限問題,開發板上不能創建文件等, 但是在pc的對應目錄上可以直接創建(不需要sudo權限) 此時可以使用: /opt/nfs *(rw,async,no_root_squash) 再restart即可: sudo /etc/init.d/nfs-kernel-server restart