[systemd-devel] timesyncd on systems without battery

Lennart Poettering lennart at poettering.net
Mon Jan 4 15:36:16 UTC 2021


On So, 03.01.21 10:39, Dan Tihelka (dtihelka at gmail.com) wrote:

> Hello,
> I run systemd on a NAS without internal-clock-holding battery, so I think that
> the systemd-timesyncd sets the time to the last known value after restart and
> syncs it from the network when on-line. Is it right?

Yes.

> Now, I have a shutdown timer unit, which powers the NAS off at the given time.
> However, sometimes (about 50% of cases), when the device is powerd-on, it
> switches off immediately. When switched-on again, it boots as
> expected.

Why does it do so, because the clock is incorrectly set?

> The question is, is there a way of fixing the issue? I have tried to add sleep
> to skip to the next minute, but unsuccessfully.

Two options:

1. Consider explcitly ordering your timer unit after
   "time-set.target". (This will be done implicitly starting with the
   upcoming release of systemd, see
   fe934b42e480473afba8a29a4a0d3d0e789543ac). THis effectively means
   timesyncd has to finish initialization before the timer is
   started, and that in turn means the clock is roughly monotonic for
   all calculations of the calendar time of the timer unit.

2. Consider enabling "systemd-time-wait-sync.service", which is a
   small service that blocks until the clock is synchronized. Calendar
   based timer units are implicitly ordered after it, once
   enabled. This means the timers will only start once the clock is
   synced to some network reference clock. This is a much stronger
   option, but means the boot process will be delayed based on network
   availability.

Coincidentally we documented this recently in more detail, see git
commit b149d230ea23c14bac2dfe79c47e58782623200f which also will be in
the next release.

Lennart

--
Lennart Poettering, Berlin


More information about the systemd-devel mailing list