Page MenuHomePureOS Tracker

purism-power-optimisations causes error in boot.log
Closed, ResolvedPublic

Description

This bug report is based on https://forums.puri.sm/t/purism-power-optimisations-service-fails-after-recent-update/3331

I'm seeing the following in /var/log/boot.log:

[FAILED] Failed to start Power/battery optimisations for Purism devices.
See 'systemctl status purism-power-optimisations.service' for details.

Doing that:

root@melanobombus:/home/alex# systemctl status purism-power-optimisations.service
● purism-power-optimisations.service - Power/battery optimisations for Purism devices
   Loaded: loaded (/lib/systemd/system/purism-power-optimisations.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2018-08-02 16:27:34 CEST; 32s ago
     Docs: https://source.puri.sm/pureos/packages/purism-power-optimisations
  Process: 713 ExecStart=/usr/lib/pureos-power-optimisations/apply (code=exited, status=203/EXEC)
 Main PID: 713 (code=exited, status=203/EXEC)

Aug 02 16:27:34 melanobombus systemd[1]: Starting Power/battery optimisations for Purism devices...
Aug 02 16:27:34 melanobombus systemd[713]: purism-power-optimisations.service: Failed to execute command: No such file or directory
Aug 02 16:27:34 melanobombus systemd[713]: purism-power-optimisations.service: Failed at step EXEC spawning /usr/lib/pureos-power-optimisations/apply: No such file or directory
Aug 02 16:27:34 melanobombus systemd[1]: purism-power-optimisations.service: Main process exited, code=exited, status=203/EXEC
Aug 02 16:27:34 melanobombus systemd[1]: purism-power-optimisations.service: Failed with result 'exit-code'.
Aug 02 16:27:34 melanobombus systemd[1]: Failed to start Power/battery optimisations for Purism devices.

I'll note that I have /usr/lib/purism-power-optimisations/purism-power-optimisations but nothing like the path mentioned in the message above:

$ sudo ls /usr/lib/pureos*
ls: cannot access '/usr/lib/pureos*': No such file or directory

This is a Librem 13v2, I think. This doesn't seem to affect my fan. I don't seem to notice anything negative at all, actually. It's just that error message while booting.

I decided to investigate. First, find the file name:

$ systemctl list-unit-files purism-power-optimisations.service
...
$ locate purism-power-optimisations
/etc/systemd/system/multi-user.target.wants/purism-power-optimisations.service
...

Checking it out:

$ grep -i exec /etc/systemd/system/multi-user.target.wants/purism-power-optimisations.service
ExecStart=/usr/lib/pureos-power-optimisations/apply

OK, so that's the file it wants to start, which doesn't exist on my system!

$ ls /usr/lib/pureos*
ls: cannot access '/usr/lib/pureos*': No such file or directory

I wonder whether the simple thing we need to do is change that line and use /usr/lib/purism-power-optimisations/purism-power-optimisations instead. If I run it:

$ /usr/lib/purism-power-optimisations/purism-power-optimisations 
vm.dirty_writeback_centisecs = 6000
modprobe cpufreq_stats failedLoaded 217 prior measurements
RAPL device for cpu 0
RAPL Using PowerCap Sysfs : Domain Mask f
RAPL device for cpu 0
RAPL Using PowerCap Sysfs : Domain Mask f
Devfreq not enabled
To show power estimates do 8 measurement(s) connected to battery only
Leaving PowerTOP

I have no idea if this is what we want to do. On the last line, it calls powertop --auto-tune. That doesn't sound too bad! :)

What do you think?

OK, so now I'm wondering where this error originates. I have a file on the disk and a different file that is wanted. Let's look at the packages involved.

$ dpkg -S /usr/lib/purism-power-optimisations/purism-power-optimisations 
purism-power-optimisations: /usr/lib/purism-power-optimisations/purism-power-optimisations
root@melanobombus:/home/alex# apt show purism-power-optimisations
Package: purism-power-optimisations
Version: 0.5.0
Priority: optional
Section: misc
Source: purism-device-config
Maintainer: PureOS Developers <pureos-project@lists.puri.sm>
Installed-Size: 425 kB
Depends: dmidecode, iw, powertop
Homepage: https://source.puri.sm/pureos/packages/purism-device-config
Download-Size: 11.8 kB
APT-Manual-Installed: no
APT-Sources: https://repo.puri.sm/pureos green/main amd64 Packages
Description: Power/battery optimisations for Purism devices
 Installing this package will apply a number of power/battery optimisationson
 system start.
 .
 Purism laptops are specifically detected; installing this package on a
 non-Purism device will succeed but will do nothing at boot time.

OK, perhaps I can just reinstall this package and it'll fix itself?

$ apt install --reinstall purism-power-optimisations
...
Setting up purism-power-optimisations (0.5.0) ...
Job for purism-power-optimisations.service failed because the control process exited with error code.
See "systemctl status purism-power-optimisations.service" and "journalctl -xe" for details.

Same problem!

So how about the systemd service?

$ for f in $(locate purism-power-optimisations.service); do dpkg -S $f; done
dpkg-query: no path found matching pattern /etc/systemd/system/multi-user.target.wants/purism-power-optimisations.service
purism-power-optimisations: /lib/systemd/system/purism-power-optimisations.service
dpkg-query: no path found matching pattern /var/lib/systemd/deb-systemd-helper-enabled/purism-power-optimisations.service.dsh-also
dpkg-query: no path found matching pattern /var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/purism-power-optimisations.service

OK, so /lib/systemd/system/purism-power-optimisations.service is the file that's provided by the same package. This should match. So, does it have the right ExecStart in there? Nope:

$ grep -i exec /lib/systemd/system/purism-power-optimisations.service
ExecStart=/usr/lib/pureos-power-optimisations/apply

Still the wrong target. So I think this is a bug.

Event Timeline

kensanata created this task.Aug 2 2018, 08:48
kensanata updated the task description. (Show Details)
mak assigned this task to chris.lamb.Sep 7 2018, 10:46
chris.lamb closed this task as Resolved.Sep 8 2018, 04:36

Dear all,

This was fixed in purism-power-optimisations version 0.5.1. Thank you for reporting it here and naturally please re-open if you can reproduce with this version or greater.

— Chris