C ++ Qtアプリケーションは、-qws
スイッチを指定することにより、Xなしでグラフィカルに実行されます。そのため、BeagleBone Blackのグラフィカル環境をアンインストールして無効にしました。ボードの電源を入れると、標準のテキストログイン画面が表示されます。
空のパスワードでrootとしてログインすると、タッチスクリーンなどの設定を行うスクリプトを実行して、アプリケーションを起動できます。これは問題なく機能します。
キーボードやマウスが接続されていない産業用キャビネットではバンドル全体が稼働しているため、ブートごとにこのアプリケーションを自動起動する必要があります。それを実現するために、systemdサービスを作成しましたが、残念ながら機能しません。システムを再起動すると、アプリケーションはほんの数秒間表示されますが、ほとんど瞬時に折りたたまれてログイン画面に戻ります。
ログインしてサービスを開始しようとしても、機能しません。これはsystemctl status ivt.service
言うことです:
ivt.service - IVT Startup Routines
Loaded: loaded (/lib/systemd/system/ivt.service; enabled)
Active: failed (Result: exit-code) since Sat 2000-01-01 00:35:26 UTC; 1min 39s ago
Process: 499 ExecStart=/usr/bin/ivtstartup.sh (code=exited, status=139)
Main PID: 403 (code=exited, status=139)
CGroup: name=systemd:/system/ivt.service
Jan 01 00:35:26 beaglebone ivtstartup.sh[499]: Shutdown clients...
Jan 01 00:35:26 beaglebone ivtstartup.sh[499]: Shutdown servers...
Jan 01 00:35:26 beaglebone ivtstartup.sh[499]: Shutdown PaPort1 ...
Jan 01 00:35:26 beaglebone ivtstartup.sh[499]: PaPort1 shutdown completed.
Jan 01 00:35:26 beaglebone ivtstartup.sh[499]: SYSTEM-SHUTDOWN COMPLETE.
Jan 01 00:35:26 beaglebone ivtstartup.sh[499]: Unload drivers...
Jan 01 00:35:26 beaglebone ivtstartup.sh[499]: CSystemManager::UnloadServers PaPort1
Jan 01 00:35:26 beaglebone ivtstartup.sh[499]: Unload drivers completed.
Jan 01 00:35:26 beaglebone systemd[1]: Failed to start IVT Startup Routines.
Jan 01 00:35:26 beaglebone systemd[1]: Unit ivt.service entered failed state
これは、サービスで実行するスクリプトです(で/usr/bin/ivtstartup.sh
):
#!/bin/bash
ifconfig eth0 172.17.6.136 netmask 255.255.248.0 up
route add default gw 172.17.1.200
echo "nameserver 172.17.1.51" > /etc/resolv.conf
ln -s /dev/ttyO2 /dev/ttyM0
/home/root/testbg &
(
export TSLIB_TSDEVICE="/dev/input/touchscreen0";
export TSLIB_CALIBFILE="/etc/pointercal";
export QWS_MOUSE_PROTO="Tslib:/dev/input/touchscreen0";
bash -c '/home/root/testgui -qws';
)
そして最後に、これがサービス/etc/systemd/system/ivt.service
です:
[Unit]
Description=IVT Startup Routines
[Service]
Type=forking
ExecStart=/usr/bin/ivtstartup.sh
[Install]
WantedBy=multi-user.target
ログインして/usr/bin/ivtstartup.sh
手動で実行すると、すべてが機能します。アプリケーションtestbg
はバックグラウンドで実行され(シリアル通信などに使用されます)、testgui
表示され、期待どおりに動作します。
その構成の問題は何ですか?手動でログインせずにそのスクリプトを自動的に開始する別の方法はありますか?前もって感謝します!
この投稿で答えが見つかるかもしれませんか?起動時にシェルスクリプトを実行する方法
—
JeromeLEKIEFFRE