使用 Systemd 启动 udhcpd (busybox)?

使用 Systemd 启动 udhcpd (busybox)?

我想使用 systemd 启动 busybox udhcpd 服务。

我有一个简单的 /etc/udhcpd.conf 文件:

start           192.168.8.20    #default: 192.168.0.20
end             192.168.8.254   #default: 192.168.0.254
interface       wlan0

这是我的 /lib/systemd/system/udhcpd.service

[Unit]
Description=DHCP Service

[Service]
ExecStart=/usr/sbin/udhcpd /etc/countx-udhcpd.conf
ExecStartPre=/usr/bin/ip-up.sh

[Install]
WantedBy=multi-user.target

这是我的 /usr/bin/ip-up.sh

#!/bin/sh

ip addr add 192.168.8.1 dev wlan0
ip link set wlan0 up

当我手动运行脚本时,一切都正常运行。

但是当我使用 systemd 运行脚本时,它失败了。

systemctl start udhcpd

这是有效的:

/usr/bin/udhcpd-ip-up.sh
/usr/sbin/udhcpd /etc/countx-udhcpd.conf

有人能用 systemd 来运行它吗?

答案1

我做了一些修改后它就可以工作了。

首先,我必须在从 systemd 启动 udhcpd 时使用 -f 标志。这会将 udhcpd 置于前台。虽然这毫无意义,但它确实有效。

其次,我需要等待网络启动后才能运行此程序。

以下是我的修复方法,可以使 /lib/systemd/system/udhcpd.service 正常运行

[Unit]
Description=DHCP Service
# wait for network to come up before we run
After=network.target

[Service]
# -f means foreground--not sure why, but it works now
ExecStart=/usr/sbin/udhcpd -f /etc/countx-udhcpd.conf
ExecStartPre=/usr/bin/udhcpd-ip-up.sh

[Install]
WantedBy=multi-user.target

以上所有其他文件都是必需的。它们按原样正常工作。

相关内容