[systemd-devel] Upstream service file for NTP daemon chrony

Paul Menzel paulepanter at users.sourceforge.net
Sun Jul 1 04:27:18 PDT 2012


Dear systemd folks,


Am Samstag, den 30.06.2012, 01:00 +0200 schrieb Paul Menzel:

> Am Freitag, den 22.06.2012, 11:57 +0200 schrieb Paul Menzel:
> 
> > Fedora ships systemd service files for chrony [1][2].
> > 
> > • chrony-wait.service:
> > 
> >    1 [Unit]
> >    2 Description=Wait for chrony to synchronize system clock
> >    3 After=chronyd.service
> >    4 Requires=chronyd.service
> >    5 Before=time-sync.target
> >    6 Wants=time-sync.target
> >    7 
> >    8 [Service]
> >    9 Type=oneshot
> >   10 # Wait up to ~10 minutes for chronyd to synchronize and the remaining
> >   11 # clock correction to be less than 0.1 seconds
> >   12 ExecStart=/usr/bin/chronyc waitsync 60 0.1
> >   13 RemainAfterExit=yes
> >   14 
> >   15 [Install]
> >   16 WantedBy=multi-user.target
> > 
> > • chronyd.service:
> > 
> >    1 [Unit]
> >    2 Description=NTP client/server
> >    3 After=syslog.target ntpdate.service
> >    4 Conflicts=ntpd.service
> >    5 BindTo=systemd-timedated-ntp.target
> >    6 
> >    7 [Service]
> >    8 Type=forking
> >    9 EnvironmentFile=-/etc/sysconfig/chronyd
> >   10 ExecStartPre=/usr/libexec/chrony-helper generate-commandkey
> >   11 ExecStart=/usr/sbin/chronyd -u chrony $OPTIONS
> >   12 ExecStartPost=/usr/libexec/chrony-helper add-dhclient-servers
> >   13 
> >   14 [Install]
> >   15 WantedBy=multi-user.target
> > 
> > Do these look good enough to get upstream? `systemd-arch-units` refused
> > a pull request [3].
> 
> It was pointed out that the service files above are very Fedora
> specific. Mantas pointed out that Arch Linux now ships unit files
> directly [4]
> 
>         [Unit]
>         Description=Chrony Network Time Daemon
>         
>         [Service]
>         Type=forking
>         ExecStart=/usr/sbin/chronyd
>         PIDFile=/var/run/chronyd.pid
>         
>         [Install]
>         WantedBy=multi-user.target
> 
> and therefore the pull request above was rejected. Furthermore David had
> some great ideas whose result is quite similar to the service file in
> Arch Linux.
> 
>         [Unit]
>         Description=Chrony Network Time Daemon
>         After=nss-lockup.target syslog.target
> 
>         [Service]
>         ExecStart=/usr/sbin/chronyd -n
> 
>         [Install]
>         WantedBy=multi-user.target
> 
> David suggested that a separate system user could be used for this
> daemon too and systemd should do this.
> 
> But it looks like that Arch Linux or Debian assume `chronyd` is run as
> `root` and do not set up devices or certain files for time setting to be
> used by a different user than root.
> 
> Additionally `After=nss-lockup.target` should be set, so that the NTP
> daemon actually finds a NTP server.
> 
> And lastly, in the directory `units/` of the systemd source tree
> contains `time-sync.target` and the Fedora services use that too. But
> reading the manual of systemd.special, my take on this is this is just a
> compatibility file and should not be used in a systemd service file.
> 
> So does the last service file look reasonable and should be used for
> upstream inclusion?

Another problem, upstream cannot decide and each distribution has to, is
that when chronyd starts it starts as offline. I have not found a way to
start the daemon as online.

Therefore normally some kind of init.d script is run to read the
password from `/etc/chrony/chrony.keys` (in Debian) and to execute the
client `chronyc` and passes the command online to put the NTP server
sources online [5].

I do not know how Arch Linux is doing this, but in their Wiki suggests
to put some scripts under `/etc/NetworkManager/dispatcher.d/`
NetworkManager can execute when an interface goes up or down [6].

Under Debian NetworkManager ships a compatibility script to run scripts
`/etc/network/if-{up,down}.d/` and I successfully put some scripts in
there to put chrony online or offline.

But these are some problems I see that upstreaming unit files which all
distributions can use will be difficult.


Thanks,

Paul


> > [1] http://pkgs.fedoraproject.org/gitweb/?p=chrony.git;a=blob;f=chrony-wait.service;h=3958160098eae926aaf7136d7b5b8bab42a6aa35;hb=HEAD
> > [2] http://pkgs.fedoraproject.org/gitweb/?p=chrony.git;a=blob;f=chronyd.service;h=167332e37511f19019aabc32f82a47ef80656cd5;hb=HEAD
> > [3] https://github.com/falconindy/systemd-arch-units/issues/98
> [4] https://projects.archlinux.org/svntogit/community.git/tree/trunk/service?h=packages/chrony
[5] http://chrony.tuxfamily.org/manual.html#Usage-reference
[6] https://wiki.archlinux.org/index.php/Chrony#Using_NetworkManager_to_let_chronyd_go_online
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20120701/56aaab0b/attachment.pgp>


More information about the systemd-devel mailing list