embedded-linux - 嵌入式 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)?
如果是这样:我该怎么做?
解决方案
推荐阅读
- python - shutil.copy2() 文件大小不匹配
- javascript - 我无法弄清楚错误是什么,错误:未捕获的 ReferenceError
- java - 如何使用 JavaFX 中的复选框从列表视图中更新单元格的背景颜色?
- azure - 使用 Azure 应用程序网关为自定义域托管动态 ssl 证书
- python - 运行 python 脚本时出现 I/O errno 121 错误
- opensuse - 每次重新启动服务时,NetworkManager.conf 都会重置为“404:NotFound”
- python - 为什么我的解析图像链接以 base64 格式输出
- firebase - 部分文件上传 Firebase 存储 - Flutter
- c - while 语句是如何在 C 中执行的,或者这个数组引用的指针是如何工作的?
- javascript - postcss webpack 的输出不显示 css 前缀