システムサービスが自動的に起動しないのはなぜですか?

システムサービスが自動的に起動しないのはなぜですか?

これは私のboondocks-agent.serviceファイルです。私は/lib/systemd/systemにインストールしました。

[Unit]
Description=Boondocks agent
Requires=\
    balena.service 
After=\
    balena.service 

[Service]
Type=simple
Restart=always
RestartSec=10s
WatchdogSec=60
EnvironmentFile=/etc/boondocks-agent/agent.conf
EnvironmentFile=-/tmp/boondocks-agent.conf
ExecStartPre=-/usr/bin/stop-boondocks-agent
ExecStart=/usr/bin/healthdog --healthcheck=/usr/lib/boondocks-agent/boondocks-agent-healthcheck  /usr/bin/start-boondocks-agent
ExecStop=-/usr/bin/stop-boondocks-agent

[Install]
WantedBy=multi-user.target

システムの起動時に起動しないようです。クリーンブート後に表示される状態は次のとおりです。

systemctl status boondocks-agent
boondocks-agent.service - Boondocks agent
   Loaded: loaded (/lib/systemd/system/boondocks-agent.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

起動時に自動的に起動するにはどうすればよいですか?

答え1

あなたは言う、

YOCTOで同等の呼び出しはsystemctl enable次のとおりです。

   SYSTEMD_SERVICE_${PN} = " \
       boondocks-agent.service
       "

私はこれが次のように思う。インストールする提供する。既定では、サービスを有効にするには、以下を追加する必要があります。

SYSTEMD_AUTO_ENABLE_${PN} = "enable"

答え2

起動時に有効にする必要があります。

systemctl enable boondocks-agent

答え3

私も同じ問題があります。サービスを追加し、起動時にタイマーが起動することを期待しています。私のタイマーは決して起動しませんが、手動で起動して期待どおりに永久に実行することができます。私のYoctoプロジェクトがタイマーを作成して起動するために、以下を追加しました。

SYSTEMD_SERVICE_${PN} = " logrotate.service logrotate.timer"

答え4

最近、Yoctoプロジェクトの開発中に同じ問題が発生しました。私はYoctoレシピに次の行を明示的に割り当てました:

SYSTEMD_SERVICE:${PN} = "test.service"
SYSTEMD_AUTO_ENABLE:${PN} = "enable"

しかし、これは私のレシピがsystemdから明示的に継承される必要があることに気づくまでは機能しませんでした。私のレシピに次の行を追加するだけです。

inherit systemd

関連情報