ubuntuusers.de

ntp mit externen lokalen Zeitquellen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

ntp arbeitet mit einer Vielzahl von lokalen Zeitquellen (serielle, USB-, PCI-Geräte) zusammen, z.B. DCF- oder GPS-Quellen. Die Nutzung von zwei möglichen externen Quellen wird im folgenden gezeigt:

DCF Funkuhr - Gude MouseClock II

Das folgende Beispiel zeigt, wie eine DCF-77 Uhr von Gude 🇩🇪, eine "MouseClock II Funkuhr", eingebunden wird. ntp erwartet DCF-Funkuhren unter /dev/refclock-x - daher wird eine udev-Regel benötigt, um dem meist seriell oder via USB angeschlossenen Gerät einen festen Namen zuzuweisen. Als Beispiel der Inhalt einer udev-Regel, z.B. /etc/udev/rules.d/05-persistent-dcf.rules, passend zur Gude MouseClock II Funkuhr:

KERNEL=="ttyUSB*", ATTRS{idProduct}=="e88a", SYMLINK+="refclock-%m"

udev-Regel aktivieren ntp neu starten[2][3]:

sudo udevadm trigger
sudo service ntp restart 

Nach der Installation des ntp-Dienstes wird die externe Funkuhr in der Konfigurationsdatei /etc/ntp.conf angegeben:

# GUDE Expert mouseCLOCK USB II
server 127.127.8.0 mode 19 prefer
fudge 127.127.8.0 refid GUDE

  • Die Angabe "...127.127.8.0..." ist keine IP-Adresse, sondern die genaue Spezifizierung einer "GUDE Expert mouseCLOCK".

  • Für jede von NTP unterstützte Referenz Uhr gibt es hier eine entsprechende vierstellige Zahlenkombination, beginnend mit 127.127... die wie eine IP-Adresse aufgebaut ist, aber keine ist.

  • 127.127.8.0 - die "8" steht für Referenz Uhr Typ 8, eine generisch unterstütztes Modell (http://www.eecis.udel.edu/~mills/ntp/html/refclock.html#list 🇬🇧).

  • 127.127.8.0 - die "0" beschreibt hier, dass /dev/refclock-0 genutzt wird.

  • mode 19 bedeutet, dass es ein "Gude Analog- und Digitalsystem GmbH 'Expert mouseCLOCK USB v2.0'" Gerät ist.

Nach etwa 3 Minuten sollte eine korrekt ausgerichtete Funkuhr (nach Mainflingen/Hessen) synchronisiert sein. ntp und die Funkuhr können mit watch beobachtet und überprüft werden:

watch -n1 ntpq -c cv -c rv 
associd=0 status=0020 , 2 events, clk_unspec,
device="RAW DCF77 CODE (Expert mouseCLOCK USB v2.0)",
timecode="--#--###---------D--S1-4-1-4p-24---p12----1-4---8--2--1---P",
poll=12, noreply=0, badformat=0, baddata=1, fudgetime1=425.000,
stratum=0, refid=GUDE, flags=2,
refclock_time="d3c5d844.00000000  Fri, Aug  3 2012  4:55:32.000",
refclock_status="DST; TIME CODE; (LEAP INDICATION; ANTENNA)",
refclock_format="RAW DCF77 Timecode",
refclock_states="*NOMINAL: 00:10:33 (88.16%); ILLEGAL DATE: 00:01:25 (11.83%); running time: 00:11:58"
associd=0 status=0214 leap_none, sync_lf_radio, 1 event, freq_mode,
version="ntpd 4.2.6p3@1.2290-o Tue Jun  5 20:12:08 UTC 2012 (1)",
processor="x86_64", system="Linux/3.2.0-29-generic", leap=00, stratum=1,
precision=-22, rootdelay=0.000, rootdisp=31.196, refid=GUDE,
reftime=d3c5d838.75cb8306  Fri, Aug  3 2012  6:55:20.460,
clock=d3c5d844.8f4457f4  Fri, Aug  3 2012  6:55:32.559, peer=44449, tc=6,
mintc=3, offset=-43.458, frequency=-3.564, sys_jitter=1.685,
clk_jitter=14.366, clk_wander=1.260

In der Ausgabe erkennt man, dass die Funkuhr mit stratum=0 und der zugehörige PC mit dem ntp-Dienst als stratum=1 läuft.

Zusätzlich kann es nötig sein, AppArmor den Zugriff auf das NTP-Gerät zu erlauben, und zwar nicht über den Symlink (/dev/refclock-x), sondern dem echten seriellen oder USB-Gerät. In der Datei /etc/apparmor.d/tunables/ntpd wird die die Variable NTPD_DEVICE auf das verwendete NTP-Gerät gesetzt:

@{NTPD_DEVICE}="/dev/ttyUSB*"

Die Variable NTPD_DEVICE wird damit im AppArmor Profil usr.sbin.ntpd korrekt verwendet. AppArmor muss anschließend neu gestartet werden:

sudo service apparmor restart 

GPS-Maus - per gpsd

Ist am Rechner eine GPS-Maus angeschlossen, kann diese als Zeitquelle verwendet werden. Es sollte eine udev-Regel vorhanden sein, die der GPS Maus mit "SYMLINK+="gps0" einen festen Namen vergibt (/dev/gps0). Weitere Voraussetzung ist, dass die GPS-Maus von gpsd erkannt und verwendet wird, und gpsd als automatisch startender Dienst konfiguriert ist.

Kurzhilfe für gpsd, Installieren und Konfigurieren[1]:

sudo apt-get install gpsd
sudo dpkg-reconfigure gpsd 

Die Fragen nach automatisch Starten und automatisch GPS Geräte erkennen wird mit Ja beantwortet. Als zusätzliche Option gibt man meist "-n" an, damit GPS Daten auch ohne Client permanent an den Rechner gesendet werden. Nach einem Neustart des gpsd mit

sudo service gpsd restart 

werden die GPS Zeitdaten in den Shared Memory Driver (SHM) abgelegt. Nach einem Neustart der GPS-Maus kann es einige Minuten dauern, bis es einen SAT-fix hat und die Zeitdaten bereitstehen. Es können dabei weitere Clientprogramme gpsd gleichzeitig nutzen, die Nutzung als Zeitquelle für ntp blockiert die GSP Maus nicht. Clientprogramme dürfen /dev/gps0 natürlich nicht direkt nutzten, sondern müssen so konfiguriert werden, dass sie gpsd nutzen.

Die von gpsd bereitgestellten Zeitdaten in dem SHM können nun von ntp verwendet werden, die Konfiguration erfolgt in der /etc/ntp.conf :

# SHM 0
server 127.127.28.0
fudge 127.127.28.0 refid GPSa

# SHM 1
server 127.127.28.1
fudge 127.127.28.1 refid GPSp

SHM 1 mit PPS Daten wird nicht von allen GPS Mäusen unterstützt, und kann daher deaktiviert werden, falls hier keine Zeitdaten ankommen. Der ntp Dienst muss nun neu gestartet werden:

sudo service ntp restart 

Die folgende Beispiel Ausgabe zeigt

  • die lokale Uhr (LOCAL(0)),

  • eine erreichbare (Spalte reach==377) GPS-Maus (SHM(0)),

  • eine genauer laufende DCF-Uhr der Firma Meinberg 🇩🇪 (*SHM(2)),

  • sowie zwei Internet-Zeitquellen:

ntpq -c peers 
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 LOCAL(0)        .LOCL.          10 l 155m   64    0    0.000    0.000   0.000
xSHM(0)          .GPSu.           0 l   54   64  377    0.000  -104.24   1.684
*SHM(2)          .DCFm.           0 l    4   16  377    0.000   -0.045   0.039
xzinc.v-yu.com   131.188.3.221    2 u  833 1024  377   73.571  -26.173  27.213
+char-ntp-pool.c .shm0.           1 u  771 1024  377   31.242    0.920  21.549

Diese Revision wurde am 9. Mai 2021 15:28 von frustschieber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: ungetestet, Systemzeit