前言:
如果你只想快速的解决问题,只需要先看问题分析中的“我的情况”和你的问题匹配,如果情况不一样本文可能对你的问题没有帮助,如果匹配,就看问题速通,来解决问题即可。
一、问题速通
(1)当windows服务中的Routing and Remote Access服务运行时,nfs进行下载。
(2)当上述服务关闭时,再进行下载
可见,如果你只想解决这个问题,只需要把windows服务中的Routing and Remote Access服务设置为禁止,并且停止运行,即可完成下载。问题到这里就解决了,如果你想了解一下我的解决过程,请看下面。
这里附一篇禁用服务的文章:虚拟机ping开发板出现dup,解决方法_wsl ping主机时,主机回复dup-CSDN博客
二、问题分析
在进行uboot下nfs下载实验的时候,发现nfs会瞬间下载完成,且没有错误提示。查看所指定的内存发现并没有下载进去任何字节。然后查找网上的解决方案,大概有以下几种:
- 没有正确配置/etc/exports文件中的共享目录
- 所使用的ubuntu版本太高,所安装的nfs不支持开发板自带的2.0版本
- windows和ubuntu下的防火墙没有关
- 网络设置的不对,不在同一网段,这样的话是互相ping不通的,也不是本文的情况
- uboot环境变量设置的不对
这些我都尝试了,发现并没有用,这些操作所解决的问题一般情况nfs会报错,不能挂载或者TTT超时这些,我下载的时候并没有报错。如果你的nfs报错了,就不是本文要说的情况。
我的情况:
- 开发板,虚拟机,windows三者都可以互相ping通,uboot下板子可以ping通虚拟机
- uboot下tftp可以正常下载文件
- 开发板进入了linux系统,可以使用nfs正常挂载文件夹
- 开发板进入linux后,和虚拟机互相ping,二者都会出现DUP重复错误
- 不属于上述5条情况
如果你和我的情况一样,本文有可能会帮助到你。
三、解决方案
在我重新安装虚拟机,配置网络环境的时候,发现了如下问题。
在开发板ping虚拟机时
在虚拟机ping开发板时
可以看到,可以互相ping通,但是没一次发送ping包,就会多收到3条重复的包(DUP错误),这也就是问题出现的地方。我在网上找到这个的解决方案,然后nfs在uboot下下载的问题也被解决了。
关闭服务之后再ping,就没有DUP重复错误了
这篇文章:虚拟机ping开发板出现dup,解决方法_wsl ping主机时,主机回复dup-CSDN博客
注意这里在windows下ping是不会重复的,因为会自动舍弃重复的包。而开发板和虚拟机则不会。
这就是造成nfs无法下载进去内容,还不报错的问题。看似毫不相干的两个问题,却有着内在联系。
这就是本次debug的所有经过。谢谢大家的观看,一起学习进步。