开机后插网线eth0接口连接不上

eth0 interface doesn't connect if the cable is plugged after the boot

我在自己的嵌入式自定义 linux 发行版中有一个 C# .net 应用程序 运行,由 buildroot 工具生成,我的硬件是 FriendlyArm4412。我使用 eth0 接口将我的应用程序连接到互联网,没有任何问题。问题是:如果我在系统启动前连接以太网电缆,一切正常,但如果我在系统启动后插入电缆,我的系统无法获得 IP 地址。我看到这个是因为我的应用程序显示在屏幕上 "ip address: 127.0.0.1" 这只是我的本地地址。

我已经尝试使用 Connman 网络管理器,它对上述问题非常有效,但我意识到 connman 忽略了我的 /etc/network/interfaces 设置,这很糟糕,因为我的应用程序在此设置了一些东西文件,如静态 ip 地址、wlan0 接口等。

我能做什么?有什么想法吗?

检查 /etc/connman/main.conf 文件中的 DefaultAutoConnectTechnologies 配置参数。查看以太网是否存在。

Connman 不使用 /etc/network/interfaces 文件。您需要使用 Connman D-Bus API 来为您的网络接口设置静态 IP。下载 Connman 源代码并查看 doc/service-api.txt for D-Bus API。另请参阅源目录中的 test/set-ipv4-method python 脚本,以获取有关如何使用 D-Bus API.

设置静态 IP 的快速代码参考

如果不想使用D-BusAPI,可以在connman启动前编辑connman存储目录文件设置静态IP。但是编辑 connman 存储目录并不是执行此操作的正确方法。 Connman 默认存储目录为 /var/lib/connman/ethernet_$mac_address_cable/*.