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