ifconfig 失败,因为 FreeBSD 上的 USB 以太网适配器尚未准备好

ifconfig 失败,因为 FreeBSD 上的 USB 以太网适配器尚未准备好

我有一个通过 USB-C 连接的以太网适配器,其配置在我的 中/etc/rc.conf。系统启动时,配置失败,因为加载了 USB 堆栈配置已启动,因此设备尚不存在。

有没有办法调整启动顺序或其他机制来解决这个问题?

答案1

USB NIC 似乎需要一定的时间才能可用,有时在“netif”服务启动后就会出现这种情况。这会导致网络接口丢失和服务器崩溃。

一个解决方案是在启动“netif”服务之前插入一个短暂的延迟,以便有更多时间让 NIC 可用。这可以通过添加一个简单的 RC 脚本来实现。

例如,添加一个名为 的文件/usr/local/etc/rc.d/ourdelay,其中包含:

#!/bin/sh

# PROVIDE: ourdelay
# REQUIRE: FILESYSTEMS
# BEFORE:  netif
# KEYWORD: nojail

. /etc/rc.subr

name="ourdelay"

rcvar="${name}_enable"
start_cmd="${name}_start"
stop_cmd=":"

: ${ourdelay_enable:="NO"}
: ${ourdelay_time:="5"}

ourdelay_start()
{
    echo "Begin delay of ${ourdelay_time} seconds"
    sleep ${ourdelay_time}
    echo "Finish delay of ${ourdelay_time} seconds"
}

load_rc_config $name
run_rc_command "$1"

该文件需要设置执行位,使用以下命令:

# chmod 555 /usr/local/etc/rc.d/ourdelay

/etc/rc.conf然后在您的或文件中启用它/etc/rc.conf.local,使用:

ourdelay_enable="YES"

相关内容