![如何使用 smsc95xx 驱动程序自动启动 USB 以太网接口](https://linux22.com/image/1568747/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20smsc95xx%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E8%87%AA%E5%8A%A8%E5%90%AF%E5%8A%A8%20USB%20%E4%BB%A5%E5%A4%AA%E7%BD%91%E6%8E%A5%E5%8F%A3.png)
我使用的是带有 LAN9514 和 smsc95xx 驱动程序的定制主板,但无法在启动时自动启动以太网接口。系统启动后,我可以使用“ifconfig eth1 up”来启动它,但我希望它自动启动。
这是我的 /etc/network/interfaces:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
allow-hotplug eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
我也尝试过“auto eth1”,但没有效果。
启动完成后不久,我在控制台上看到这些消息:
usb 1-1.1: new high-speed USB device number 3 using ci_hdrc
smsc95xx v1.0.6
smsc95xx 1-1.1:1.0 eth1: register 'smsc95xx' at usb-ci_hdrc.0-1.1, smsc95xx USB 2.0 Ethernet, b2:6c:a9:0e:67:34
macb e000b000.ethernet eth0: link up (1000/Full)
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
启动网络的 /etc/init.d 脚本使用“/sbin/ifup -a”来启用自动接口的启动(在我的系统中,ifup 由 BusyBox 处理)。
我可以通过在 init.d 脚本中生成一个延迟命令来自动启动接口:“sleep 5 && ifconfig eth1 up &”,但这感觉像是一个临时解决方案,因为我不知道 USB 以太网设备需要多长时间才能实例化。
运行 ifconfig 会显示 lo 和 eth0 接口,但直到我手动启动它时才会显示 eth1。我缺少什么才能让 eth1 自动启动?
答案1
如果您使用 udevd,则可以使用它在接口可用时立即启动它。Busybox 还包含一个 udev 实现。
答案2
看起来就像eth0
出现了后 ifup -a
已经运行,因为显然它需要一些时间来初始化它。
allow-hotplug eth0
因此,尝试在之前添加auto eth0
,这应该告诉 ifup/ifdown 在已经运行之后也启用接口ifup -a
,当内核准备就绪后生成一个事件。