添加NFS網絡文件系統
- 硬件平臺:韋東山嵌入式Linxu開發板(S3C2440.v3)
- 軟件平臺:運行於VMware Workstation 12 Player下UbuntuLTS16.04_x64 系統
- 參考資料:《嵌入式Linux應用開發手冊》
- 開發環境:Linux 2.6.22.6 內核、arm-linux-gcc-3.4.5-glibc-2.3.6工具鏈
目錄
一、前言
爲了避免每次修改根文件系統都要重新燒錄,所以引入NFS網絡文件系統進行改進。
二、前期準備——開發版與電腦互ping
目的:開發板與電腦通過網線連接,設置開發版的ip地址
與電腦的ip地址
處於同一網段。
1、查看服務器的ip
在兩者通過網線連接後,網絡適配器會彈出下面紅色的網卡驅動如果沒有,需要檢查電腦網卡是否被禁用,或者網卡口硬件、網線是否有問題
。
電腦命令行輸入ipconfig
查看ip地址
:192.168.1.100
2、設置開發板的ip地址
進入根文件系統輸入ifconfig eth0 192.168.1.1
,後輸入ifconfig
查看是否修改成功。
3、互ping
輸入ping 192.168.1.100
,此時的地址爲服務器地址。
三、啓動後手工掛接NFS(麻煩)
需要滿足兩個條件:
- 服務器“允許”目錄被掛接
- 開發板去掛接
那麼下面我們就來實現這兩個條件。
1、(虛擬機)服務器“允許”目錄被掛接
需要繼續在虛擬機,完善我們的根文件系統。
- 在
/first_fs/etc
目錄下新建exports
文件
執行sudo vi /etc/exports
輸入/work/nfs_root/first_fs *(rw,sync,no_root_squash)
- 重啓NFS服務
輸入sudo /etc/init.d/nfs-kernel-server restart
- 實驗是否成功
執行sudo mount -t nfs 192.168.1.2:/work/nfs_root/first_fs /mnt
這句話的作用是:把 first_fs 文件掛在到本機的/mnt 目錄下,
注意:此時的IP地址爲虛擬機的IP地址。
如下圖,你沒有錯誤信息就是可以掛載,即配置成功。
如果此時進入程序,出不來,可以按ctrl+C
跳出。
2、開發板去掛接
在開發版的根文件系統下操作。
- 在根目錄下新建
/mnt
目錄,執行mkdir /mnt
。 - 執行
mount -t nfs -o nolock 192.168.1.2:/work/nfs_root/first_fs /mnt
3、結果
如果此時,你在虛擬機上的/work/nfs_root/first_fs
目錄下創建文件,在開發版的/mnt
目錄下會立刻顯現出來。
四、啓動即使用NFS(方便)
實驗發現,如果當開發版或者虛擬機關閉時,如果二者需要重新使用NFS,則
虛擬機需要執行sudo mount -t nfs 192.168.1.2:/work/nfs_root/first_fs /mnt
開發版根文件系統需要執行mount -t nfs -o nolock 192.168.1.2:/work/nfs_root/first_fs /mnt
很麻煩,所以可以修改開發板上的參數,使得開發版開機完畢後就可以直接使用NFS網絡系統與虛擬機進行通信。
1、設置開發板的參數
完整指令如下:
set bootargs noiniritrd root=/dev/nfs nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>] ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf> console=ttySAC0
如果想看源碼可以到linux-2.6.22.6\linux-2.6.22.6\Documentation\nfsroot.txt
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
參數說明如下:
[<server-ip>:]
:服務器ip192.168.1.2
<root-dir>
:服務器文件目錄/work/nfs_root/first_fs
[,<nfs-options>]
:標準NFS選項,可省略
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
參數說明如下:
<client-ip>
:開發板ip192.168.1.1
<gw-ip>
:網關192.168.1.5
:<netmask>
:子網掩碼255.255.255.0
<hostname>
:名字,可不填<device>
:開發板上的網卡名字eth0
<autoconf>
:自動配置選項設爲off
最終指令爲:
set bootargs noiniritrd root=/dev/nfs nfsroot=192.168.1.2://work/nfs_root/first_fs ip=192.168.1.1:192.168.1.2:192.168.1.5:255.255.255.0::eth0:off console=ttySAC0
後執行save
2、結果
重啓開發板,嘗試直接在虛擬機的/work/nfs_root/first_fs
目錄下新建文件,觀察開發板上的根文件系統/mnt
目錄下是否出現該文件。
可以看到成功在啓動時就可以直接使用NFS網絡系統。