首页 > 解决方案 > 嵌入式 Linux 上的热插拔以太网上没有 IP 地址

问题描述

我在嵌入式 Linux(版本 3.6.0-rc5)中遇到热插拔以太网问题。如果在启动过程中连接了网络电缆,则一切正常。但是如果我在启动后连接电缆,我不会得到 IP 地址。

我的 /etc/interfaces 如下所示:

# The loopback interface
auto lo
iface lo inet loopback

# Wired or wireless interfaces
allow-hotplug eth0
iface eth0 inet dhcp

我的启动脚本包含以下命令:

ifup eth0

如果以太网电缆在启动时连接,我会在调用“ifup eth0”后得到这个:

[   10.257995] davinci_mdio davinci_mdio.0: resetting idled controller
[   10.265319] net eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=davinci_mdio-0:00, id=7c0f1)
udhcpc (v1.19.4) started
Sending discover...
[   12.261260] libphy: davinci_mdio-0:00 - Link is Up - 100/Full
Sending discover...
Sending select for 192.168.86.100...
Lease of 192.168.86.100 obtained, lease time 86400
adding dns 192.168.86.1

如果以太网电缆在启动时没有连接,我在调用“ifup eth0”后得到这个:

[   10.230285] davinci_mdio davinci_mdio.0: resetting idled controller
[   10.238037] net eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=davinci_mdio-0:00, id=7c0f1)
udhcpc (v1.19.4) started
Sending discover...
Sending discover...
Sending discover...
No lease, failing

如果我然后连接以太网电缆,我会得到:

[  346.232391] libphy: davinci_mdio-0:00 - Link is Up - 100/Full

但我没有得到 IP 地址。

因此,Linux 似乎知道电缆已连接,但它不会自动请求 IP 地址。
注意:如果我在启动过程中不调用 ifup,那么当我连接以太网电缆时不会发生任何事情。

连接电缆后,我可以通过以下方式获取 IP 地址:

ifdown eth0
ifup eth0

我是否必须告诉 Linux 寻找地址(例如 ifdown/ifup)?
如果是这样:我该怎么做?

标签: embedded-linuxethernethotplugging

解决方案


推荐阅读