我有一个通过 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"