]> rtime.felk.cvut.cz Git - novaboot.git/commit
server: Fix delayed power off
authorMichal Sojka <michal.sojka@cvut.cz>
Thu, 18 Nov 2021 17:58:42 +0000 (18:58 +0100)
committerMichal Sojka <michal.sojka@cvut.cz>
Thu, 18 Nov 2021 18:11:08 +0000 (19:11 +0100)
commitaeb438e019b6b3b1e3a4650622dd7e5fd1062fd1
tree91ae169903ddb05868f033ef353b8fb457178b27
parentd9d607b41436e883bec6fea2f1bf61df21a5781c
server: Fix delayed power off

Th novaboot-delayed-power-off.service was meant to activate
system-level systemd timer at uses session shutdown. However, this
never worked, because an user service cannot be activated as a part of
session shutdown, because each service depends on app.slice and this
slice is being stopped in the shutdown sequence, which results in
removing the service start request from the shutdown transaction. This
behavior is demonstrated by the systemd debug log below:

    Pulling in novaboot-delayed-power-off.service/start from shutdown.target/start
    Added job novaboot-delayed-power-off.service/start to transaction.
    Pulling in app.slice/start from novaboot-delayed-power-off.service/start
    Pulling in novaboot-delayed-power-off.service/stop from app.slice/stop
    Added job novaboot-delayed-power-off.service/stop to transaction.
    Keeping job novaboot-delayed-power-off.service/stop because of app.slice/stop
    novaboot-delayed-power-off.service: Deleting job novaboot-delayed-power-off.service/start as dependency of job app.slice/start
    Keeping job novaboot-delayed-power-off.service/stop because of app.slice/stop
    Keeping job novaboot-delayed-power-off.service/stop because of app.slice/stop
    Keeping job novaboot-delayed-power-off.service/stop because of app.slice/stop
    Found redundant job novaboot-delayed-power-off.service/stop, dropping from transaction.

Therefore, we don't use a service with ExecStart, but use ExecStop to
start the shutdown timer and start the service by novaboot-shell
whenever the board is powered on.
server/novaboot-shell
server/systemd/novaboot-delayed-power-off.service