udhcpc是如何执行的以及如何更改它?

udhcpc是如何执行的以及如何更改它?

我正在开发一个嵌入式系统,它使用 udhcpc 作为其 DHCP 客户端。它似乎正在使用以下参数运行:

/usr/share/udhcpc # ps | grep dhcp 5366 root 2432 S udhcpc -R -b -p /var/run/udhcpc.eth0.pid -i eth0

我想更改参数或运行我自己的 DHCP 客户端。我搜索了一下,我认为这与 ifup 和 /etc/network/interfaces 有关。

iface eth0 inet dhcp

但我没有找到修改 DHCP 客户端的方法。

我想知道

  1. 如何将参数更改为 udhcpc,以及
  2. 是否可以在不杀死 udhcpc 的情况下运行我自己的 DHCP 客户端

谢谢!

答案1

您的系统似乎是 Debian 的轻量级版本/变体,基于busybox.

busybox通常用于恢复介质或资源有限的嵌入式系统。

如需修改参数,可udhcpc自动调用。

您可以更改/etc/network/interfaces为:

iface eth0 inet manual
   pre-up /sbin/udhcpc -R -b -p /var/run/udhcpc.eth0.pid -i eth0

至于运行另一个 DHCP 客户端,您必须安装它;但是,udhcpc除非您有其他接口,否则您必须切换它。

请记住,它udhcpc只是 的一部分busybox,它只是一个指向为您提供工作环境的全局二进制文件的链接,因此,您不会节省任何切换 DHCP 客户端的空间。

答案2

Martin Trenkmann 提出的解决方案对我不起作用(使用 udhcpc_opts)。但是,在我的系统上添加以下行即可/etc/network/interfaces工作:

auto eth0
iface eth0 inet dhcp
        hostname myhostname

这使得 BusyBox 执行:

$ ps aux| grep dhc
 1685 root     /sbin/udhcpc -n -p /run/udhcpc.eth0.pid -i eth0 -x hostname:myhostname

(发现于https://wiki.alpinelinux.org/wiki/Udhcpc

答案3

如何将参数更改为udhcpc?

您可以用于udhcpc_opts此用途。

iface eth0 inet dhcp
  udhcpc_opts -t 10
  ...

上面的例子告诉我们乌兹别克斯坦最多尝试 10 次才能获得租约。

相关内容