现象
单板启动, uboot进入命令行模式, 无法ping通tftpserver
#ping 10.100.10.111
Speed: 100, full duplex
Using ethernet@xxx device
ARP Retry count exceeded; starting again
ping failed; host 10.100.10.111 is not alive
定位过程
1 交叉对比实验,发现同事的电脑能够ping通,并且能够通过tftpserver下载文件
#ping 10.100.10.112
Speed: 100, full duplex
Using ethernet@xxx device
host 10.100.10.112 is alive
于是参考同事的tftpserver配置自己重新配置tftpserver服务, 重启服务和重启电脑发现仍然无法ping通
2 当天没有解决问题,第二天 找同事试了一下从我的tftpserver下载文件,发现能够下载成功,确认我的新配置的tftpserver没有问题。说明问题还是出在网络上面。昨天排查过电脑确认防火墙已经关闭。
3 记得昨天和前天的时候,发现uboot进入linux之后,我是能够通过ssh和scp访问单板的。同事帮忙排查了一下网络。发现同事的电脑和单板是通过一个小的路由器接入到网络的。而我的电脑是直接接入到网络的。于是我尝试将我的网卡接到小路由器上。接入之后然后进行测试,发现网络OK,能够ping通我的电脑。
#ping 10.100.10.111
Speed: 100, full duplex
Using ethernet@xxx device
host 10.100.10.111 is alive
结论
根据同事介绍,小的路由器有自己的路由,uboot阶段需要配置网关,否则无法透传路由器。
拓展
排查类似的问题,应该分成两个阶段
1 网络问题
排查网络拓扑走线,单板和设备尽量在一个交换机或者路由器,甚至直连。
关闭防火墙。
2 tftpserver问题
自己尝试tftp下载文件, 别人尝试tftpserver下载文件。
实验
1 关闭tftpserver后, uboot是否能够ping通电脑
$ sudo service tftpd-hpa restart
$ sudo service tftpd-hpa shutdown
Usage: /etc/init.d/tftpd-hpa {start|stop|restart|force-reload|status}
$ sudo service tftpd-hpa stop
$ tftp 10.100.10.111
tftp> get uImage
Transfer timed out.
切换到uboot命令行下
#ping 10.100.10.111
Speed: 100, full duplex
Using ethernet@xxx device
host 10.100.10.111 is alive
结论:能够ping通
2 打开防火墙, uboot是否能够ping通电脑
$ sudo ufw status
[sudo] zhanglin 的密码:
状态:不活动
$ sudo ufw enable
在系统启动时启用和激活防火墙
$ sudo ufw status
状态: 激活
至 动作 来自
- -- --
20 ALLOW Anywhere
20 (v6) ALLOW Anywhere (v6)
切换到uboot命令行下
#ping 10.100.10.111
Speed: 100, full duplex
Using ethernet@xxx device
host 10.100.10.111 is alive
结论:能够ping通
再尝试下载文件
#tftpboot 0x80300000 uImage
Speed: 100, full duplex
Using ethernet@xxx device
TFTP from server 10.100.10.111; our IP address is 10.100.10.113
Filename 'uImage'.
Load address: 0x80300000
Loading: T T T T T T T T
Abort
下载失败
重新关闭防火墙
$ sudo ufw disable
防火墙在系统启动时自动禁用
$ sudo ufw status
状态:不活动
切换到uboot命令行下
#tftpboot 0x80300000 uImage
Speed: 100, full duplex
Using ethernet@2820c000 device
TFTP from server 10.100.10.111; our IP address is 10.100.10.113
Filename 'uImage'.
Load address: 0x80300000
Loading: #################################################################
#############################################################
888.7 KiB/s
done
Bytes transferred = 30593600 (1d2d240 hex)
下载成功
结论:关闭防火墙,tftpserver下载文件失败