我在嵌入式 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)?
如果是这样:我该怎么做?