mini2440 nfs根檔案系統支援
核心版本:linux-2.6.32.2 實驗平臺:ubuntu 12.04 + mini2440
nfs檔案系統稱為網路檔案系統,因為檔案系統在宿主機中,這樣在修改檔案系統就非常方便,所以主要用於開發階段使用。
1. 主機安裝nfs服務
$ sudo apt-get install nfs-kernel-server
2. 主機端修改nfs配置檔案
修改/etc/exports檔案,新增如下內容:
#/home/tracy/work/mini2440/nfsroot 192.168.1.*(rw,sync,no_root_squash) /home/tracy/work/mini2440/nfsroot *(rw,sync,no_root_squash)
原意是想讓192.168.1.*ip地址訪問nfsroot,但是在本地測試時會出現這樣一條資訊:
mount.nfs: access denied by server while mounting 192.168.1.100:/home/tracy/work/mini2440/nfsroot
測試命令如下:
$ sudo mount 192.168.1.100:/home/tracy/work/mini2440/nfsroot /mnt/tmp
一時也沒有找到問題所在,所以改成了所有ip地址都能訪問nfsroot,再次測試時能夠掛載成功。
3. 重啟nfs服務
$ sudo service nfs-kernel-server restart
4. 核心配置
使用nfs服務,肯定需要網路的支援,所以首先需要使網路能夠正常工作,可以參閱前面一篇文章,然後還需要nfs客戶端的支援。
File systems ---> [*] Network File Systems ---> <*> NFS client support [*] Root file system on NFS
5. 在bootloader中設定核心啟動的命令列引數
noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.100:/home/tracy/work/mini2440/nfsroot/rootfs ip=192.168.1.110:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off
其中:
root表示使用/dev/nfs這個裝置作為根檔案系統。 rw表示可讀可寫的。 nfsroot表示伺服器中rootfs所在路徑,注意需要跟上伺服器的ip地址。 192.168.1.110是板子啟動之後的ip地址。 192.168.1.100是nfs伺服器的ip地址。 192.168.1.1是板子閘道器地址。 255.255.255.0是板子子網掩碼。 eth0表示板子上的網路裝置。 off表示關閉動態獲取ip地址。
注意:eh0前面有兩個冒號,那是因為這裡還可以填寫一個板子的主機名,這裡沒有設定,所以為空。
6. 測試結果
將編譯好的核心下載到板子上(不需要下載根檔案系統,根檔案系統在nfs伺服器上),在測試之前還需要將rootfs複製到nfsroot目錄下,給板子連上網線進行測試(使用的是mini2440自帶的交叉網線連線到路由器上的),系統正常啟動。使用nfs檔案系統有什麼好處呢,在開發階段,如果需要修改檔案系統內容,或者要往板子上傳遞檔案,使用nfs檔案系統是非常方便的,只需要在本地nfs伺服器上修改檔案系統就可以了。
注意:通過交叉網線與電腦直連的方式,系統也是同樣能夠啟動的。
7. 使用nfs直接掛載nfs伺服器上的目錄
需要配置核心:
File systems ---> [*] Network File Systems ---> <*> NFS client support [*] NFS client support for NFS version 3 [*] NFS client support for the NFSv3 ACL protocol extension [*] NFS client support for NFS version 4 (EXPERIMENTAL) [*] NFS client support for NFSv4.1 (DEVELOPER ONLY)
上面這些都是需要核心支援的nfs協議,而之前的配置是支援nfs根檔案系統。
燒寫核心和根檔案系統,啟動板子,系統啟動之後(首先需要設定板子的ip地址)呼叫如下命令進行掛載:
mount -o nolock -t nfs 192.168.1.100:/home/tracy/work/mini2440/nfsroot /mnt/tmp
注意一定要加上-o nolock,否則會掛在不上。