嵌入式爱好者

查找nfs无法正常启动的过程

2023-1-30 11:04| 发布者: xhh| 查看: 496| 评论: 0

类目: I.MX6系列产品  >  Linux     文档编号: 915

一、问题复现过程及现象

1、网络启动

setenv ethaddr 22:22:22:22:22:0E

setenv ipaddr 172.16.0.93

setenv serverip 172.16.0.92

setenv image zImage

setenv fdt_file imx6ul-14x14-evk-c-emmc.dtb

setenv netargs setenv bootargs console=ttymxc0,115200 cma=320M root=/dev/nfs rw ip=172.16.0.93:172.16.0.92:172.16.0.1:255.255.255.0::eth0:off nfsroot=172.16.0.92:/nfs_rootfs,v3,tcp

setenv netboot 'run netargs; tftpboot ${loadaddr} ${image}; tftpboot ${fdt_addr} ${fdt_file}; bootz ${loadaddr} - ${fdt_addr}'

run netboot

2、按照此步骤可以正常下载内核设备树镜像,也可正常挂载nfs系统

正常挂载nfs文件系统的打印如下

3、可以看到挂载的文件系统正常启动,但是启动到这个位置会卡住,过一会儿会报错连接上服务端IP(也就是虚拟机)

二、分析解决

1、针对以上情况,查到几种可能性

    ①NFS默认传输UDPPC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。在目标板上通过NFS复制PC机上较大文件到目标板上的时候会遇到这种问题。

但实际上bootargs已经规避这种情况使用了TCP,所以排除

考虑负载高  直接用直连的方式仍然存在问题,排除

1. 怀疑IP发生改变,但是不理解这种怀疑有什么依据,查找nfs挂载原理

原理如下

boot 中设置了 bootargs 参数,例如:
  setenv bootargs console=ttymxc0,115200 cma=320M root=/dev/nfs rw ip=172.16.0.93:172.16.0.92:172.16.0.1:255.255.255.0::eth0:off nfsroot=172.16.0.92:/nfs_rootfs,v3,tcp
  在这里我们指定了开发板ip,主机(虚拟机)ip等信息,在uboot启动内核时会将这些信息传递给内核,内核在启动过程中会根据这些参数来挂载网络根文件系统(位于虚拟机的 nfs_root 目录下),也就是说,在内核启动的过程中开发板ip已经根据 Bootargs 里指定的Ip设置完毕但是4.1.15系统在自启脚本中又重新设置了一次IPinte**ce中也设置了IP))且网段与uboot里设置的不一致,导致与服务端无法通信(注意:此时如果挂载上了nfs的文件系统,启动的就是nfs文件系统里的服务,此时进行删除IP操作需在虚拟机里要挂载的nfs文件系统进行

解决方法是删除自启脚本和network服务里的IP


已解决

未解决

只是看看

最新评论

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-22 16:55

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部