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 次才能獲得租約。

相關內容