爲何要搭建NFS?
在嵌入式 linux 開發的時候,常常需要使用 nfs 以方便程序的調試。使用 nfs,用戶可以將板子要用到的
根文件系統放在主機目錄下,開發板則通過以太網掛載到這個目錄並將這個目錄下的文件作爲根文件系統的內容,這
樣用戶的程序更新後不必重新燒寫板子的根文件系統便能被重新使用,這點能夠大大加快程序的調試。
ubuntu 下安裝 nfs 服務器的步驟如下:
1、進行 NFS 服務器端與客戶端的安裝(在PC安裝客戶端的作用是可以在PC本機進行 NFS 服務的測試):
sudo apt-get install nfs-kernel-server nfs-common portmap
2、NFS的配置:
配置/etc/exports文件
sudo vim /etc/exports
在exports的最後加入如下的內容並保存
/home/rootnfs *(rw,sync)
解釋一下:
/home/rootfs 是 NFS 的共享目錄,*表示任何 IP 都可以共享這個目錄,你可以改爲受限的 IP,rw表示的是權限,sync 是默認的。
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、重啓 NFS 服務
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-kernel-server restart
4、本機進行測試
4.1 顯示出共享出來的目錄
$ showmount -e
4.2 將nfs的/home/rootnfs目錄掛載到本地磁盤上。
$ sudo mount -t nfs localhost:/home/rootnfs /mnt
4.3 查看掛載情況
$ df
4.4 卸載
$ sudo umount /mnt
5、 在開發板上測試(將主機的/home/rootnfs掛載到開發板的/mnt目錄,PC中的ubuntu虛擬機的IP爲192.168.0.20)
mount -t nfs -o nolock
192.168.0.20:/home/rootnfs /mnt