원하는 것:웨스턴 컴포지터에서 부팅 시 프로그램 열기
내가 시도한 것: 우선순위가 낮은 SysV init 스크립트 생성
작동하는 것: Weston이 시작되었지만 내 프로그램이 실행되지 않습니다.
안녕하세요 임베디드 환경에서 프로그램을 개발하고 있습니다. 이 프로그램은 Qt 기반이므로 장치가 부팅될 때 실행되고 싶습니다. 이 장치는 부팅할 때 로그인/데스크톱이 아닌 Weston 컴포지터로 바로 부팅된다는 점을 제외하면 Debian과 유사한 배포판을 사용합니다.
지금까지 내가 수행한 작업은 다음을 /etc/init.d
사용하여 프로그램을 시작 start-stop-daemon
하고 간단한 시작-중지 토글을 포함하는 표준 스크립트(아래 표시)를 생성한 것입니다. 그러나 수동으로 호출하면 작동하며 update-rc.d appService defaults
부팅 시 프로그램이 시작되지 않는 결과를 사용합니다.
수동으로 서비스를 시작하려고 하면 자동으로 생성되는( systemctl start appService
) XDG_RUNTIME_DIR 오류가 발생합니다. 무엇??? X가 왜 내 앞을 가로막고 있는 걸까요?
systemd가 자동 생성하는 .service 파일(아래 참조)을 조사하면 프로그램이 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가 왜 내 앞을 가로막고 있는 걸까요?
이 스크립트를 어떻게 수정할 수 있나요? 웨스턴 컴포지터가 출시된 후에 출시하고 싶습니다.
답변1
X11에서는 앱이 X11에서 제대로 시작되려면 일부 환경 변수를 설정해야 합니다. Weston에서 앱을 실행하려면 어떤 환경 변수를 설정해야 하는지 확인하셨나요?
내 경험상 데스크탑 환경의 "시작 앱" 기능을 사용하는 자동 시작 그래픽 앱에 대한 더 나은 선택은 systemd
. 해당 디자인에는 적절한 환경 변수가 이미 설정되어 있습니다.