Я хочу запустить службу busybox udhcpd с помощью systemd.
У меня есть простой файл /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?
У меня это работает с несколькими модификациями.
Сначала мне пришлось использовать флаг -f при запуске udhcpd из systemd. Это выводит 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
Все остальные файлы, указанные выше, необходимы. Они нормально работают как есть.