# 90-mirror-wall-watchdog.conf — PID 1 must kick the hardware watchdog. # # Installed by install-kiosk.sh to /etc/systemd/system.conf.d/, but ONLY when the # box actually has a watchdog device (/dev/watchdog). Takes effect on # `systemctl daemon-reexec`, which the installer runs; a reboot also picks it up. # # This is the layer that catches what the sysctls cannot. The soft/hard lockup # detectors need kernel work to keep happening; a hardware watchdog needs the # opposite — if PID 1 stops writing /dev/watchdog0 for one whole timeout, the # chipset resets the machine no matter what the kernel thinks it is doing. That # includes the case we hit on 2026-11-02, where the box answered ARP and TCP # handshakes from kernel state while no userspace process could be started. # # 30s is not an arbitrary number: it is the timeout iTCO_wdt initialised itself # with ("heartbeat=30 sec"). systemd kicks at a third of the configured timeout, # so 30s means a kick every 10s. Asking for more than the device supports would # make systemd kick less often than the hardware expires — a self-inflicted # reboot loop — so install-kiosk.sh keeps this at or below the driver's value. # # Cost: a PID-1 stall longer than 30s (a genuinely stuck disk, say) reboots the # wall. On an unattended display that is the intended behaviour. To back off, # raise the number to something under the device timeout, or set 0 and rely on # the sysctls alone: # # printf '[Manager]\nRuntimeWatchdogSec=0\n' | sudo tee /etc/systemd/system.conf.d/91-mirror-wall-watchdog-off.conf # sudo systemctl daemon-reexec [Manager] RuntimeWatchdogSec=30s