nfs在嵌入式開發(fā)中的使用場景:
1、使用nfs掛載ubuntu服務(wù)端目錄方便文件傳輸和程序調(diào)試
2、uboot啟動后,使用nfs讀取kernel和掛載rootfs,方便kernel和rootfs調(diào)試
3、提取eMMC鏡像時保存到nfs目錄中,供產(chǎn)線離線燒錄eMMC
ubuntu安裝nfs服務(wù)端安裝方法:
sudo apt-get install nfs-kernel-server nfs-common
修改文件/etc/exports,在最后添加一行:
/home/tangyc *(rw,sync,no_root_squash,no_subtree_check)
注意:上面/home/tangyc是我的$HOME目錄,換成你自己的目錄
重啟服務(wù):
sudo /etc/init.d/nfs-kernel-server restart
本地測試,運行:
showmount -e
Export list for tangyc-VirtualBox:
/home/tangyc *
上面已經(jīng)可以看出nfs共享文件夾/home/tangyc生效
開發(fā)板端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.*
文件系統(tǒng)要有以上文件
否則出現(xiàn)錯誤:
mount: /mnt: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.
也可以使用buildroot編譯nfs-utils:
Target packages --->
Filesystem and flash utilities --->
[*] nfs-utils
將上面移植好的工具放到對應(yīng)的目錄下就可以掛載server端nfs目錄了
開發(fā)板掛載NFS測試
開發(fā)板網(wǎng)線連接到主機ubuntu。ubuntu設(shè)置固定的IP地址192.168.2.2。開發(fā)板IP地址192.168.2.6,設(shè)置成同一網(wǎng)段并且可以相互ping通.
注意:開發(fā)板和pc機能相互ping通,說明物理連接沒問題;如果ping不通虛擬機說明虛擬機有問題
在開發(fā)板端輸入:
# mount -t nfs -o nolock 192.168.2.2:/home/tangyc/nfs /mnt
將主機端(192.168.2.2)共享目錄/home/tangyc/nfs掛載到開發(fā)板的/mnt目錄下,可以看到/mnt下已經(jīng)能看到服務(wù)端文件了
卸載命令:
umount /mnt
如果mount出錯:
mount.nfs: an incorrect mount option was specified
mount.nfs: Protocol not supported
說明協(xié)議不支持,查看下板子端nfs協(xié)議,如果是v4的
應(yīng)該用(這里我們板子是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