JZ2440:通過nfs掛載檔案系統不成功
最近在看韋東山的視訊,一步一步跟著做,發現不錯。晚上做到掛載檔案系統這一步時,出錯了,提示:nfs: server 10.168.1.1 not responding, still trying
原本啟動引數為: set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
按照視訊中的講解,將啟動選項修改為:
set bootargs noinitrd root=/dev/nfs nfsroot=10.168.1.1:/work/nfs_root/tmp/fs_mini_mdev ip=10.168.1.112:10.168.1.1:10.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
搜了網上文章,有說是具有較高的傳送速率的NFS主機網絡卡和較低速率的目標機網絡卡之間不匹配,要解決此問題需要在掛載檔案系統時新增額外的引數。
解決辦法:
1 當目標機啟動後已經進入linux系統的情況下,使用以下mount命令:
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 59.70.245.216:/home/lizhao/rootfs /mnt/nfs
(即添加了intr rsize=1024 wsize=1024 引數,引數的具體意義見下面註釋)
2 當目標機處在引導階段向核心傳遞命令列引數時,使用以下引數:
console=ttySAC0 root=/dev/nfs nfsroot=59.70.245.216:/home/lizhao/rootfs, flags=intr,rsize=1024,wsize=1024
引數解釋:intr
-- 當伺服器宕機或者無法到達時,允許中斷NFS請求。 nolock--禁用檔案鎖。 rsize
= 8192 和 wsize=8192 -- 通過設定大的同時傳輸的資料塊大小(bytes),以提高NFS讀寫的速度。改變這些值時要當心,一些舊的linux核心和網絡卡在大的塊大小不能正常工作。
按照這個修改後為:set bootargs noinitrd root=/dev/nfs nfsroot=10.168.1.1:/work/nfs_root/tmp/fs_mini_mdev,flags=nolock ip=10.168.1.112:10.168.1.1:10.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
任然不可以。
最後,發現在PC中的檔案系統裡,發下了對嵌入式板子IP的設定,這個指令碼修改了IP,改到另一個網段了,所以才不通了。
檔案(/work/nfs_root/tmp/fs_mini_mdev/etc/init.d/rcS):
#!/bin/sh
ifconfig eth0 192.168.1.17
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
修改為:
#!/bin/sh
#ifconfig eth0 192.168.1.17
ifconfig eth0 10.168.1.112
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s