背景
在嵌入式開發(fā)中撩匕,通常需要在宿主機中進行交叉編譯腰奋,得到可以在目標設(shè)備中運行的執(zhí)行文件院领,最終將運行文件放置進目標設(shè)備中,完成部署跺嗽。
一般的拓撲關(guān)系如上圖,三者都連接在一個網(wǎng)絡(luò)中:
- Server页藻,用于編譯桨嫁,一般運行Linux系統(tǒng);
- PC份帐,使用串口連接嵌入式設(shè)備璃吧,方便調(diào)試,一般運行Windows系統(tǒng)弥鹦;
- Embedded Device肚逸,目標設(shè)備;
如果在Server上編譯生成了文件彬坏,要通過PC再部署到嵌入式設(shè)備上朦促,那就會顯得很麻煩了,那么有沒有更好的方式呢栓始?NFS的出現(xiàn)务冕,便提供了一方便捷的方法,讓嵌入式設(shè)備能訪問服務器中的文件幻赚。
NFS介紹
NFS
是Network File System
的縮寫禀忆,即網(wǎng)絡(luò)文件系統(tǒng)臊旭,一種使用于分散式文件協(xié)定,功能是通過網(wǎng)絡(luò)讓不同的機器箩退、不同的操作系統(tǒng)能夠共享個人數(shù)據(jù)离熏。
NFS
在文件傳輸過程中依賴于RPC
協(xié)議(Remote Procedure Call
,遠程過程調(diào)用戴涝,是使客戶端能夠執(zhí)行其他系統(tǒng)中程序的一種機制)滋戳,NFS
本身沒有提供信息傳輸?shù)膮f(xié)議和功能,可以認為它是使用RPC
協(xié)議的一個程序啥刻。
NFS
服務器奸鸯、RPC
、客戶端三者交互的關(guān)系如下圖:
NFS配置
- 安裝
nfs-utils
可帽、rpcbind
:
sudo yum y install nfsutils rpcbind
- 編輯
/etc/exports
配置文件娄涩,該文件默認是空的:
-
sudo vim /etc/exports
添加以下內(nèi)容:/home/share *(rw,sync,no_root_squash)
第一部分:/home/share
代表共享目錄
第二部分:允許訪問的主機,可以是IP或者IP段映跟,*表示通配符
第三部分:括號中的部分蓄拣,rw
:可讀可寫;sync
:內(nèi)存中數(shù)據(jù)寫入磁盤努隙;no_root_squash
:NFS客戶端連接服務器時如果使用的是root權(quán)限弯蚜,那么對服務器分享的目錄來說,也擁有root權(quán)限剃法,此項不安全碎捺。括號中逗號后邊不需要空格,否則會報錯:exportfs: /etc/exports:1: syntax error: bad option list
- 使配置文件生效
sudo exportfs -r
- 啟動
rpcbing
和nfs
服務
sudo service rpcbind start
-
sudo service nfs start
如果需要查看一下是否已經(jīng)啟動nfs服務贷洲,可以使用:systemctl list-unit-files | grep nfs
- 啟動
nfs
sudo systemctl start nfs
客戶端掛載
通過Telnet進入客戶端后收厨,輸入以下命令,即可完成掛載:
-
mount -t nfs -o nolock 10.31.32.39:/home/share /mnt
其中10.31.32.39
為服務器的IP地址优构,完成掛載后诵叁,進入/mnt
目錄,就像進入服務器的/home/share
目錄一樣钦椭,從此為你打開了一扇便捷大門拧额。