Зависимости systemd от девайса
Удев запускает
SUBSYSTEM=="input", KERNEL=="event[0-9]*", ENV{ID_USB_DRIVER}=="usbtouchscreen", SYMLINK+="input/ts", MODE="0600" ,TAG+="systemd" ENV{SYSTEMD_WANTS}="ts_uinput.service"
Сервис
[Unit]
Description=touchscreen input
BindsTo=dev-input-ts.device
After=dev-input-ts.device
RequiresMountsFor=/etc/ts.env
[Service]
Type=forking
EnvironmentFile=/etc/ts.env
ExecStartPre=/opt/ts/prestart.sh
ExecStart=/usr/bin/ts_uinput -v -d
ExecStartPost=/opt/ts/poststart.sh
В prestart выполняю калибровку тача. Но сервис с окошком запускается до запуска ts_uinput несмотря на зависимости
[Unit]
Description=Kiosk
Requires=ts_uinput.service
BindsTo=dev-input-ts_uinput.device
[Service]
Type=simple
EnvironmentFile=/etc/kiosk.env
ExecStart=/opt/kiosk/bin/kiosk
WorkingDirectory=/opt/kiosk/
Restart=on-failure
RestartSec=30
User=kiosk
[Install]
WantedBy=multi-user.target
/dev/input/ts_uinput ссылка создается udev на устройство созданное демоном ts_uinput
SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{name}=="ts_uinput", SYMLINK+="input/ts_uinput", MODE="0666"
Ответы (1 шт):
Автор решения: eri
→ Ссылка
#!/bin/bash
while [ "$(systemctl is-active ts_uinput)" == "activating" ]
do
sleep 1
done
скрипт в ExecStartPre сервиса киоска добавил.