# 90-mirror-wall-selfheal.conf — make a hung wall recover on its own. # # Installed by install-kiosk.sh to /etc/sysctl.d/. Applied at boot by # systemd-sysctl, and immediately by `sysctl --system` in the installer. # # The trade this makes: a wall whose kernel has oopsed, deadlocked or soft-locked # is a panel showing a frozen frame forever, in a room nobody is in. Rebooting # into itself is always the better outcome, so every one of these escalates to a # reboot. Reasoning and the incident behind it: ../kiosk-silverblue.md # ("When the wall hangs"). # # To revert a single line: drop a file with a higher-numbered name in the same # directory, e.g. /etc/sysctl.d/91-mirror-wall-quiet.conf containing # "kernel.panic_on_oops = 0", then `sudo sysctl --system`. # The lockup detectors themselves (default on, pinned here so a future base # image change cannot silently turn them off). kernel.watchdog = 1 # A soft lockup (a CPU spinning in kernel mode with preemption off) or a hard # lockup (interrupts disabled; caught by the NMI watchdog) panics instead of # only printing "watchdog: BUG: soft lockup" into a journal nobody reads. kernel.softlockup_panic = 1 kernel.hardlockup_panic = 1 # An oops used to leave the box nominally up with its display driver dead — the # worst case, because PID 1 stays healthy and so nothing else would reset it. kernel.panic_on_oops = 1 # Panic, then reboot 30s later. Long enough for the console to be read and for # the filesystems to be sync'ed by the panic path; short enough that nobody # waits for it. 0 would mean "sit there forever", which is the bug. kernel.panic = 30 # Not set here on purpose: kernel.hung_task_panic does not exist in the Fedora # 44 kernel build (CONFIG_DETECT_HUNG_TASK is off). A task blocked on I/O is # caught by the watchdog in 90-mirror-wall-watchdog.conf instead.