Как systemd (v229) обслуживает сторожевой таймер

Я включил hw watchdog в systemd (RuntimeWatchdogSec=10) и считаю, что он действительно был включен:

# dmesg | grep watchdog [ 3.328676] systemd[1]: Hardware watchdog 'OMAP Watchdog', version 0 [ 3.336760] systemd[1]: Set hardware watchdog to 10s.

Затем я хотел проверить, действительно ли система перезагружается, когда systemd перестает работать. Поскольку я не смог найти документацию по systemd относительно того, какой демон systemd поддерживает сторожевой таймер hw, я попытался убить всех демонов systemd одного за другим (systemd-udevd, systemd-timesyncd, systemd-networkd, systemd-journald и т. д.), пока консоль не стала не работает после того, как я убил демона systemd (который имеет символическую ссылку /sbin/init в моей системе). До этого момента моя система все еще не перезагружалась. Любые подсказки?


person brownmonkey    schedule 27.06.2017    source источник
comment
Когда демон systemd убивается, он автоматически перезапускается (что я тоже не знаю, как). Я на самом деле удалил его, так что перезагрузка не удалась. Но даже когда systemd не мог запуститься снова, система все равно не сбрасывалась.   -  person brownmonkey    schedule 27.06.2017


Ответы (1)


Я обнаружил, что демон systemd на самом деле открыл /dev/watchdog:

# lsof /dev/watchdog COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root 4w CHR 10,130 0t0 6871 /dev/watchdog

И в моем ядре CONFIG_WATCHDOG_NOWAYOUT не установлен --> Когда я убил systemd, ни один процесс не открылся /dev/watchdog, а аппаратный сторожевой таймер был просто отключен. Когда я включил CONFIG_WATCHDOG_NOWAYOUT, плата сбрасывается при остановке systemd.

person brownmonkey    schedule 10.07.2017
comment
Как ты убил systemd? Если он работает как PID 1, он не умирает от SIGKILL. - person Liam Kelly; 09.12.2019
comment
Я сделал: # killall init - person brownmonkey; 11.12.2019