Я изменяю файл рецепта Yocto .bb, чтобы добавить и включить 3 службы systemd в моем образе. Ниже показана нижняя часть моего файла рецептов с добавлением и включением только двух сервисов. Это работает!
app1.service - это однократная базовая служба, которая запускается один раз, и app2.service ожидает завершения app1.service в первую очередь, используя « After = app1.service» в файле app2.service. Все это прекрасно работает без проблем:
FILES_${PN} += "${sysconfdir} \
${systemd_unitdir}/system/app1.service \
${systemd_unitdir}/system/app2.service \
"
inherit systemd
SYSTEMD_SERVICE_${PN} = "app1.service app2.service"
Теперь я добавляю третий сервис app3.service, как показано ниже. Эта служба также должна дождаться, пока app1.service завершит работу таким же образом
FILES_${PN} += "${sysconfdir} \
${systemd_unitdir}/system/app1.service \
${systemd_unitdir}/system/app2.service \
${systemd_unitdir}/system/app3.service \
"
inherit systemd
SYSTEMD_SERVICE_${PN} = "app1.service app2.service app3.service"
Однако, когда я запускаю свое устройство, запускается только app3.service, где app1.service и app2.service сообщают следующее, как показано ниже, о том, что служба каким-то образом не включена:
app1.service - app1
Loaded: loaded (/lib/systemd/system/app1.service; disabled; vendor
preset: enabled)
Active: inactive (dead)
Это я не могу понять. Я ожидаю, что все три службы будут включены, потому что я добавил их в SYSTEMD_SERVICE _ $ {PN}.
Что-то не так с добавлением трех служб, как я делаю в файле рецепта .bb? Спасибо
app1.service:
[Unit]
Description=app1
ConditionPathExists=/app
After=network.target uncrypte_app.service uncrypte_data.service
[Service]
Type=oneshot
WorkingDirectory=/app
ExecStart=/app/app1
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
app2.service:
[Unit]
Description=app2
ConditionPathExists=/app
After=network.target uncrypte_app.service uncrypte_data.service app1.service
[Service]
Type=simple
WorkingDirectory=/app
ExecStartPre=/bin/rm -f /var/run/app2.pid
ExecStart=/app/app2 start
ExecStop=/app/app2 stop
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
app3.service:
[Unit]
Description=app3
ConditionPathExists=/storage
After=network.target uncrypte_app.service uncrypte_data.service app1.service
[Service]
WorkingDirectory=/storage
ExecStart=/storage/app3
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target