Ubuntu16.04與ARM的NFS配置、掛載和解除安裝
ip分配: 閘道器 192.168.137.1
電腦 192.168.137.4
Ubuntu 192.168.137.2
開發板 192.168.137.3
一:安裝NFS服務(需要網路)
sudo apt install nfs-kernel-server portmap
二:NFS配置檔案
( 若vim報錯找不到這個命令,將vim換成vi或者sudo install vim安裝vim編輯器即可,以下同此)
sudo vim /etc/exports
在vim終端中新增如下資訊:
其中nfsroot資料夾為NFS服務所用的共享資料夾,沒有的自行建立,路徑自定義。
/forlinx/nfsroot *(rw,sync,no_root_squash)
*:允許所有的網段訪問,也可以使用具體的IP
rw:掛載此目錄的客戶端對該共享目錄具有可讀可寫許可權
sync:資料同步寫入記憶體和硬碟
no_root_squash:root使用者具有對根目錄的完全管理訪問許可權
no_subtree_check:不檢查父目錄的許可權
vim使用指南 :
i ,進入文字編輯模式
esc 退出文字編輯模式
:wq 儲存並退出。:q! 退出不儲存
讓exports檔案生效 (報錯則跳過,直接下一步便可)
sudo exportfs -arv
三:重啟NFS服務
sudo /etc/init.d/nfs-kernel-server restart
每修改一次NFS的配置資訊時,都需要執行命令重啟一次NFS服務
驗證一:linux自己掛載自己(可跳過)
首先用以下命令檢視掛載資料夾路徑資訊
showmount -e
cd到/mnt下建立掛載目錄nfs
mkdir nfs
給nfs資料夾改許可權, 這條命令生效後,nfs資料夾就是任何人都能修改了
sudo chmod 777 /mnt/nfs -R
然後執行以下命令掛載改資料夾:
sudo mount -t nfs 192.168.137.2:/forlinx/nfsroot /mnt/nfs/
其中,以上的IP地址為我Ubuntu的IP地址,你可以通過ipconfig
命令檢視自己的,/mnt/nfs/
中的nfs資料夾是我自己在Ubuntu系統根目錄的/mnt/下自己建立的。
執行以下命令可以看到是否掛載成功
ls /mnt/nfs/
可以看到/forlinx/nfsroot/
目標資料夾裡面的test.txt資訊已經掛載到了/mnt/nfs/
資料夾下面。
執行以下命令可以完成共享資料夾的解除安裝工作
sudo umount /mnt/nfs
驗證二:arm開發板掛載linux系統裡的資料夾
進入arm開發板(筆者的是FET16410C)
掛載:在開發板的終端裡執行以下命令
這個/mnt/nfs/
裡的nfs資料夾是我在開發板上建立的,若長時間無反應關閉Ubuntu的防火牆再試 ,輸入ufw disable命令關閉防火牆。
mount -t nfs -o nolock 192.168.137.2:/forlinx/nfsroot /mnt/nfs/
在開發板的終端裡執行命令,可見Ubuntu的text.txt檔案已經掛載到開發板下!
ls /mnt/nfs/
在開發板的終端裡執行命令,可見Ubuntu的text.txt檔案已經掛載到開發板下,大功告成!
解除安裝:解除安裝掛載的資料夾命令為
umount /mnt/nfs/
text檔案已經不見了 驗證解除安裝成功!
*************************************************************************************************************************************************
以下可忽略,選擇食之!
*************************************************************************************************************************************************
一,修改arm開發板的IP
使用的yaffs2檔案系統,修改方法如下:
1、修改/etc/init.d/rcS檔案
在/sbin/ifconfig lo 127.0.0.0
下新增一行/sbin/ifconfig eth0 192.168.137.3 up
這裡192.168.137.3 是你要修改成的IP地址
2、修改/etc/eth0-setting
修改ip地址 閘道器 掩碼
重啟開發板,ifconfig,就能發現IP地址已經修改了。
二、開發板啟動自動
大家的開發板是不是每次重啟後IP都變了,還有就是每次都要掛載NFS是不是覺得很麻煩呢,我有個簡單的方法,就是修改開發板的/etc/init.d/rcS這個啟動檔案。
在開發板的終端中輸入 : vi /etc/init.d/rcS
在下圖中的位置新增剛剛在上面用到的兩條命令
ifconfig eth0 192.168.137.3 netmask 255.255.255.0 up //設定開發板ip
mount -n -o nolock 192.168.137.2:/forlinx/nfsroot /mnt/nfs //自動掛載
重啟一下開發板看看,是不是已經自動掛載了NFS了。
PC端如果是用路由器DHCP分配IP,建議將IP固定,否則IP換了後開發板也無法連線到PC機的,路由器的靜態IP繫結裡面可以設定的。
三,在開發板上這樣的掛載方式是不能拷貝Linux系統上的大檔案的,會出現nfs: server 192.168.1.218 not responding, still trying
錯誤提示的(不拷貝大檔案可跳過!!!)
接下來這個圖片是我再次測試後的圖片,我在Linux的NFS服務掛載資料夾下來增加了測試檔案"led_test",檔案大小如圖所示。
不過能掛載成功,說明開發板與主機相連,不存在網路擁塞問題,出現該問題的原因只能是網絡卡丟包,而導致網絡卡丟包的原因有軟體配置原因和硬體原因(包括接線),要是硬體原因那就要好好排查了,不過大多數情況都是軟體配置問題。
換用以下命令進行NFS服務掛載
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.1.218:/home/china/nfsroot /mnt/nfs/
拷貝大檔案測試:
PS:
每修改一次NFS的配置資訊時,都需要執行命令重啟一次NFS服務sudo /etc/init.d/nfs-kernel-server restart
若執行時遇到錯誤,把問題複製到baidu或者google裡,也許就會解決了