當 NFS 服務設定好并啟動後,我們就可以把 NFS 作為根檔案系統來啟動開發闆了.使用 NFS 作為根檔案系統,開發闆的“硬碟”就可以變得很大,因為您使用的是主機的硬碟,這是使用 linux 作為開發經常使用的方法,
路由器一台,主控端網線連到路由。開發闆連到路由,開發闆序列槽連到主控端。
------------------------------------------
主控端配置NFS
Ubuntu10.04 上預設是沒有安裝Ubuntu nfs伺服器的,是以我們首先安裝Ubuntu nfs伺服器端:
$sudo apt-get install nfs-kernel-server
(1)設定共享目錄
運作指令
#gedit /etc/exports
編輯 nfs 服務的配置檔案(注意:第一次打開時該檔案是空的),添加以下内容:
/opt/FriendlyARM/QQ2440V3/root_nfs *(rw,sync,no_root_squash)
其中:
/opt/FriendlyARM/QQ2440/root_nfs 表示 nfs 共享目錄,它可以作為開發闆的根檔案系
統通過 nfs 挂接;
* 表示所有的客戶機都可以挂接此目錄
rw 表示挂接此目錄的客戶機對該目錄有讀寫的權力
no_root_squash 表示允許挂接此目錄的客戶機享有該主機的 root 身份
2) 建立共享目錄
拷貝CD光牒中的 root_nfs.tgz 檔案到某一個目錄,進入此目錄,執行以下指令:
#tar xvzf root_nfs.tgz –C /opt/FriendlyARM/QQ2440/root_nfs
該指令将把 root_nfs 的内容解壓安裝到/opt/FriendlyARM/QQ2440/root_nfs 目錄。
(3) 啟動和停止 nfs 服務
三、重新開機服務
$ sudo /etc/init.d/portmap restart
$ sudo /etc/init.d/nfs-kernel-server restart或#sudo service nfs-kernel-server restart
這将啟動 nfs 服務,可以輸入以下指令檢驗 nfs 該服務是否啟動。
# mount -t nfs localhost: /opt/FriendlyARM/QQ2440/root_nfs /mnt/
如 果 沒 有 出 現 錯 誤 信 息 , 您 将 可 以 浏 覽 到 /mnt 目 錄 中 的 内 容 和
/opt/FriendlyARM/QQ2440/root_nfs 是一緻的。
[email protected]:/tmp# mount -t nfs localhost:/opt/FriendlyARM/QQ2440V3/root_nfs /mnt/
[email protected]:/tmp# showmount -e
4.1 顯示出共享出來的目錄
$ showmount -e
4.3 檢視挂載情況
$ df
4.4 解除安裝挂載
$ sudo umount /mnt
關閉NFS:
/etc/init.d/nfs-kernel-server stop
----------------------------
QQ2440開發闆配置:
啟動按q選項進入vivi模式:
檢視 主控端的IP位址等于多少。
Link encap:以太網 硬體位址 00:16:d4:dd:46:86
inet 位址:192.168.1.108 廣播:192.168.1.255 掩碼:255.255.255.0
檢視 開發闆的IP位址等于多少
vi /etc/init.d/rcS
192.168.1.100, mask=255.255.255.0,
拷貝進去:
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.108:/opt/FriendlyARM/QQ2440V3/root_nfs ip=192.168.1.100:192.168.1.108:192.168.1.108:255.255.255.0:QQ2440V3.arm9.net:eth0:off"
ip的第一項是目标闆的臨時IP(不要與區域網路内其它IP沖突)。
第二項是boot server的IP(實際應用中發現好象沒什麼用)
第三項是目标闆上的GW網關設定
第四項是掩碼,
第五項是主機名,
第六項是網卡eth0,off的參數不知道是什麼意思,但對整個啟動應該沒什麼大的影響。
(3)如果一個指令太長,一行放不下時,要在第一行行尾鍵入“\”字元和按Enter鍵。這時 shell 會傳回一個大于号(>)作為提示符,表示允許指令延續到下一行。然後,可以接着輸入指令。
uboot下設定nfs啟動,類似supervivi,使用指令setenv bootargs而不是param set linux_cmd_line
檢查一下在指令中間不要加換行
把終端拉長就可以了。
這個配置有問題,
NET: Registered protocol family 1
NET: Registered protocol family 17
IP-Config: Complete:
device=eth0, addr=192.168.1.100, mask=255.255.255.0, gw=192.168.1.108,
host=QQ2440V3, domain=, nis-domain=arm9.net,
bootserver=192.168.1.107, rootserver=192.168.1.108, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.108
Looking up port of RPC 100005/1 on 192.168.1.108
VFS: Mounted root (nfs filesystem).
mount_devfs_fs(): unable to mount devfs, err: -2
Freeing init memory: 144K
Warning: unable to open an initial console.
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
答:
1. 首先可以肯定的是,NFS已經mount成功了,至少核心是這麼認為的,否則你不會看到
VFS: Mounted root (nfs filesystem)
mount_devfs_fs(): unable to mount devfs, err: -2
解決方法是:
“其實核心本身已經告訴了你出錯的原因,你隻要稍加分析就可以知道。
根據kernel-2.6.13/include/asm-generic/errno-base.h,
#define ENOENT 2
在PC的/opt/FriendlyARM/QQ2440/root_nfs /mnt目錄下建一個dev目錄讓devfs挂載到那裡”
然後從新VIVI:
Mounted devfs on /dev
Freeing init memory: 144K
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
解決方法:
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.108:/opt/FriendlyARM/QQ2440/root_nfs ip=192.168.1.70:192.168.1.108:192.168.1.108:255.255.255.0:fighter:eth0:off"
改為:
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.108:/opt/FriendlyARM/mini2440/root_nfs/root_nfs
ip=192.168.1.70:192.168.1.108:192.168.1.108:255.255.255.0:fighter:eth0:off"
(1。因為是mini2440闆,自然要把QQ2440改為mini2440
2。/root_nfs 改為/root_nfs/root_nfs,有類似錯誤的朋友可看一下你的linux主機上的檔案,你會發現路徑應該是/opt/FriendlyARM/mini2440/root_nfs/root_nfs)
然後從新VIVI:
Freeing init memory: 144K
[01/Jan/1970:00:00:00 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:00:00 +0000] boa: server built Feb 28 2004 at 21:47:23.
[01/Jan/1970:00:00:00 +0000] boa: starting server pid=261, port 80
Please press Enter to activate this console. MPEG Audio Decoder 0.15.0 (beta) - Copyright (C) 2000-2003 Robert Leslie et al.
Title: ��ɺ��̲
Artist: �Ҷ���
Year: 2000
Genre: Goa
[[email protected] /]#
NFS 配置ok
以後啟動就用這個把。
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.108:/opt/FriendlyARM/QQ2440V3/root_nfs/root_nfs ip=192.168.1.100:192.168.1.108:192.168.1.108:255.255.255.0:QQ2440V3.arm9.net:eth0:off"
#gedit /etc/exports
編輯 nfs 服務的配置檔案(注意:第一次打開時該檔案是空的),添加以下内容:
/opt/FriendlyARM/QQ2440V3/root_nfs *(rw,sync,no_root_squash)
改為 /opt/FriendlyARM/QQ2440V3/root_nfs/root_nfs *(rw,sync,no_root_squash)
如何挂接使用網絡檔案系統NFS:
mount -t nfs -o nolock 192.168.1.108:/opt/FriendlyARM/QQ2440V3/root_nfs /mnt
挂接共享檔案夾OK。