这是我的 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