我有一个通过 USB 连接的带有 lan7500i-ABZJ 的定制嵌入式 linux 板。
所以我用内置的 smsc75xx 模块编译了 linux 内核(使用 buildroot)。启动内核消息确实显示:
[ 5.315124] usb 1-1: New USB device found, idVendor=0424, idProduct=7500, bcdDevice= 2.00
[ 5.324072] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 5.340746] smsc75xx v1.0.0
[ 5.539195] smsc75xx 1-1:1.0 eth1: register 'smsc75xx' at usb-ci_hdrc.0-1, smsc75xx USB 2.0 Gigabit Ethernet, 8e:64:f6:eb:5e:65
现在我添加一个 IP 地址:
ifconfig eth1 192.168.1.44 netmask 255.255.255.0 up
但是,一旦我尝试 ping 本地网络上的地址,所有数据包都会丢失:
# ping 192.168.1.40
PING 192.168.1.40 (192.168.1.40): 56 data bytes
^C
--- 192.168.1.40 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
# arp
? (192.168.1.40) at <incomplete> on eth1
并且没有包通过接口传输:
eth1 Link encap:Ethernet HWaddr 8E:64:F6:EB:5E:65
inet addr:192.168.1.44 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
没有其他网络接口处于活动状态。对 localhost 的 ping 是有效的,所以我假设 TCP/IP 级别的一切正常。为什么我不能使用我的以太网接口?
ifconfig
(或在这里可能busybox ifconfig
)显示RUNNING
除了UP
管理上处于 UP 并检测到运营商(即:远程 NIC、交换机等)的 NIC 之外。缺少RUNNING
意味着 NIC 未连接或无法以正确检测线路另一侧的 NIC 的方式进行设置。ip link
(或busybox ip link
),在 Linux 上应该始终优先(与 一起ip address
)而不是ifconfig
,在这种情况下会显示明确无误的NO-CARRIER
标志。所以你必须检查为什么没有载体。通常该
ethtool
命令在这里派上用场,查看自动协商是否失败,或者不能使用等。如果不存在,您应该将其添加到构建中。