On Thu, Jun 09, 2016 at 12:06:38PM -0700, Henry Hallam 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. > > Signed-off-by: Henry Hallam <he...@pericynthion.org> > --- > .../recipes-support/chrony/chrony/chrony.conf | 40 +++++++++++ > .../recipes-support/chrony/chrony/chronyd | 58 +++++++++++++++ > .../recipes-support/chrony/chrony_2.4.bb | 83 > ++++++++++++++++++++++
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] > 3 files changed, 181 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 0000000..435a4f9 > --- /dev/null > +++ b/meta-networking/recipes-support/chrony/chrony/chrony.conf > @@ -0,0 +1,40 @@ > +# Use public NTP servers from the pool.ntp.org project. > +pool 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 = <&ps7_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 0000000..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 0000000..2b6ae5b > --- /dev/null > +++ b/meta-networking/recipes-support/chrony/chrony_2.4.bb > @@ -0,0 +1,83 @@ > +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 connections, heavily congested \ > +networks, changing temperatures (ordinary computer clocks are \ > +sensitive to temperature), and systems that do not run continuosly, or \ > +run on a virtual machine. \ > +\ > +Typical accuracy between two machines on a LAN is in tens, or a few \ > +hundreds, of microseconds; over the Internet, accuracy is typically \ > +within a few milliseconds. With a good hardware reference clock \ > +sub-microsecond accuracy is possible. \ > +\ > +Two programs are included in chrony: chronyd is a daemon that can be \ > +started at boot time and chronyc is a command-line interface program \ > +which can be used to monitor chronyd's performance and to change \ > +various operating parameters whilst it is running." > + > +HOMEPAGE = "http://chrony.tuxfamily.org/" > +SECTION = "net" > +LICENSE = "GPLv2" > +LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" > + > +DEPENDS = "libcap readline" > +# It's probably a bad idea to run chrony and ntpd on the same system. > +RCONFLICTS_${PN} = "ntp" > + > +SRC_URI = "https://download.tuxfamily.org/chrony/chrony-${PV}.tar.gz \ > + file://chrony.conf \ > + file://chronyd" > + > +SRC_URI[md5sum] = "d0598aa8a9be8faccef9386f6fc0d5f2" > +SRC_URI[sha256sum] = > "8d04e7cda2333289c2104b731d39c3c1db94816e43bae35d7ee4e7ae8af6391f" > + > +# Note: chrony does not use autotools, although it is built via > './configure; make; make install'. > +inherit update-rc.d systemd > + > +CONFFILES_${PN} = "${sysconfdir}/chrony.conf" > + > +INITSCRIPT_NAME = "chronyd" > +INITSCRIPT_PARAMS = "defaults" > + > +SYSTEMD_PACKAGES = "${PN}" > +SYSTEMD_SERVICE_${PN} = "chronyd.service" > + > +do_configure() { > + ./configure --sysconfdir=${sysconfdir} --bindir=${bindir} > --sbindir=${sbindir} --localstatedir=${localstatedir} --datarootdir=${datadir} > +} > + > +do_compile() { > + make ${PARALLEL_MAKE} > +} > + > +do_install() { > + # binaries > + install -d ${D}${bindir} > + install -m 0755 ${S}/chronyc ${D}${bindir} > + install -d ${D}${sbindir} > + install -m 0755 ${S}/chronyd ${D}${sbindir} > + > + # config files > + install -d ${D}${sysconfdir} > + install -m 644 ${WORKDIR}/chrony.conf ${D}${sysconfdir} > + > + # System V init scripts > + install -d ${D}${sysconfdir}/init.d > + install -m 755 ${WORKDIR}/chronyd ${D}${sysconfdir}/init.d > + > + # systemd unit > + install -d ${D}${systemd_unitdir}/system > + install -m 0644 ${S}/examples/chronyd.service > ${D}${systemd_unitdir}/system/ > + > + # variable data (for drift file) > + install -d ${D}${localstatedir}/lib/chrony > + > + # log files > + install -d ${D}${localstatedir}/log/chrony > +} > -- > 2.8.1 > > -- > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-devel -- Martin 'JaMa' Jansa jabber: martin.ja...@gmail.com
signature.asc
Description: Digital signature
-- _______________________________________________ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-devel