Problema com o systemd iniciando o watchdog

0

Estou tentando ativar o watchdog service (em Jessie Raspbian).

Eu instalei o watchdog e (espero) o configurei. sudo systemctl start watchdog parece começar tudo bem

systemctl status watchdog.service mostra a execução: -

● 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

Quando tento ativá-lo com sudo systemctl enable watchdog , recebo essa saída estranha

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, ...).

A tentativa de sudo update-rc.d watchdog enable também não foi bem-sucedida unidades de lista systemctl | grep watchdog

cat /lib/systemd/system/watchdog.service na verdade não tem seção [Instalar]

[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]

Como posso depurar isso, e fazer com que o watchdog seja executado na inicialização

Adicionei o seguinte a /lib/systemd/system/watchdog.service

[Install]
WantedBy=multi-user.target

watchdog agora é iniciado. Vou precisar testar para garantir que funcione!

    
por Milliways 20.02.2017 / 06:15

2 respostas

3

Este é um bug conhecido do Debian. A integração systemd do pacote de watchdog do Debian passou por várias rodadas, variando bastante. O pacote de watchdog que saiu como Debian 8 foi realmente não-funcional, como você descobriu. Isso não foi detectado pelo teste de pré-lançamento.

O bug foi corrigido para a versão 5.15-1 do pacote, juntamente com outra correção que corrige a sintaxe da unidade de serviço defeituosa (também visível em sua unidade de serviço). Esta versão não está disponível nos backports Debian 8, embora duas requisições tenham sido feitas (e aparentemente ignoradas) para que sejam.

Leitura adicional

por 20.02.2017 / 07:20
1

Para o armbian, você pode instalar o pacote atualizado manualmente:

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
    
por 15.04.2018 / 14:55