[oe] [meta-networking][PATCHv3] chrony: Versatile implementation of NTP
From: Henry Hallam <he...@pericynthion.org> chrony is an alternative to ntpd. In particular it may be useful for quasi-realtime embedded systems that have a pulse-per-second time reference available and need to rapidly synchronize to it after boot, which appears to be unachievable with ntpd. Signed-off-by: Henry Hallam <he...@pericynthion.org> --- .../recipes-support/chrony/chrony/chrony.conf | 44 +++ .../recipes-support/chrony/chrony/chronyd | 58 ++ .../recipes-support/chrony/chrony_2.4.bb | 127 + 3 files changed, 229 insertions(+) create mode 100644 meta-networking/recipes-support/chrony/chrony/chrony.conf create mode 100644 meta-networking/recipes-support/chrony/chrony/chronyd create mode 100644 meta-networking/recipes-support/chrony/chrony_2.4.bb diff --git a/meta-networking/recipes-support/chrony/chrony/chrony.conf b/meta-networking/recipes-support/chrony/chrony/chrony.conf new file mode 100644 index 000..8d226d3 --- /dev/null +++ b/meta-networking/recipes-support/chrony/chrony/chrony.conf @@ -0,0 +1,44 @@ +# Use public NTP servers from the pool.ntp.org project. +# Please consider joining the pool project if possible by running your own +# server(s). +# If you are a vendor distributing a product using chrony, you *MUST* +# read and comply with http://www.pool.ntp.org/vendors.html +pool 0.openembedded.pool.ntp.org iburst + +# Use a local timeserver in preference to the pool, if it's reachable. +#server 192.168.22.22 iburst minpoll 2 prefer + +# Sync to pulse-per-second from an onboard GPS. +#refclock PPS /dev/pps0 poll 0 prefer +# You'll want to enable CONFIG_PPS and CONFIG_PPS_CLIENT_GPIO in your kernel, +# and an entry something like this in your device tree: +# pps { +# compatible = "pps-gpio"; +# gpios = <_gpio_0 56 0>; +# }; + +# In first three updates step the system clock instead of slew +# if the adjustment is larger than 1 second. +makestep 1.0 3 + +# Record the rate at which the system clock gains/loses time, +# improving accuracy after reboot +driftfile /var/lib/chrony/drift + +# Enable kernel synchronization of the hardware real-time clock (RTC). +rtcsync + +# Allow NTP client access from local network. +#allow 192.168/16 + +# Serve time even if not synchronized to any NTP server. +#local stratum 10 + +# Specify file containing keys for NTP authentication. +#keyfile /etc/chrony.keys + +# Specify directory for log files. +logdir /var/log/chrony + +# Select which information is logged. +#log measurements statistics tracking diff --git a/meta-networking/recipes-support/chrony/chrony/chronyd b/meta-networking/recipes-support/chrony/chrony/chronyd new file mode 100644 index 000..04f1b68 --- /dev/null +++ b/meta-networking/recipes-support/chrony/chrony/chronyd @@ -0,0 +1,58 @@ +#! /bin/sh + +# System V init script for chrony +# Adapted from the script already in meta-networking for ntpd + +### BEGIN INIT INFO +# Provides:chrony +# Required-Start: $network $remote_fs $syslog +# Required-Stop: $network $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: Start chrony time daemon +### END INIT INFO + +PATH=/sbin:/bin:/usr/bin:/usr/sbin + +DAEMON=/usr/sbin/chronyd +PIDFILE=/var/run/chronyd.pid + +test -x $DAEMON -a -r /etc/chrony.conf || exit 0 + +# Source function library. +. /etc/init.d/functions + +# Functions to do individual actions +startdaemon(){ + echo -n "Starting chronyd: " + start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- "$@" + echo "done" +} +stopdaemon(){ + echo -n "Stopping chronyd: " + start-stop-daemon --stop --quiet --oknodo -p $PIDFILE + echo "done" +} + +case "$1" in + start) + startdaemon + ;; + stop) + stopdaemon + ;; + force-reload | restart | reload) + stopdaemon + startdaemon + ;; + status) + status /usr/sbin/chronyd; + exit $? + ;; + *) + echo "Usage: chronyd { start | stop | status | restart | reload }" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/meta-networking/recipes-support/chrony/chrony_2.4.bb b/meta-networking/recipes-support/chrony/chrony_2.4.bb new file mode 100644 index 000..aa37caa --- /dev/null +++ b/meta-networking/recipes-support/chrony/chrony_2.4.bb @@ -0,0 +1,127 @@ +SUMMARY = "Versatile implementation of the Network Time Protocol" +DESCRIPTION = "Chrony can synchronize the system clock with NTP \ +servers, reference clocks (e.g. GPS receiver), and manual input using \ +wristwatch and keyboard. It can also operate as an NTPv4 (RFC 5905) \ +server and peer to provide a time service to other computers in the \ +network. \ +\ +It is designed to perform well in a wide range of conditions, \ +including intermittent network con
[oe] [meta-networking][PATCHv3] chrony: Versatile implementation of NTP
Patch version 3: - Move variable defs to appropriate places in the recipe, per Koen's feedback - Correct location of drift file - Add conflict with ntimed, and note about systemd-timesyncd Thanks, Henry -- ___ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-devel
[oe] [meta-networking][PATCH v2] chrony: Versatile implementation of NTP
From: Henry Hallam <he...@pericynthion.org> chrony is an alternative to ntpd. In particular it may be useful for quasi-realtime embedded systems that have a pulse-per-second time reference available and need to rapidly synchronize to it after boot, which appears to be unachievable with ntpd. Signed-off-by: Henry Hallam <he...@pericynthion.org> --- .../recipes-support/chrony/chrony/chrony.conf | 44 .../recipes-support/chrony/chrony/chronyd | 58 ++ .../recipes-support/chrony/chrony_2.4.bb | 120 + 3 files changed, 222 insertions(+) create mode 100644 meta-networking/recipes-support/chrony/chrony/chrony.conf create mode 100644 meta-networking/recipes-support/chrony/chrony/chronyd create mode 100644 meta-networking/recipes-support/chrony/chrony_2.4.bb diff --git a/meta-networking/recipes-support/chrony/chrony/chrony.conf b/meta-networking/recipes-support/chrony/chrony/chrony.conf new file mode 100644 index 000..95f5f81 --- /dev/null +++ b/meta-networking/recipes-support/chrony/chrony/chrony.conf @@ -0,0 +1,44 @@ +# Use public NTP servers from the pool.ntp.org project. +# Please consider joining the pool project if possible by running your own +# server(s). +# If you are a vendor distributing a product using chrony, you *MUST* +# read and comply with http://www.pool.ntp.org/vendors.html +pool 0.openembedded.pool.ntp.org iburst + +# Use a local timeserver in preference to the pool, if it's reachable. +#server 192.168.22.22 iburst minpoll 2 prefer + +# Sync to pulse-per-second from an onboard GPS. +#refclock PPS /dev/pps0 poll 0 prefer +# You'll want to enable CONFIG_PPS and CONFIG_PPS_CLIENT_GPIO in your kernel, +# and an entry something like this in your device tree: +# pps { +# compatible = "pps-gpio"; +# gpios = <_gpio_0 56 0>; +# }; + +# Record the rate at which the system clock gains/loses time, +# improving accuracy after reboot +driftfile /var/lib/chrony.drift + +# In first three updates step the system clock instead of slew +# if the adjustment is larger than 1 second. +makestep 1.0 3 + +# Enable kernel synchronization of the real-time clock (RTC). +rtcsync + +# Allow NTP client access from local network. +#allow 192.168/16 + +# Serve time even if not synchronized to any NTP server. +#local stratum 10 + +# Specify file containing keys for NTP authentication. +#keyfile /etc/chrony.keys + +# Specify directory for log files. +logdir /var/log/chrony + +# Select which information is logged. +#log measurements statistics tracking diff --git a/meta-networking/recipes-support/chrony/chrony/chronyd b/meta-networking/recipes-support/chrony/chrony/chronyd new file mode 100644 index 000..04f1b68 --- /dev/null +++ b/meta-networking/recipes-support/chrony/chrony/chronyd @@ -0,0 +1,58 @@ +#! /bin/sh + +# System V init script for chrony +# Adapted from the script already in meta-networking for ntpd + +### BEGIN INIT INFO +# Provides:chrony +# Required-Start: $network $remote_fs $syslog +# Required-Stop: $network $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: Start chrony time daemon +### END INIT INFO + +PATH=/sbin:/bin:/usr/bin:/usr/sbin + +DAEMON=/usr/sbin/chronyd +PIDFILE=/var/run/chronyd.pid + +test -x $DAEMON -a -r /etc/chrony.conf || exit 0 + +# Source function library. +. /etc/init.d/functions + +# Functions to do individual actions +startdaemon(){ + echo -n "Starting chronyd: " + start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- "$@" + echo "done" +} +stopdaemon(){ + echo -n "Stopping chronyd: " + start-stop-daemon --stop --quiet --oknodo -p $PIDFILE + echo "done" +} + +case "$1" in + start) + startdaemon + ;; + stop) + stopdaemon + ;; + force-reload | restart | reload) + stopdaemon + startdaemon + ;; + status) + status /usr/sbin/chronyd; + exit $? + ;; + *) + echo "Usage: chronyd { start | stop | status | restart | reload }" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/meta-networking/recipes-support/chrony/chrony_2.4.bb b/meta-networking/recipes-support/chrony/chrony_2.4.bb new file mode 100644 index 000..07d312e --- /dev/null +++ b/meta-networking/recipes-support/chrony/chrony_2.4.bb @@ -0,0 +1,120 @@ +SUMMARY = "Versatile implementation of the Network Time Protocol" +DESCRIPTION = "Chrony can synchronize the system clock with NTP \ +servers, reference clocks (e.g. GPS receiver), and manual input using \ +wristwatch and keyboard. It can also operate as an NTPv4 (RFC 5905) \ +server and peer to provide a time service to other computers in the \ +network. \ +\ +It is designed to perform well in a wide range of conditions, \ +including intermittent network con
[oe] [meta-networking][PATCH v2] chrony: Versatile implementation of NTP
Patch version 2: - No longer hard-coding paths - Fix missing build dependencies, depending on PACKAGECONFIG features - Split off chronyc into separate output package - Default config points to openembedded.pool.ntp.org rather than pool.ntp.org (which should never be shipped as a default) I have applied for the above NTP pool vendor zone per http://www.pool.ntp.org/en/vendors.html#vendor-zone Thanks, Henry -- ___ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-devel
Re: [oe] [meta-networking][PATCH] chrony: Versatile implementation of NTP
On Tue, Jun 14, 2016 at 10:33 AM, Martin Jansawrote: > Autodetects some dependencies: > > WARNING: chrony-2.4-r0 do_package_qa: QA Issue: chrony rdepends on nss, > but it isn't a build dependency, missing nss in DEPENDS or > PACKAGECONFIG? [build-deps] > WARNING: chrony-2.4-r0 do_package_qa: QA Issue: chrony rdepends on > libedit, but it isn't a build dependency, missing libedit in DEPENDS or > PACKAGECONFIG? [build-deps] > Thanks Martin. It looks like those didn't show up for me because nss and libedit are both optional dependencies which weren't present on my system. They are detected and used by chrony's `configure` script if available and unused if not (e.g. chronyc can use either editline or readline or neither, and if NSS is unavailable then chronyd gets built without secure hash support). What's the best practice here - should I simply specify `configure` options to disable all these features for minimal dependencies, or make them all optionally available via PACKAGECONFIG? Henry -- ___ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-devel
Re: [oe] [meta-networking][PATCH] chrony: Versatile implementation of NTP
On Mon, Jun 13, 2016 at 4:03 AM, Koen Kooiwrote: > That file hardcodes /etc, /var, etc > ... > While the recipe is well behaved and uses ${sysconfdir} and friends. You'll > likely need to add a sed -i -e s:/var:${localstatedir}:g -e > s:/etc/:${sysconfdir}:g -e -e. to do_install to fix that up. Thanks Koen, I will put out a V2 patch shortly that fixes those paths as well as the ones in the SysVinit and systemd scripts. I'm a little surprised there isn't a more general way to do this since it must come up a lot. Henry -- ___ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-devel
Re: [oe] [meta-networking][PATCH] chrony: Versatile implementation of NTP
On Thu, Jun 9, 2016 at 12:06 PM, Henry Hallam <he...@kittyhawk.aero> wrote: > chrony is an alternative to ntpd. In particular it may be useful > for quasi-realtime embedded systems that have a pulse-per-second > time reference available and need to rapidly synchronize to it after > boot, which appears to be unachievable with ntpd. This is my first attempt to contribute to yocto/openembedded, so any and all feedback (stylistic or otherwise) would be greatly appreciated. Thanks, Henry -- ___ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-devel