0

I am trying to enable the watchdog service (on Raspbian Jessie).

I have installed watchdog and (hopefully) configured it. sudo systemctl start watchdog seems to start it OK

systemctl status watchdog.service shows it running:-

● watchdog.service - watchdog daemon
   Loaded: loaded (/lib/systemd/system/watchdog.service; static)
   Active: active (running) since Mon 2017-02-20 15:52:46 AEDT; 22s ago
  Process: 1828 ExecStart=/bin/sh -c [ $run_watchdog != 1 ] || exec /usr/sbin/watchdog $watchdog_options (code=exited, status=0/SUCCESS)
  Process: 1824 ExecStartPre=/bin/sh -c [ -z "${watchdog_module}" ] || [ "${watchdog_module}" = "none" ] || /sbin/modprobe $watchdog_module (code=exited, status=0/SUCCESS)
 Main PID: 1831 (watchdog)
   CGroup: /system.slice/watchdog.service
           └─1831 /usr/sbin/watchdog

When I try to enable it with sudo systemctl enable watchdog I get this strange output

Synchronizing state for watchdog.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d watchdog defaults
Executing /usr/sbin/update-rc.d watchdog enable
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
   a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
   D-Bus, udev, scripted systemctl call, ...).

Trying sudo update-rc.d watchdog enable did not seem to be successful either systemctl list-units | grep watchdog

cat /lib/systemd/system/watchdog.service indeed has no [Install] section

[Unit]
Description=watchdog daemon
Conflicts=wd_keepalive.service
After=multi-user.target
OnFailure=wd_keepalive.service

[Service]
Type=forking
EnvironmentFile=/etc/default/watchdog
ExecStartPre=/bin/sh -c '[ -z "${watchdog_module}" ] || [ "${watchdog_module}" = "none" ] || /sbin/modprobe $watchdog_module
ExecStart=/bin/sh -c '[ $run_watchdog != 1 ] || exec /usr/sbin/watchdog $watchdog_options'
ExecStopPost=/bin/sh -c '[ $run_wd_keepalive != 1 ] || false'

[Install]

How can I debug this, and get watchdog to run on boot


I added the following to /lib/systemd/system/watchdog.service

[Install]
WantedBy=multi-user.target

watchdog now starts. I will need to test to ensure that it works!

3

This is a known Debian bug. The systemd integration of the Debian watchdog package has gone through several rounds, varying quite wildly. The watchdog package that went out as Debian 8 was actually non-functional, as you have discovered. That wasn't picked up by pre-release testing.

The bug has been fixed for version 5.15-1 of the package, alongside another fix that corrects faulty service unit syntax (also visible in your service unit). This version is not available in Debian 8 backports, although two requests have been made (and apparently ignored) for it to be.

Further reading

  • 1
    Could you please tell what should do I, the ordinary user of OSMC on Raspberry Pi 3, to make watchdog work and start automatically? Writing/not writing to /dev/watchdog works. Fine that you provided some links where are some informations, but I do not know what to do with them. – Paul Dec 6 '17 at 8:39
1

For armbian, you can install updated package manually:

wget http://ftp.debian.org/debian/pool/main/w/watchdog/watchdog_5.15-2_armhf.deb
dpkg -i watchdog_5.15-2_armhf.deb
systemctl enable watchdog

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.