Difference between revisions of "Chrony"
m (use date format as shown in man hwclock)
(→Configuration: fix minimum config)
|Line 42:||Line 42:|
server 126.96.36.199 offline
server 188.8.131.52 offline
server 184.108.40.206 offline
server 220.127.116.11 offline
Revision as of 08:07, 2 March 2013
This article describes how to set up and run Chrony, an alternative NTP client and server that is roaming friendly and designed specifically for systems that are not online all the time.
The first thing you define in your
/etc/chrony.conf is the servers your machine will synchronize to.
NTP servers are classified in a hierarchical system with many levels called strata: the devices which are considered independent time sources are classified as stratum 0 sources; the servers directly connected to stratum 0 devices are classified as stratum 1 sources; servers connected to stratum 1 sources are then classified as stratum 2 sources and so on.
It has to be understood that a server's stratum cannot be taken as an indication of its accuracy or reliability. Typically, stratum 2 servers are used for general synchronization purposes: if you do not already know the servers you are going to connect to, you should use the pool.ntp.org servers (alternate link) and choose the server pool that is closest to your location.
The following lines are just an example:
server 0.pool.ntp.org server 1.pool.ntp.org server 2.pool.ntp.org server 3.pool.ntp.org
If your computer is not connected to the internet on startup, it is recommended to use the offline option, to tell chrony not to try and connect to the servers, until it has been given the go:
server 0.pool.ntp.org offline server 1.pool.ntp.org offline server 2.pool.ntp.org offline server 3.pool.ntp.org offline
It may also be a good idea to either use IP addresses instead of host names, or to map the hostnames to IP addresses in your
/etc/hosts file, as DNS resolving won't be available until you've made a connection.
To tell chronyd that a connection has been established, you need to be able to log in with chronyc. You will have to configure chronyd with an administrator password to be able to do this. Setting up an administrator password is as simple as creating the file
/etc/chrony.keys with a single line:
as well as adding the following line somewhere in
The smallest useful configuration file (using IP addresses instead of a hostname) would look something like:
server 18.104.22.168 offline server 22.214.171.124 offline server 126.96.36.199 offline rtcfile /etc/chrony.rtc rtconutc keyfile /etc/chrony.keys commandkey 1 driftfile /etc/chrony.drift
Telling chronyd an internet connection has been made
For this to work, you'll need to configure the
commandkey option in
/etc/chrony.conf as shown above. If you've done this, start
chronyc and enter the following commands if you are connected to the internet:
chronyc> password xyzzy 200 OK chronyc> online 200 OK chronyc> exit
Chrony should now connect to the configured time servers and update your clock if needed.
To tell chrony that you are not connected to the internet anymore, execute the following:
chronyc> password xyzzy 200 OK chronyc> offline 200 OK chronyc> exit
In conclusion, don't forget the user guide at
/usr/share/doc/chrony/chrony.txt, which is likely to answer any doubts you could still have. It is also available online. See also the related man pages:
The package provides
chrony.service, see systemd for details.
Synchronising chrony hardware clock from the system clock
During boot the initial time is read from the hardware clock (RTC) and the system time is then set, and synchronised over a period of minutes once the chrony daemon has been running for a while. If the hardware clock is out of sync then the initial system time can be some minutes away from the true time. If that is the case it may be necessary to reset the hardware clock. There are two methods. You can set the clock using the hwclock command but in order to do so you must temporarily stop the chrony service:
# systemctl stop chrony
Then set the clock eg:
# hwclock --set --date="2013-02-15 16:45:05"
or to set the system clock time into the RTC use:
# hwclock --systohc
Then restart chrony service:
# systemctl start chrony
It is also possible to set the RTC whilst chronyd is running by using the command line chronyc - once at the chronyc prompt use:
# chronyc> password zyxxy Password: 200 OK chronyc> trimrtc 200 OK chronyc> quit
Then exit from chronyc and the RTC and system time should be within a few microseconds of each other and should then be approximately correct on boot and fully synchronise a short time later.
Using NetworkManager to let chronyd go online
chronyd can be go into online/offline mode along with a network connection through the use of NetworkManager's dispatcher scripts. You can install AUR from the AUR.
- Time (for more information on computer timekeeping)