开发板通过以太网卡的互联网连接尝试

配置嵌入式Linux的eth0以连入互联网

Posted by John Mactavish on June 16, 2019

前言

我在Ubuntu虚拟机的开发环境中成功编译了符合iTop-4412开发板的嵌入式Linux内核的boa执行文件,放入/bin目录并启动后通过ps指令查询得知boa正常工作。接下来就应该在网络中尝试查看boa上的第一个网页了。讯为给的教程仅仅提到了在局域网中浏览网页的情况,但是我希望尝试在互联网中浏览网页。

过程

直接将网线(接入校园有线网)插入开发板的以太网接口,在超级终端中输入ifconfig,默认的eth0网卡IP是192.168.1.230,电脑连上校园网(这个是无线网络)后打开http://192.168.1.230 ,连接不上。

我觉得是eth0的配置信息不对,将网线插回电脑,在CMD中输入ipconfig(Win10的指令与Linux的不同) 发现以太网配置信息的IP为169.254.244.239;用route PRINT查询默认网关(gateway)是169.254.244.239。难道校园网不是用DHCP动态分配的,而是固定的IP。于是我想到把开发板的IP配置的和它一样是不是就可以了。在开发板中使用 ifconfig eth0 169.254.244.239 netmask 255.255.0.0 修改IP,又用 route add default gw 169.254.244.239 修改了默认网关。值得注意的是,应当先设置IP,如果直接设置先设置网关,会报错no such process,我觉得是因为先设置网关会导致网关和IP不在同一个网段。 但是在超级终端中用指令直接设置后还会有问题,开发板重启后设置会重置为默认值。我在鸟哥的基础篇书中得到灵感,试图寻找系统的配置文件。但是嵌入式系统与完整版Linux文件目录不同,嵌入式的情况是: 配置文件是/etc/eth0-setting 经查,其中的配置正是默认值,不随指令改变。于是我将其修改为 IP=169.254.244.239 Mask=255.255.0.0 Gateway=169.254.244.239 DNS=192.168.1.1 MAC=08:90:90:90:90:90 其中的DNS保持不变,因为我不需要域名。然后运行/etc/init.d/ifconfig-eth。它是一个shell脚本,可以重启eth0,因为/etc/initd network restart在嵌入式系统上不可行。这样即使重启,配置信息也不会变。当然,我备份了原文件。 不幸的是,这个方案也失败了,ping出去的包百分百loss,网页也打不开。我尝试在同学的同样连接在有线校园网上的电脑(我用ipconfig试过了,是同一个网段)打开网页,同样不行,也ping不通。

那我就没办法了,互联网方案失败。接下来尝试局域网。 用一根网线连接电脑和开发板,开发板IP保持我刚刚设置的配置,电脑上ipconfig查询IP是169.254.244.1(即使我将开发板IP修改回默认值,电脑IP也没变,奇怪),ping了一下,竟然没有通,还是百分之百loss。但是网页可以打开了。好吧,确实有够玄学的。。。。。。

总结

老实说,拿一根这么长的网线连局域网并没有什么用。我本来还打算玩一玩sftp和ssh,但是这样还不如使用串口转USB加超级终端调试,U盘传输文件方便。我下一步打算学JAVA了,给开发板烧写安卓镜像,因为安卓上有现成的WiFi驱动,我就可以不用网线就能连接上互联网了。或者,据说讯为更新的Linux镜像上加入了WiFi的驱动,这样就更好了,我打算试一试,毕竟Linux比安卓更加好玩(当然了,还可以尝试自己编译内核,在make menuconfig增加上驱动,但是有点麻烦,我害怕翻车)。

@end

```

最后附上GitHub:https://github.com/gonearewe