nfs:server 172.168.1.22 not responding,still trying问题解决方法 ,平台为RealARM 210平台。
这里的问题是在使用nfs挂载文件系统时遇到的,所以这里只说明文件系统挂载时出现这问题的解决方案。出现问题的情况请看下图:
在网上搜索可以搜到解决的办法,但基本都是大同小异,或者说的不太明白,导致卡了我半天也没解决。网上的解决方法如下,也许有些人的问题可以解决但是我的问题确实是没有解决。
在mini2440开发板上挂载主机上的nfs文件系统后传送较大文件时会出现下面的提示:
nfs:server is not responding, still trying
问题原因:
Mandag 27 november 2006 20:12 skrev Verner Kjrsgaard:
> Mandag 27 november 2006 19:33 skrev John P. New:
> > Verner,
> >
> > This is a problem with NFS and 2.6 kernels, fast server NICs and
> > comparatively slower client NICs. This will show up when the server has
> > a 1000Mb card and the client a 100Mb, or when the server has a 100Mb
> > card and the client a 10Mb.
> >
> > Essentially, you have to pass some options to the kernel on terminal
> > boot, and this varies depending on whether you are using etherboot or
> > PXE.
> >
> > See
> > http://wiki.ltsp.org/twiki/bin/view/Ltsp/NFS#NFS_Server_not_responding
> > for a deeper explanation of the problem and the cure.
大意是说具有较高的传送速率的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=1024ip=59.70.245.222:59.70.245.216:59.70.245.216:255.255.255.0:leao:eth0:off
参数解释:
intr -- 当服务器宕机或者无法到达时,允许中断NFS请求。 nolock--禁用文件锁。 rsize = 8192 和 wsize=8192 -- 通过设定大的同时传输的数据块大小(bytes),以提高NFS读写的速度。改变这些值时要当心,一些旧的linux内核和网卡在大的块大小不能正常工作。
后来看到一个贴说了,在加载文件系统时,是不是进行了系统的IP配置,进而导致了这样的错误(如下图所示),检测rcS文件后发现确实有配置。兴奋之余,赶紧修改试试吧。
由于这是挂载linux(我这里使用的是ubuntu10.04版本)系统下共享的,所以文件的修改是在ubuntu中直接修改的。如下图:
看上图圈的部分,这里是加载了一个脚本文件,该文件与rcS相同文件夹下,ifconfig-eth0这个脚本文件就是对ip的配置。好来看看ifconfig-eth0这个脚本的内容吧,如下图:
这里面有一个if条件句,在这里if条件句是为真的,在/etc目录下有这个文件,如下图:
那么这里执行的就是ifconfig-eth0这个脚本文件中source /etc/eth0-setting这部分,也就是下图的方框部分,如果没有这个文件的话执行的就是if语句中else部分(即下图中椭圆部分)了。
由此可知,IP的配置文件是eth0-setting这个文件了,打开看看,如下图:
由于我的IP网关是172.168.1.1,那么这个IP配置就是不行的了,在u-boot时IP网关是172.168.1.1,但是在挂载文件系统时就被修改为上图所示的IP了,而就因为此,IP就不再同一网段内了,通信失败,所以就出现了无应答的错误了。修改这个文件如下图所示,我的是下图的IP,大家请修改成自己的网段IP。
修改后,保存重启。以完全正常了。
对于其他的开发板,rcS脚本中可能不是加载ifconfig-eth0这个脚本去配置IP,就是没有下面这句:
而是可能有下面这句去配置
那么,修改上图所示的IP即可。
另附上我的u-boot的环境参数设置:
在附上设置的命令:
setenv bootcmd "tftp C0008000 zImage;bootm C0008000 40800000"
setenv bootargs noinitrd root=/dev/nfs console=ttySAC2 init=/linuxrc nfsroot=172.168.1.22:/nfsboot/210system_new/system ip=172.168.1.21:172.168.1.22:172.168.1.1:255.255.255.0::eth0:on
IP和文件系统的目录修改为自己的即可。
温馨提示:本文是针对RealARM210开发板,其他开发板身边没有,仅供大家参考。
在用这款开发板的,要是能解决问题,就顶顶,让更多的人能够搜索到,O(∩_∩)O~!