nfs在嵌入式開發中的使用場景:
1、使用nfs掛載ubuntu服務端目錄方便檔案傳輸和程式除錯
2、uboot啟動後,使用nfs讀取kernel和掛載rootfs,方便kernel和rootfs除錯
3、提取eMMC映象時儲存到nfs目錄中,供產線離線燒錄eMMC
ubuntu安裝nfs服務端安裝方法:
sudo apt-get install nfs-kernel-server nfs-common
修改檔案/etc/exports,在最後新增一行:
/home/tangyc *(rw,sync,no_root_squash,no_subtree_check)
注意:上面/home/tangyc是我的$HOME目錄,換成你自己的目錄
重啟服務:
sudo /etc/init。d/nfs-kernel-server restart
本地測試,執行:
showmount -e
Export list for tangyc-VirtualBox:
/home/tangyc *
上面已經可以看出nfs共享資料夾/home/tangyc生效
開發板端nfs
編譯nfs工具
yocto下編譯nfs-utils使用:
bitbake nfs-utils
編譯目錄在
tmp/work/aarch64-poky-linux/nfs-utils/2。1。1-r0/image
板子下要用到如下的檔案:
/sbin/mount。nfs、/sbin/mount。nfs4、/usr/lib/libtirpc。so。*
檔案系統要有以上檔案
否則出現錯誤:
mount: /mnt: bad option; for several filesystems (e。g。 nfs, cifs) you might need a /sbin/mount。
也可以使用buildroot編譯nfs-utils:
Target packages ——->
Filesystem and flash utilities ——->
[*] nfs-utils
將上面移植好的工具放到對應的目錄下就可以掛載server端nfs目錄了
開發板掛載NFS測試
開發板網線連線到主機ubuntu。ubuntu設定固定的IP地址192。168。2。2。開發板IP地址192。168。2。6,設定成同一網段並且可以相互ping通。
注意:開發板和pc機能相互ping通,說明物理連線沒問題;如果ping不通虛擬機器說明虛擬機器有問題
在開發板端輸入:
# mount -t nfs -o nolock 192。168。2。2:/home/tangyc/nfs /mnt
將主機端(192。168。2。2)共享目錄/home/tangyc/nfs掛載到開發板的/mnt目錄下,可以看到/mnt下已經能看到服務端檔案了
解除安裝命令:
umount /mnt
如果mount出錯:
mount。nfs: an incorrect mount option was specified
mount。nfs: Protocol not supported
說明協議不支援,檢視下板子端nfs協議,如果是v4的
應該用(這裡我們板子是v4的,所以有這個也能掛載上):
mount -t nfs -o nolock,nfsvers=4,vers=4 192。168。2。2:/home/tangyc/nfs /mnt
如果是v3要用:
mount -t nfs -o nolock,nfsvers=3,vers=3 192。168。2。2:/home/tangyc/nfs /mnt