1. 程式人生 > >Ubuntu16.04與ARM的NFS配置、掛載和解除安裝

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裡,也許就會解決了