The Want: открытие программы при загрузке в композиторе Weston
Что я пробовал: создание сценария инициализации SysV с низким приоритетом
Что работает: Weston запускается, но моя программа не
Здравствуйте, я работаю над программой во встроенной среде. Программа основана на Qt, и я хочу, чтобы она запускалась при загрузке устройства. Это устройство использует Debian-подобный дистрибутив, за исключением того, что при загрузке оно загружается прямо в композитор Weston, а не в систему для входа в систему / рабочего стола.
На данный момент я создал стандартный скрипт /etc/init.d
(показанный ниже), который запускает мою программу с помощью start-stop-daemon
и имеет простой переключатель start-stop. Это работает, если вызывается вручную, однако, использование update-rc.d appService defaults
приводит к тому, что программа не запускается при загрузке.
Если я пытаюсь вручную запустить сервис, который автоматически генерирует (systemctl start appService
), я получаю сообщение об ошибке XDG_RUNTIME_DIR. Какие??? Почему X мешает мне?
Изучая файл .service, который автоматически генерирует systemd (также показано ниже), программа хочет запустить до достижения уровня запуска multi-user.target
.
Сценарий
#!/bin/sh
DIR="/home/root"
DAEMON=$DIR/appname
DAEMON_OPTS=""
DAEMON_NAME="APP"
PIDFILE=/var/run/$DAEMON_NAME.pid
DAEMON_USER="root"
case "$1" in
start)
echo "Starting $DAEMON_NAME"
ifconfig eth1 192.168.1.233
start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chuid $DAEMON_USER --exec $DAEMON -- $DAEMON_OPTS
;;
stop)
echo "Stopping $DAEMON_NAME"
start-stop-daemon --stop --pidfile $PIDFILE --retry 10
;;
*)
echo "Usage: /etc/init.d/appService {start|stop}"
exit 1
;;
esac
exit 0
Сервисный файл:
[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/init.d/appService
Before=multi-user.target
Before=multi-user.target
Before=multi-user.target
Before=graphical.target
Before=shutdown.target
Before=umountnfs.service
Before=rng-tools.service
Before=thermal-zone-init.service
Before=gdbserverproxy.service
After=dropbear.service
After=tiipclad-daemon.service
After=telnetd.service
After=rc.pvr.service
After=uim-sysfs.service
After=alignment.service
Conflicts=shutdown.target
[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/etc/init.d/appService start
ExecStop=/etc/init.d/appService stop
Если я пытаюсь запустить службу вручную (systemctl start appService
), я получаю ошибку XDG_RUNTIME_DIR. Какие??? Почему X мешает мне?
Как я могу исправить этот скрипт? Я хочу, чтобы он запускался после запуска композитора Weston