一、開篇
在嵌入式linux開發過程中,由于目标平台的資源限制,開發環境一般都不會放到目标闆卡上(需要放在開發主控端上),如果需要主控端與目标闆卡之間進行檔案傳輸,該怎麼辦來了。這時候nfs就派上用場啦。nfs(Network File System)是一個網絡檔案系統。使用該檔案系統,便能在目标闆卡上通路開發主控端上的檔案,還能進行互相拷貝和移動,非常友善。不用使用U盤拷貝等低效率的開發方式了。
本文主要描述nfs的搭建方式,由于不同環境和系統下,nfs服務搭建方式可能不同,故将環境描述如下:
【環境描述】
選擇虛拟機ubuntu 18.04作為主機。
硬體平台為一塊搭載瑞芯微rk3568處理器的闆卡。軟體方案:linux平台
通信方式:路由器(開啟了DHCP) + 網線
二、搭建nfs服務
(2-1)下載下傳nfs服務軟體包
首先,在終端使用下列指令安裝nfs:
sudo apt-get install nfs-kernel-server
(注:由于小生已經安裝過了,故沒有新安裝軟體包)
(2-2)配置nfs
使用以下指令:
gedit /etc/exports
在檔案最後一行添加如下内容:/home/nfs/ *(rw,sync,no_root_squash)
完成後如下圖所示:
- /home/nfs/:訓示要共享的目錄;“/home/nfs/ ”目錄需要自己建立。
- *:代表允許所有的網絡段通路。
- rw:訓示具有可讀寫的權限。
- sync:訓示資料同步寫入記憶體和硬碟
- no_root_squash:是 Ubuntu nfs 用戶端分享目錄使用者的權限。例如:如果用戶端使用的是 root 使用者,那麼對于該共享目錄而言,該用戶端就具有 root 權限。
(2-3)啟動rpcbind服務
使用以下指令重新啟動rpcbind服務:
/etc/init.d/rpcbind restart
(2-4)啟動nfs服務
使用以下指令重新啟動nfs服務:
/etc/init.d/nfs-kernel-server restart
(2-5)驗證nfs
使用以下指令:
showmount -e
可以檢視系統是否成功挂載nfs目錄。
(注:如果沒有輸出,可能需要重新啟動ubuntu後,再使用該條指令檢視!!!)
在上圖中,看到了輸入資訊為:/home/nfs *,則證明nfs已經啟動成功。
至此,虛拟機ubuntu上的nfs服務就搭建好了。接下來,就需要在硬體闆卡上挂載nfs檔案系統了。
三、硬體闆卡端接入nfs服務
在接入之前,需要擷取ubuntu和硬體闆卡的ip位址:
回到硬體闆卡的終端中:
- 檢視硬體闆卡的ip位址:
(注:硬體闆卡有兩個網口且網線連接配接的是eth1)
回到虛拟機ubuntu中:
- 檢視虛拟機ubuntu的ip位址:
在硬體闆卡linux指令行終端下使用以下指令:
mount -t nfs -o nfsvers=3,nolock 192.168.155.44:/home/nfs /mnt/
挂載nfs檔案系統。上面這條指令的意思是:以nfs方式将指定ip位址(文本是192.168.155.44)上的(/home/nfs) 目錄挂載到/mnt/路徑上。
随後,我們便可以使用:
cd /mnt/
切換到nfs伺服器對應的目錄路徑下,該目錄就是虛拟機ubuntu與硬體闆卡之間的通信橋梁了(共享目錄)。快到七夕了,把它想象成鵲橋吧(0.0)
在硬體闆卡上,路徑/mnt/則是共享目錄,在該目錄下的檔案則是虛拟機ubuntu路徑/home/nfs目錄下的檔案,我們就通過這兩個目錄互傳檔案啦。
【備注】
(1)如果不使用nfs了,我們可以使用:
umount /mnt/
解除安裝nfs挂載服務。
(2)在擷取到虛拟機ubuntu系統和硬體闆卡的IP位址後,需要互ping一下,確定二者之間能夠互相ping通。
(3)硬體闆卡上的linux核心需要支援nfs特性。