私はこの問題を解決するために2〜3日間努力してきました。私はYoctoを使ってLinuxビルドをカスタマイズしています。以下のようにapp2.serviceというシステムサービスがあります。
[Unit]
Description=app2
ConditionPathExists=/app
After=network.target uncrypte_app.service uncrypte_data.service
[Service]
Type=simple
WorkingDirectory=/app
ExecStartPre=/bin/rm -f /var/run/appd.pid
ExecStartPre=/app/provisiondevice && /storage/revertupdate
ExecStart=/app/appd start
ExecStop=/app/appd stop
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
以下は私の.bbレシピファイルの一番下です。
SYSTEMD_SERVICE_${PN}="app2.service"Yoctoは次のとおりです。systemctlはapp2.serviceを有効にします。
FILES_${PN} += "app"
FILES_${PN} += "/persist_storage \
/storage \
"
FILES_${PN} += "${sysconfdir} \
${systemd_unitdir}/system/app2.service \
"
inherit systemd
SYSTEMD_SERVICE_${PN} = "app2.service"
ところで、デバイスが起動するとサービスは開始されません。
サービスの状態を確認するときsystemctl 状態 app2.service、私は次のような結果を得る
● app2.service - app2
Loaded: loaded (/lib/systemd/system/app2.service; disabled; vendor
preset: enabled)
Active: inactive (dead)**
私はこれを理解していません。手動で有効にするとsystemctlはapp2.serviceを有効にします。、良い結果。
レシピファイルで指定したとおりに自動的に有効にする必要があります。助けてくれてありがとう。
また、レシピファイルの下部に以下を追加しても機能しません。
SYSTEMD_AUTO_ENABLE_${PN} = "enable"