覆盖 BusyBox 中 ifup 使用的 udchcp 标志

覆盖 BusyBox 中 ifup 使用的 udchcp 标志

我正在开发一个系统,但我没有为其创建 BusyBox 版本。我不想重新编译 BusyBox,因为担心我的配置与原始配置不完全匹配,除此之外,系统在这个版本上运行得很好。如果我知道一种方法来提取正在运行的 BusyBox 安装的配置(就像正在运行的内核一样),我可能会愿意这样做。

我试图弄清楚如何禁用用于udhcpcifup命令调用的开关。我可以看到默认值编译到我正在使用的构建中。他们是-R -n -p。我希望这个过程进入后台,我认为使用udhcpc_opts -bin/etc/networking/interfaces可以解决这个问题。我将叉子放到后台,然后进程就终止了。如果我只是称其udhcpc -b为无限期地分叉到后台。

有没有办法-n通过我可以放入的东西来覆盖开关udhcpc_opts?谢谢。

答案1

遇到同样的问题,不想重新编译 busybox 并想使用这些标志:“-t 0 -b”让 udhcpc 在后台永远尝试,但无法避免 ifup 默认传递的标志“-n”。

作为一个超级黑客(但它对我有用),我在 /etc/network/interfaces 中使用了以下 udhcpc_opts 选项:

udhcpc_opts -t 0 -T 10 -A 20 -S &

最后的“&”起到了作用,因为它将 udhcpc 作为后台任务启动,并且几乎与“-b”标志相同,但如果在命令行中指定了“-n”也可以工作。

请注意,必须将其添加到iface选项中才能工作,例如:

iface eth0 inet dhcp
    udhcpc_opts -t 0 -T 10 -A 20 -S &

答案2

的行为udhcpc -n -b已被纠正为像udhcpc -b使固定为了busybox 错误 #11691

因此,从 busybox-1.31(目前尚未发布)开始,udhcpc_opts -b应该可以按预期工作。

答案3

我发现我无法覆盖默认开关。我能够将开关附加到 udhcpc 的默认调用中,但是分叉​​到后台的开关-b和失败时退出-n并不相互排斥。因此分叉到后台不会停止退出行为。

要将开关附加到命令中,我必须将udhcpc_opts其添加到 /etc/network/interfaces 文件的 ethX 节中。

最终我不得不重新编译 busybox,以便 udhcpc 进程可以分叉到后台并保持运行。

相关内容