Donnerstag, 25.05.2017
  Linux Allgemein
   Was ist Linux?
   Spezifikationen
   Hardware
   Portierungen
   Dateisysteme
   Geschichte

  Distributionen
   Allgemein
   Auswahl einer Dist.
   Distributionen im Detail
   Mini Distributionen
   Bezugsquellen

  Artikel
   Artikelsammlung

  Software
   Download Archive
   Software

  Hardware
   Sharp Zaurus PDA

  Dokumentation
   Allgemein
   Howtos
   Shell Befehle
   Online Dokumentation
   Bücher
   FAQ
   Glossar

  Tips und Tricks
   Tips zu Linux

  Business
   Linux und Business
   Einsatzmöglichkeiten
   Vorurteile über Linux
   Linux und Jahr 2000

  Community
   Linux User Gruppen

  Links
   Linksammlung

  Wühlkiste
   Witze
   History of LIZ
   GPL Lizenz

  Impressum
   Impressum
   Kontakt

"> Home Email  

Originaltext: Berthold Müller
Letzte Bearbeitung:
2002-03-20 durch Marcus Frings

Original Seite (ständig aktualisiert)

Leider hat Berthold Müller, der ursprüngliche Verfasser, keine Zeit mehr, diese Seite zu pflegen und hat zudem alle seine weiteren Webseiten vom Netz genommen. Da aber seine Seite zu chrony meiner Meinung nach eine wichtige Referenz war und ist und auch mir damals sehr geholfen hat, finde ich es äußerst schade, wenn so etwas einfach so verschwinden sollte... Berthold war auf meine Anfrage so freundlich, mir den Quelltext zu schicken, so daß seine Seite ab jetzt unter dieser Adresse http://www.sc-delphin-eschweiler.de/chrony/index.html zu finden sein wird! Ich habe sie zunächst einmal im Original übernommen und werde in Zukunft die Seite weiter pflegen.

Marcus Frings

Hilfe, bei mir tickt es nicht richtig!

Alle Jahre wieder, zu Beginn und Ende der Sommerzeit, tauchen dieselben Postings auf: "Hilfe, meine Uhr geht 2 Stunden verkehrt!" oder "Ich habe die Uhr gestellt, jetzt stimmt sie nach dem Booten überhaupt nicht mehr." Aus diesem Grund und weil ich schon seit langer Zeit chrony erfolgreich einsetze, habe ich diese Seite geschrieben.

Die Beschreibung bezieht sich auf meinen Dialup-Rechner, auf dem Debian GNU/Linux installiert ist. Sie soll kein Ersatz für die reichlich vorhandene Dokumentation zu den einzelnen Programmen sein, sondern nur den Einstieg erleichtern, um chrony möglichst schnell zum Laufen zu bekommen. Viele Scripte sind sicher Debian-spezifisch, aber die Anpassung an andere Distributionen sollte nicht allzu schwierig sein. Auf die (mir bekannten) Änderungen für SuSE und Mandrake wird an passender Stelle hingewiesen. Weitere Hinweise sind jederzeit willkommen.

Zum besseren Verständnis der Arbeitsweise von chrony zunächst einige allgemeine Informationen zu den verschiedenen Uhren:

1. Die Uhren eines PC

In einem PC gibt es eine Realtime Clock (RTC), auch Hardware Clock oder CMOS Clock genannt. Das ist ein kleiner Chip, der unabhängig von irgendwelcher Software ist und auch funktioniert wenn der Rechner ausgeschaltet ist. Dazu dient eine kleine Batterie oder ein Akku. Als typisches Massenprodukt erreicht sie natürlich nicht die Genauigkeit, die ich von einer Uhr erwarte. Die Abweichung hängt u. a. ab von den Fertigungstoleranzen, dem Alterungsprozess und der Temperatur des Schwingquarzes. Der Schwingquarz ist das frequenzbestimmende Bauteil, von dem der Sekundentakt abgeleitet wird. In meinem Rechner z. B. beträgt die Abweichung der RTC bei ausgeschaltetem Rechner ca. 5 s pro Tag.

Unter Linux wird die RTC nur als Zwischenspeicher der Uhrzeit während der Zeit genutzt, in der Linux nicht aktiv ist. Wird Linux gebootet, wird die Systemzeit, eine Softwareuhr die vom Kernel verwaltet wird, einmal aus der RTC geladen. Damit ergibt sich ein Problem, wenn die RTC auf lokaler Zeit läuft und zu Beginn oder Ende der Sommerzeit vergessen wird sie rechzeitig umzustellen, denn Linux berücksichtigt beim Laden der Systemzeit, die immer auf UTC läuft, automatisch den Zeitunterschied zwischen UTC und lokaler Zeit; d. h. die Systemzeit kann falsch gehen. Ist kein anderes Betriebsystem auf dem Rechner installiert, das die RTC auf lokaler Zeit erfordert, ist es also grundsätzlich die bessere Wahl, die RTC auf UTC laufen zu lassen - dann stellt sich dieses Problem erst gar nicht.

Die Systemzeit ist im Prinzip ein Zähler, der die Anzahl Sekunden seit dem 1970-01-01 00:00:00 UTC enthält und von einem Timer Interrupt aufdatiert wird. Dieser Interrupt ist abhängig von einem Quarzoszillator auf dem Motherboard und damit ist die Genauigkeit der Systemzeit von den gleichen Faktoren abhängig wie die RTC, aber unabhängig von dieser, d. h. sowohl die RTC als auch die Systemzeit unter Linux besitzen eine absolute Abweichung von der tatsächlichen Zeit und zusätzlich eine temperaturabhängige und alterungsbedingte Drift.

2. Die Darstellung von Datum und Uhrzeit

Unter Windows ist die RTC die einzige Uhr im System und läuft normalerweise auf der lokalen = Ortszeit, wobei Windows die Umstellung auf Sommerzeit/Winterzeit direkt an der RTC vornimmt. Diese Tatsache ist von Bedeutung, wenn Du unter Linux die Uhren von chrony synchronisieren läßt; siehe weiter unten. Zur Darstellung von Datum und Uhrzeit nimmt Windows die Werte direkt aus der RTC.

Auch unter Linux läßt sich die RTC setzen und auslesen, dazu dient das Programm hwclock. Das Kommando 'hwclock --show' zeigt die aktuelle Uhrzeit an. Mit dem zusätzlichen Parameter '--utc' bzw. '--localtime' kannst Du dem Programm mitteilen, ob die RTC auf UTC oder lokaler Zeit läuft. Eine sehr schöne Möglichkeit das Jahrtausendproblem älterer Biosversionen zu umgehen, bietet die Option '--badyear'. Für nähere Information verweise ich auf die manpage zu diesem Programm.

Da unter Linux, wie weiter oben beschrieben, die Systemzeit nur auf einem Zähler basiert, braucht das System zur korrekten Darstellung der lokalen Zeit noch Informationen über die Zeitzone. Diese läßt sich mit dem Programm tzconfig recht einfach einstellen. Für Deutschland gilt: Zeitzone = 'Europe/Berlin' und die Zeitangabe ist 'CET', bzw. 'CEST' während der Sommerzeit. Zur Kontrolle: Bei richtiger Einstellung enthält '/etc/timezone' den Wert 'Europe/Berlin' und '/etc/localtime' ist ein Link auf '/usr/share/zoneinfo/Europe/Berlin'. (Dies gilt für Debian, bei anderen Distributionen kann die Pfadangabe anders lauten.)

Um die Systemzeit darstellen oder setzen zu können, gibt es das Programm date. Dieses bietet eine Menge Optionen und erlaubt somit einen sehr flexiblen Zugriff auf die Softwareuhr des Kernels. Die einfachste Form ist der Aufruf 'date' ohne Parameter. Damit wird das aktuelle Datum und die Uhrzeit ausgegeben. Die Darstellung berücksichtigt automatisch die festgelegte Zeitzone und die Umschaltung der Sommer/Winterzeit. Bitte beachten: die Systemzeit (Softwareuhr des Kernels) selbst wird dadurch nicht verändert - sie läuft immer auf UTC!

Die Darstellung von Datum und Uhrzeit nach ISO-8601 liefert: 'echo $(date -I;date +%T)'.

3. Manuelles Korrigieren der Uhren

Nachdem wir nun festgestellt haben, wie ungenau die Uhren eines Rechners sind, wird es Zeit sie mal zu stellen. Ich beginne mit der Systemzeit unter Linux. Das Programm date bietet verschiedene Möglichkeiten des Datumformats, ich bevorzuge die Form nach ISO-8601: "YYYY-MM-TT hh:mm:ss". Ein Aufruf von 'date -s "2001-04-23 19:34:30"' setzt die Systemzeit auf den angegebenen Wert.

Dieses einmalige Setzen der Systemzeit hat natürlich keinen Einfluß auf die Drift der Softwareuhr. Um diese zu korrigieren gibt es das Programm adjtimex, das eine sehr feine Einstellung der einzelnen "Ticks" erlaubt. Dabei wird die Systemzeit mehrmals mit einer sehr genauen Uhr synchronisiert. Macht man die Intervalle sehr lang - einige Tage - läßt sich auf diese Weise eine erstaunliche Genauigkeit der Systemzeit erreichen, vor allem, wenn der Rechner die ganze Zeit durchläuft. Für einen Rechner ohne Internetzugang ist das eine gute Alternative. Da ein Internetzugang heute aber schon fast Standard ist, will ich nicht näher darauf eingehen.

Um die RTC zu stellen, gibt es verschiedene Möglichkeiten. Du kannst sie z. B. beim Booten direkt im BIOS stellen. Eine andere Möglichkeit ist das schon erwähnte Programm hwclock mit der zugehörigen Datei '/etc/adjtime'. Damit hat es folgendes auf sich:

Immer, wenn die RTC mit hwclock verändert wird, werden der Zeitpunkt der Änderung und die Abweichung von der Systemzeit in diese Datei geschrieben. Mit diesen Informationen und der Option '--adjust' ist hwclock in der Lage, Abweichungen der RTC bis zu einem gewissen Grad zu korrigieren. Das Problem liegt darin, daß sich die RTC nur in einem festen Sekundenraster stellen läßt; ein Restfehler bleibt also. Wenn dir das jetzt alles zu theoretisch war, führe einfach mal 'hwclock --test --debug --systohc --utc' aus. Keine Angst, durch die Option '--test' wird dabei das Stellen der RTC nur simuliert und nichts weiter verändert. Zur Bedeutung der einzelnen Einträge in '/etc/adjtime' verweise ich auf die manpage zu hwclock.

Sollte durch irgendwelche Umstände die Systemzeit mal total durcheinander geraten sein, hier ein einfaches Rezept um wieder klare Verhältnisse zu schaffen:

    1. Stelle die richtige Zeitzone ein.
    2. Setze die Systemzeit wie oben beschrieben. ('date -s "YYYY-MM-TT hh:mm:ss"')
    3. Lösche die Datei '/etc/adjtime'.
    4. Setze die RTC mit: 'hwclock --debug --systohc --utc'.
       (Läuft die RTC auf lokaler Zeit, verwende statt '--utc' die Option '--localtime').
    5. Wiederhole Punkt 3 und 4.    

Außerdem ist folgendes zu beachten:

Läuft die RTC auf lokaler Zeit, ist zu Beginn und Ende der Sommerzeit vor dem Start von Linux als erstes die RTC auf die richtige Zeit zu setzen, dann erfolgt auch unter Linux das richtige Laden der Systemzeit. Ist neben Linux noch Windows installiert, so kannst Du diesem die Umstellung der RTC überlassen, indem Du es als erstes nach der Zeitumstellung bootest. Das ist IMO der einfachste Weg.

4. Automatische Korrektur der Uhren mit chrony

Das manuelle Korrigieren der Uhrzeit kann eine sehr zeitraubende Angelegenheit werden, vor allem wenn man mehrere Rechner betreut. Aber es gibt ja chrony, das die oben beschriebenen Vorgänge automatisiert und sich die genaue Uhrzeit aus dem Internet holt. Nach dem Einrichten brauchst Du dich nie mehr um die richtige Uhrzeit kümmern.

Damit chrony funktioniert, ist eine Bedingung Voraussetzung: '/dev/rtc' muß existieren und zugänglich sein. Ob das der Fall ist, läßt sich leicht mit folgender Anweisung herausfinden:

    hwclock --debug --show

Achtung: Wenn '/dev/rtc' schon von einer anderen Anwendung, z. B. chrony, belegt ist, kann die Meldung irreführend sein!

Falls nötig, ist der 'Enhanced RTC Support' in den Kernel zu kompilieren, bzw. das Modul zu laden. Das geschieht bei SuSE durch den Eintrag "alias char-major-10-135 rtc" in '/etc/modules.conf'.

Im Prinzip vereint chrony in sich die Fähigkeiten von adjtimex und hwclock. Es kontaktiert von Zeit zu Zeit einen Timeserver und synchronisiert die Systemzeit darauf. Gleichzeitig kann es als Timeserver für andere Rechner im LAN dienen. Wer Debian verwendet, wird fast alle folgenden Scripts nach der Installation schon vorfinden, für alle anderen können sie als Anhaltspunkt für die eigene Konfiguration dienen. Im übrigen möchte ich auf die gute und ausführliche Dokumentation zu chrony verweisen. Diese Seite kann und soll auch nicht alle Distributionen abdecken, dazu sind sie zu verschieden.

Damit chrony seine Aufgabe einwandfrei erfüllen kann, muß sichergestellt sein, daß niemand außer chrony die Uhren verändert! Unter Debian geschieht das in dem Script '/etc/init.d/hwclock.sh'. Hier genügt ein 'exit 0' am Anfang um das Script zu deaktivieren. Um sicher zu gehen, daß keine weiteren Aufrufe von hwclock erfolgen, kannst Du mit 'cd /etc; find -type f | xargs grep hwclock -l' z. B. im Verzeichnis '/etc' rekursiv danach suchen. Bei Mandrake befindet sich der betreffende Abschnitt in der Datei 'halt' und ist auszukommentieren.

5. Die Konfiguration von chrony

chrony besteht aus zwei Teilen, chronyc das die Benutzerschnittstelle bildet und chronyd das beim Booten gestartet wird und die Kontrolle über die Systemzeit und RTC übernimmt. Der Start erfolgt bei Debian mit folgendem Script:

#! /bin/sh
# /etc/init.d/chrony (Version für Debian)
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/chronyd
DESC="chronyd"
FLAGS="defaults"
test -f $DAEMON || exit 0
case "$1" in
  start)
    start-stop-daemon --start --verbose --exec $DAEMON -- -r -s ;;
  stop)
    start-stop-daemon --stop --verbose --exec $DAEMON ;;
  restart)
    echo -n "Restarting $DESC: .."
    start-stop-daemon --stop --quiet --exec $DAEMON
    sleep 1
    start-stop-daemon --start --quiet --exec $DAEMON -- -r -s
    echo "done." ;;
  *)
    echo "Usage: /etc/init.d/chrony {start|stop|restart}"
    exit 1 ;;
esac
exit 0

Das Script bietet nichts besonderes, nur die Parameter '-- -r -s' habe ich hinzugefügt, damit chrony nach dem Booten auf ältere Samples der Timeserver zurückgreifen kann und die Systemzeit aus der RTC unter Berücksichtigung der Drift geladen wird. chrony führt nämlich Buch über die Abweichung der Systemzeit gegenüber der tatsächlichen Zeit und die Abweichung der RTC gegenüber der Systemzeit. Damit ist die Gesamtabweichung der Uhren auch nach mehreren Tagen Auszeit kleiner als 1 s.

Für SuSE hat mir Thomas Kosch folgendes Script zur Verfügung gestellt:

#! /bin/sh
# /etc/init.d/chrony (Version für SuSE)
. /etc/rc.status
. /etc/rc.config
DAEMON=/usr/local/sbin/chronyd
DESC="chronyd"
FLAGS="defaults"
test -f $DAEMON || exit 0
case "$1" in
  start)
    echo -n "Starting $DESC"
    startproc $DAEMON -r -s
    rc_status -v ;;
  stop)
    echo -n "Shutting down $DESC"
    killproc -TERM $DAEMON
    rc_status -v ;;
  restart)
    echo -n "Restarting $DESC: .."
    $0 stop
    sleep 1
    $0 start
    echo "done." ;;
  *)
    echo "Usage: /etc/init.d/chrony {start|stop|restart}"
    exit 1 ;;
esac
exit 0

Zusätzliche Änderungen für die Installation unter SuSE:

In die rc.config START_CHRONY="yes" eintragen und folgende Links anlegen:
(Dies gilt für SuSE 7.2, für ältere müßten die Links nach 1,2,3 zeigen)

    /etc/init.d/rc2.d/K13chrony
    /etc/init.d/rc2.d/S08chrony
    /etc/init.d/rc3.d/K13chrony
    /etc/init.d/rc3.d/S08chrony
    /etc/init.d/rc5.d/K13chrony
    /etc/init.d/rc5.d/S08chrony

Die folgenden Default-Pfadangaben für SuSE sind für die weiter unten beschriebenen Konfigurationsdateien von Bedeutung:

    /etc/chrony.conf
    /etc/chrony.drift
    /etc/chrony.keys
    /etc/chrony.rtc
    /usr/local/bin/chronyc
    /usr/local/doc/chrony
    /usr/local/sbin/chronyd
    /var/log/chrony

Außer dem ersten sind die übrigen Pfade über chrony.conf frei wählbar. Wer sich also große Änderungen ersparen will, kopiert nur chrony.conf nach '/etc/' und kann die übrigen Pfadangaben (bis auf chronyc und chronyd) beibehalten.

Vielen Dank an Thomas Kosch und Marcus Frings für ihre Unterstützung!


Wie fast jedes Programm braucht auch chrony eine Konfigurationsdatei. Diese befindet sich unter '/etc/chrony/' und die vorgestellte Datei kann als Anhaltspunkt für Deine eigene Konfiguration dienen. Für meinen Rechner sieht sie so aus:

# /etc/chrony/chrony.conf
server          130.149.4.11   minpoll 8 offline
server          134.95.192.172 minpoll 8 offline
server          137.248.1.8    minpoll 8 offline
keyfile         /etc/chrony/chrony.keys
commandkey      1
rtcfile         /var/lib/chrony/chrony.rtc
driftfile       /var/lib/chrony/chrony.drift
dumpdir         /var/lib/chrony
logdir          /var/log/chrony
log             tracking
dumponexit
maxupdateskew   100.0
rtconutc
allow

Am Anfang stehen verschiedene Zeitserver, die chrony bei Bedarf abfragen soll. In meinem Fall sind es Server in Berlin, Köln und Marburg. Der Zusatz 'offline' bedeutet, daß chrony mit der Abfrage so lange warten soll, bis der Rechner online ist. Wann das der Fall ist, wird chrony in einem anderen Script mitgeteilt. Es müssen nicht so viele Zeitserver sein, aber zwei, besser drei, solltest Du schon eintragen, damit chrony eine Alternative hat, falls ein Server mal nicht erreichbar ist. Welche Server am besten erreichbar sind und von chrony als Referenz ausgewählt werden, kannst Du sehr leicht in '/var/log/chrony/tracking.log' erkennen.

Die Angabe 'minpoll 8' setzt die Zeitspanne zwischen zwei Polls eines Zeitservers auf 256 s. Per Default pollt chrony jeden Server alle 64 s. Durch Verschiebungen kann sich diese Zeit bei drei Zeitservern auf ca. 21 s verringern. Hast Du 'Dial-on-demand' konfiguriert und beträgt die Timeoutzeit bis zum Auflegen z. B. 60 s, so wird der Rechner in diesem Fall nicht auflegen. Die Pollzeit ist also auf mindestens (Timeoutzeit * Anzahl Server) zu erhöhen, damit auch im ungünstigsten Fall der Rechner sicher die Verbindung trennt. Dies geschieht in Zweierpotenzen (2^6=64 s, 2^7=128 s ...), mit dem Wert 8 sind es also 2^8=256 s.

Die Angabe eines Keyfiles hat etwas mit Sicherheit zu tun. Da Änderungen der Systemzeit kritische Zustände hervorrufen können, sind bestimmte Funktionen mit einem Passwort geschützt. Im einfachsten Fall enthält das Keyfile nur eine Zeile wie diese, mit einer Schlüsselnummer (commandkey) und dem Passwort:

# /etc/chrony/chrony.keys
1 password

Dieses kannst Du natürlich beliebig auswählen - nähere Informationen dazu stehen im Manual zu chrony.

Die Angabe der Pfadnamen zeigen chrony wo es diverse Informationen über die Uhren und Zeitserver speichern soll. 'log tracking' erstellt ein Log über die Abweichungen gegenüber der Referenzzeit. Weitere Optionen für 'log' findest Du im Manual zu chrony. Mit der Option 'dumponexit' erstellt chrony beim Herunterfahren ein Historyfile für jeden Timeserver, in dem die Informationen der letzten Abfragen eingetragen werden, 'maxupdateskew' legt die Grenze fest, (in parts per million) bis zu der die Abweichung der Systemzeit zu einem Zeitserver noch als glaubwürdig angesehen wird. Ist die Abweichung zu groß, wird die Abfrage verworfen. Mit 'rtconutc' wird festgelegt, daß die RTC auf UTC läuft. Sollte sie bei dir auf lokaler Zeit laufen, laß diesen Eintrag einfach weg, 'allow' ist nur interessant, wenn Du chrony als Zeitserver anderen Rechnern im LAN zur Verfügung stellen willst.

Damit Windows-Rechner sich die Zeit von einem Linux-Rechner über ein anderes Protokoll als NTP holen können, z. B. mit dem Tool 'TimeRC.exe' oder 'ws-ping', ist in '/etc/inetd.conf' folgender Eintrag nötig:

    time   stream   tcp   nowait   root   internal
Dieses Protokoll benutzt Port 37/TCP, während NTP den Port 123/UDP benutzt. Zusätzlich benötigt chrony noch den Port 323/UDP zu Kommunikation zwischen chronyc und chronyd, das ist beim Einsatz eines Packetfilters zu beachten!

Damit chrony weiß, wann die Verbindung ins Internet steht, wird nach einem Dialup folgendes Script ausgeführt:

#!/bin/sh
# /etc/ppp/ip-up.d/chrony
PASSWORD=`awk '$1 ~ /^1$/ {print $2; exit}' /etc/chrony/chrony.keys`
cat << EOF | /usr/bin/chronyc
password $PASSWORD
online
EOF
exit 0

Nach dem Beenden der Verbindung teilt das folgende Script chronywieder den 'offline' Zustand mit:

#!/bin/sh
# /etc/ppp/ip-down.d/chrony
PASSWORD=`awk '$1 ~ /^1$/ {print $2; exit}' /etc/chrony/chrony.keys`
cat << EOF | /usr/bin/chronyc
password $PASSWORD
offline
EOF
exit 0

Unter SuSE befinden sich die beiden Scripts unter /etc/ppp/ip-up.local bzw. /etc/ppp/ip-down.local und der Aufruf von chronyc muß auf /usr/local/bin/chronyc geändert werden.

Für Mandrake und DSL mittels rp-pppoe sind die beiden Scripts am Ende von /usr/sbin/adsl-connect bzw. am Anfang von /usr/sbin/adsl-stop einzufügen. (Vielen Dank an Jens Wolanke für die Information!)


Mein Rechner ist zu sehr unterschiedlichen Zeiten unterschiedlich lange eingeschaltet, daher wirkt sich die Temperatur am stärksten auf die Abweichung der RTC aus. Durch Versuche habe ich herausgefunden, daß es am günstigsten ist, die RTC regelmäßig im Stundenabstand zu stellen, damit chrony die mittlere Abweichung erfassen kann. Diese Aufgabe übernimmt das folgende Script:

#! /bin/sh
# /usr/local/sbin/setrtc
PASSWORD=`awk '$1 ~ /^1$/ {print $2; exit}' /etc/chrony/chrony.keys`
cat << EOF | /usr/bin/chronyc
password $PASSWORD
trimrtc
writertc
dump
EOF

Auch hier muß unter SuSE der Aufruf von chronyc auf /usr/local/bin/chronyc geändert werden.

Da dies eine typische Aufgabe für cron ist, habe ich das folgende Script hinzugefügt:

(Bei SuSE gehört der Eintrag in die Datei '/etc/crontab'.)

# /etc/cron.d/hwclock: adjust RTC frequently
# Run queue every hour
0 * * * *       root    /usr/local/sbin/setrtc >/dev/null 2>&1

Damit wird obiges Script zu jeder vollen Stunde ausgeführt. Wie man aber in den Logeinträgen leicht sehen kann, erfolgt nicht immer eine Korrektur der RTC, sondern nur dann, wenn die Abweichung größer als 1 s ist. Das macht Sinn, denn wie schon oben erwähnt läßt sich die RTC nur im Sekundentakt stellen.


Nachdem nun chrony installiert und konfiguriert ist, wird es Zeit, sich von der korrekten Arbeitsweise zu überzeugen. Das Kommando, das ich am häufigsten benutze, ist 'chronyc tracking'. Damit wird angezeigt, welchen Timeserver chrony als Referenz benutzt und wie groß die Abweichungen sind. Die Beschreibung der verschiedenen Einträge findest Du im Manual zu chrony. ('TS_1', 'TS_2' usw. sind nur Aliase und stammen aus Einträgen in meiner Datei '/etc/hosts'.)

orion(root):/ chronyc tracking
Reference ID    : 130.149.4.11 (TS_1)
Stratum         : 3
Ref time (UTC)  : Sun Apr  8 07:27:05 2001
System time     : 0.000000 seconds fast of NTP time
Frequency       : 13.900 ppm fast
Residual freq   : 0.009 ppm
Skew            : 1.418 ppm
Root delay      : 0.107819 seconds
Root dispersion : 0.028275 seconds

'chronyc rtcdata' liefert Informationen über die Abweichung der RTC gegenüber der Systemzeit:

orion(root):/ chronyc rtcdata    
RTC ref time (UTC) : Sun Apr  8 08:49:17 2001
Number of samples  : 12
Number of runs     : 7
Sample span period :  19m
RTC is fast by     :     0.664673 seconds
RTC gains time at  :    45.637 ppm

Und mit 'chronyc sources' bzw. 'chronyc sourcestats' erhältst Du Informationen über die Verfügbarkeit der Timeserver:

orion(root):/ chronyc sources 
210 Number of sources = 2
MS Name/IP address           Str  Poll LastRx        Last sample
========================================================================
^* TS_1                        2    8   83m  +3468us[+5028us] +/-   76ms
^+ TS_2                        2    8   83m   +210ms[ +210ms] +/-  280ms
orion(root):/ chronyc sourcestats
210 Number of sources = 2
Name/IP          NP   NR  Span       Freq      Skew      S.D./us
================================================================
TS_1             16    7   14h       0.009       1.322     21806
TS_2             10    5   11h       1.316       2.093     14567

Weitere Links:

Homepage von chrony
Was ist Zeit?
The Time of Internet - Glossary
The Time of Internet - Time Zones
Die Zeitzonen
Greenwich Time: Time Zones by Country
Physikalisch-Technische Bundesanstalt (PTB)
Time Server
Public NTP Time Servers
Weitere Zeitserver


eMail: Marcus Frings


Copyright (c) by Dave Hunziker 2001