From c05b2737acb3c1b1d91085eb38c183214f478c62 Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Thu, 26 May 2022 23:23:14 -0700 Subject: systemd: Set RebootWatchdogSec to 60s as watchdog The systemd-shutdown sets watchdog timeout to 10m (600 seconds) which is too large, and caused errors when reboot on boars such as rpi4: systemd-shutdown[1]: Failed to set timeout to 10min: Invalid argument The watchog's default value is 60s, so set RebootWatchdogSec to 60s to fix the errors. And can set WATCHDOG_TIMEOUT when needed, for example, the max timeout of rpi4 is 15 seconds. Signed-off-by: Robert Yang --- meta/recipes-core/systemd/systemd_250.5.bb | 8 ++++++++ meta/recipes-extended/watchdog/watchdog-config.bb | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/meta/recipes-core/systemd/systemd_250.5.bb b/meta/recipes-core/systemd/systemd_250.5.bb index 006b2f86ea..6fac27ee56 100644 --- a/meta/recipes-core/systemd/systemd_250.5.bb +++ b/meta/recipes-core/systemd/systemd_250.5.bb @@ -238,6 +238,9 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \ -Dnologin-path=${base_sbindir}/nologin \ -Dumount-path=${base_bindir}/umount" +# The 60 seconds is watchdog's default vaule. +WATCHDOG_TIMEOUT ??= "60" + do_install() { meson_do_install install -d ${D}/${base_sbindir} @@ -337,6 +340,11 @@ do_install() { # add a profile fragment to disable systemd pager with busybox less install -Dm 0644 ${WORKDIR}/systemd-pager.sh ${D}${sysconfdir}/profile.d/systemd-pager.sh + + if [ -n "${WATCHDOG_TIMEOUT}" ]; then + sed -i -e 's/#RebootWatchdogSec=10min/RebootWatchdogSec=${WATCHDOG_TIMEOUT}/' \ + ${D}/${sysconfdir}/systemd/system.conf + fi } python populate_packages:prepend (){ diff --git a/meta/recipes-extended/watchdog/watchdog-config.bb b/meta/recipes-extended/watchdog/watchdog-config.bb index a28d28033b..f138952128 100644 --- a/meta/recipes-extended/watchdog/watchdog-config.bb +++ b/meta/recipes-extended/watchdog/watchdog-config.bb @@ -13,8 +13,15 @@ SRC_URI = " \ file://watchdog.conf \ " +# The default value is 60 seconds when null. +WATCHDOG_TIMEOUT ??= "" + do_install() { install -Dm 0644 ${WORKDIR}/watchdog.default ${D}${sysconfdir}/default/watchdog install -Dm 0644 ${WORKDIR}/watchdog.conf ${D}${sysconfdir}/watchdog.conf + + if [ -n "${WATCHDOG_TIMEOUT}" ]; then + echo "watchdog-timeout = ${WATCHDOG_TIMEOUT}" >> ${D}/etc/watchdog.conf + fi } -- cgit 1.2.3-korg