![覆盖 BusyBox 中 ifup 使用的 udchcp 标志](https://linux22.com/image/64856/%E8%A6%86%E7%9B%96%20BusyBox%20%E4%B8%AD%20ifup%20%E4%BD%BF%E7%94%A8%E7%9A%84%20udchcp%20%E6%A0%87%E5%BF%97.png)
我正在开发一个系统,但我没有为其创建 BusyBox 版本。我不想重新编译 BusyBox,因为担心我的配置与原始配置不完全匹配,除此之外,系统在这个版本上运行得很好。如果我知道一种方法来提取正在运行的 BusyBox 安装的配置(就像正在运行的内核一样),我可能会愿意这样做。
我试图弄清楚如何禁用用于udhcpc
从ifup
命令调用的开关。我可以看到默认值编译到我正在使用的构建中。他们是-R -n -p
。我希望这个过程进入后台,我认为使用udhcpc_opts -b
in/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 进程可以分叉到后台并保持运行。