最近在看韦东山的视频,一步一步跟着做,发现不错。晚上做到挂载文件系统这一步时,出错了,提示: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=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内核和网卡在大的块大小不能正常工作。
按照这个修改后为: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