在實(shí)驗(yàn)室里找到了一個(gè)主控是s5pv210的智能車,主板是友善之臂的早期產(chǎn)品smart210
里面介紹了一種通過(guò)nfs掛載,來(lái)傳輸文件的方式
通常傳送文件一般是通過(guò) ftp 傳送文件,或者串口傳送文件
不過(guò)所謂NFS(Network File System)是網(wǎng)絡(luò)文件系統(tǒng),它允許網(wǎng)絡(luò)中的計(jì)算機(jī)之間通過(guò)TCP/IP網(wǎng)絡(luò)共享資源。在NFS的應(yīng)用中,本地NFS的客戶端應(yīng)用可以透明地讀寫(xiě)位于遠(yuǎn)端NFS服務(wù)器上的文件,就像訪問(wèn)本地文件一樣。
他可以節(jié)省本地存儲(chǔ)空間,將常用的數(shù)據(jù)存放在一臺(tái)NFS服務(wù)器上且可以通過(guò)網(wǎng)絡(luò)訪問(wèn),那么本地終端將可以減少自身存儲(chǔ)空間的使用。
下面我來(lái)介紹一下我的掛載過(guò)程。
打開(kāi)虛擬機(jī)
如果有必要可以先獲取root權(quán)限
首先Ubuntu是沒(méi)有NFS的相關(guān)程序的,需要進(jìn)行NFS安裝
sudo apt-get install nfs-kernel-server
并建立一個(gè)nfs服務(wù)的專有的文件夾
mkdir -p /opt/FriendlyARM/mini210/linux/rootfs_mini210 設(shè)置讀寫(xiě)權(quán)限
# chmod 777 /opt/FriendlyARM/mini210/linux/rootfs_mini210
建立好文件夾后,接著執(zhí)行命令:
sudo vi /etc/exports
來(lái)配置nfs
在最后一行添加:
/opt/FriendlyARM/mini210/linux/rootfs_mini210 *(sync,rw,no_root_squash)
這一行的含義是:
/opt/FriendlyARM/mini210/linux/rootfs_mini210:與nfs服務(wù)客戶端共享的目錄,這個(gè)路徑必須和你前面設(shè)置的文件的路徑一致!
*:允許所有的網(wǎng)段訪問(wèn),也可以使用具體的IP
rw:掛接此目錄的客戶端對(duì)該共享目錄具有讀寫(xiě)權(quán)限
sync:資料同步寫(xiě)入內(nèi)存和硬盤(pán)
no_root_squash:root用戶具有對(duì)根目錄的完全管理訪問(wèn)權(quán)限
如果還希望共享其他目錄可以在后面添加
例如
?
這里多了個(gè)insecure,這個(gè)我們等一下再說(shuō)
修改完上述配置文件保存退出。
我用的是zz的vi,按esc進(jìn)入命令行模式,
:wq
保存退出
重啟rpcbind服務(wù)。
# /etc/init.d/rpcbind restart
重啟nfs服務(wù)。
# /etc/init.d/nfs-kernel-server restart
如果以后你增加了新的地址,rpcbind和nfs需要再次重啟
可以通過(guò)本機(jī)掛載nfs來(lái)測(cè)試一下
# mkdir /mnt/nfs# mount 192.168.2.3:/opt/FriendlyARM/mini210/linux/rootfs_mini210 /mnt/nfs# ls /mnt/nfs
請(qǐng)注意opt/FriendlyARM/mini210/linux/rootfs_mini210和/mnt/nfs之間有一個(gè)空格
可以通過(guò)umount解除掛載
可以看到nfs中已經(jīng)沒(méi)有之前的文件了
如果顯示 device busy
可輸入
umount -l /mnt/nfs
選項(xiàng) –l 并不是馬上umount,而是在該目錄空閑后再umount。
這樣nfs掛載就搭建好了,但是這樣個(gè)情況下并不能用smart210正常掛載
因?yàn)槟憧赡懿](méi)有將電腦 開(kāi)發(fā)板 虛擬機(jī)三者ping通
首先相互ping一定是在統(tǒng)一網(wǎng)段內(nèi)
Ping之前請(qǐng)關(guān)閉電腦防火墻和殺毒軟件
我的筆記本只有一個(gè)網(wǎng)口,所以將他與開(kāi)發(fā)板通過(guò)網(wǎng)線連接
我們先看一下目前的ip地址,一般你的也是192.168.1.x
這個(gè)是通過(guò)wifi獲得的,如果你和我一樣用的是筆記本,
你不能使用這個(gè)網(wǎng)段,建議你換一個(gè)像 192.168.2.x ,
這是因?yàn)殡娔X的兩個(gè)網(wǎng)卡都要工作,必須互不干擾。
我們假設(shè)使用 192.168.2.x 這個(gè)網(wǎng)段,
網(wǎng)關(guān):192.168.2.1
電腦IP : 192.168.2.2
虛擬機(jī):192.168.2.3
開(kāi)發(fā)板:192.168.2.4
下面分配IP,分配ip要根據(jù)實(shí)際情況來(lái),如果你的路由器還有其他人在使用的話可以選取靠后一點(diǎn)的ip,防止ip沖突。
先設(shè)置電腦的靜態(tài)IP
控制面板網(wǎng)絡(luò)和 Internet網(wǎng)絡(luò)連接
?
?
?
?
?
設(shè)置ip地址為192.168.2.2
別忘了要關(guān)閉你的防火墻哦
?
設(shè)置開(kāi)發(fā)板的IP地址
Smart在燒錄好系統(tǒng)后有現(xiàn)成的軟件,可以直接更改
?
?
設(shè)置虛擬機(jī)ip
?
更改設(shè)置
?
還原為默認(rèn)設(shè)置后,再進(jìn)行相關(guān)設(shè)置
?
虛擬機(jī)設(shè)置中將網(wǎng)絡(luò)設(shè)置為vmnet0
進(jìn)入虛擬機(jī)
?
設(shè)置虛擬機(jī)IP、子網(wǎng)掩碼、網(wǎng)關(guān),最后點(diǎn)擊Apply應(yīng)用
?
設(shè)置完成后通過(guò)ifconfig查看當(dāng)前的ip地址
?
別忘了通過(guò)
ufw disable
關(guān)閉防火墻
在smart210上也有現(xiàn)成的ping測(cè)試軟件
可以試一下是否能ping通
如果能ping通就可以嘗試掛載了
連接通過(guò)網(wǎng)線和串口線連接開(kāi)發(fā)板
?
虛擬機(jī)已經(jīng)重啟過(guò)nfs后
在開(kāi)發(fā)板命令界面中輸入
?
#mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.2.2:/tftpboot /mnt為什么如此復(fù)雜。。。因?yàn)镹FS 的默認(rèn)傳輸協(xié)議是 UDP,而PC機(jī)與嵌入式系統(tǒng)通過(guò)UPD交互時(shí)就會(huì)出現(xiàn)嚴(yán)重的網(wǎng)卡丟包現(xiàn)象。
則終端會(huì)出現(xiàn):nfs:server is not responding,still trying提示信息
解決方案是:在客戶端改用TCP協(xié)議,使用下面的命令,
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.0.121:/主機(jī)nfs目錄 /掛載路徑?
如果出現(xiàn)類于
mount.nfs: access denied by server while mounting 192.168.3.12:/home/lzgonline/rootfs
首先考慮權(quán)限設(shè)置有問(wèn)題,需要將權(quán)限設(shè)為777
如果文件夾權(quán)限都設(shè)為777了,那權(quán)限上沒(méi)問(wèn)題
那是因?yàn)?br />
如果端口號(hào)大于1024,則需要將 insecure 選項(xiàng)加入到配置文件(/etc/exports)相關(guān)選項(xiàng)中mount客戶端才能正常工作
為什么不能大于1024呢?
secure 選項(xiàng)要求mount客戶端請(qǐng)求源端口小于1024(然而在使用 NAT 網(wǎng)絡(luò)地址轉(zhuǎn)換時(shí)端口一般總是大于1024的),默認(rèn)情況下是開(kāi)啟這個(gè)選項(xiàng)的,如果要禁止這個(gè)選項(xiàng),則使用 insecure 標(biāo)識(shí)
?
評(píng)論
查看更多