Problem with systemd starting watchdog

6,631

Solution 1

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

Solution 2

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
Share:
6,631

Related videos on Youtube

Milliways
Author by

Milliways

Updated on September 18, 2022

Comments

  • Milliways
    Milliways over 1 year

    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!

  • Paul
    Paul over 6 years
    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.