3

I've been struggling to solve this for 2 or 3 days now. I am using Yocto to customize a Linux build. I have a systemd service called app2.service as below.

[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

Below is the bottom of my .bb recipe file.

SYSTEMD_SERVICE_${PN} = "app2.service" is the Yocto equivalent of systemctl enable 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"

However, when my device starts , the service does not.

When I check the status of my service with systemctl status app2.service , I get the following

● app2.service - app2
 Loaded: loaded (/lib/systemd/system/app2.service; disabled; vendor 
preset: enabled)
   Active: inactive (dead)**

I cannot understand this. When I then manually enable it with systemctl enable app2.service , it works fine.

It should be automatically enabled the way I have it specified in the recipe file. I'd appreciate any help with this.

Also adding the following to the bottom of my recipe file doesn't work either :

SYSTEMD_AUTO_ENABLE_${PN} = "enable"
Engineer999
  • 1,111
  • 2
  • 15
  • 32
  • 1
    For anyone playing along at home (or via Stack Overflow), the [SO version of this question](https://stackoverflow.com/q/56893978/4957508) has been closed there as off-topic, so it's perfectly at-home here at U&L. – Jeff Schaller Jul 05 '19 at 14:42
  • @JeffSchaller It is still a software-related question relating to using Yocto and Bitbake. It was more suitable on SO to be honest – Engineer999 Jul 05 '19 at 16:55
  • The daemon creates a pid file. Maybe it is written as an old style daemon, in which case Type should be forking instead of simple in the service file. What does the log say? – Johan Myréen Jul 06 '19 at 06:18
  • Note you should not be using `&&` in any execstart*=. These are not shell commands. Only `;` (with spaces) can be used as a separator. – meuh Jul 07 '19 at 14:48
  • @Engineer999, did you ever solve this problem? – Nick Feb 15 '21 at 22:27
  • I'm also encountering the same issue. – Micrified Jul 12 '21 at 09:21

0 Answers0