Uhrzeit über systemd-timesyncd synchronisieren

Vor knapp einem Jahr habe ich einen Artikel über Zeitsynchronisation am Raspberry Pi mittels NTP geschrieben Zum Artikel. NTP kann in zwei Varianten betrieben werden. Im Client Modus wird lediglich die lokale Uhrzeit aktualisiert und im Server Modus können sich andere Geräte im Netzwerk die aktuelle Uhrzeit vom NTP Server abholen. In vielen Fällen ist es vermutlich ausreichend, die Client Funktionalität zu nutzen. Dafür ist NTP aber eine relativ komplexe Lösung mit vielen Möglichkeiten, die gar nicht unbedingt benötigt werden. In vielen Linux Distributionen ist systemd bereits als Init-System implementiert. Ab Version 213 bringt systemd einen sehr leichtgewichtigen Dienst names “timesyncd” mit, der sich um den Abgleich der lokalen Uhrzeit kümmert.

In einer Standardkonfiguration ist der Dienst nicht aktiv. Um zu sehen, ob der Abgleich bereits eingerichtet ist, kann folgender Befehl ausgeführt werden.

timedatectl status

systemd-timesyncd systemd ntp

Bevor der Dienst gestartet wird, müssen die Server, die für den Abgleich der Uhrzeit zuständig sind, in die Konfiguration eingetragen werden.

sudo nano /etc/systemd/timesyncd.conf

Als NTP- und Fallback Server lassen sich hier beliebige NTP Server eintragen. Die folgenden Server dienen nur als Beispiel.

NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.fr.pool.ntp.org

systemd-timesyncd systemd ntp

Nach der Anpassung kann der Dienst gestartet werden.

sudo timedatectl set-ntp true

Durch erneutes prüfen des Status kann das Ergebnis kontrolliert werden.

timedatectl status

systemd-timesyncd systemd ntp

Zusätzlich lässt sich auch der Status des eigentlichen Dienstes prüfen.

systemctl status systemd-timesyncd

systemd-timesyncd systemd ntp

Der Einsatz von systemd-timesync bringt noch einen weiteren Vorteil mit. Systeme die keine Hardware Uhr (RTC) verbaut haben, benötigen keine zusätzlichen Tools wie “Fake-HWClock” mehr, da systemd-timesyncd bei jeder Synchronisation eine lokale Datei mit dem aktuellen Timestamp versieht. Bei einem Neustart wird diese Datei ausgelesen und als Systemzeit verwendet, bis systemd-timesyncd erneut einen Abgleich der Uhrzeit durchgeführt hat. Die Datei liegt unter “/var/lib/systemd/timesync/clock”. Der Pfad ist allerdings in systemd fest vorgegeben und kann nicht geändert werden. Wird das System mit einem Read Only Dateisystem verwendet, kann es hierbei zu Problemen kommen.

Wichtig ist, dass nur ein Mechanismus zum Abgleich der Uhrzeit aktiv ist. Sollte systemd-timesyncd zum Einsatz kommen, kann NTP deaktiviert werden.

sudo systemctl stop ntp && sudo systemctl disable ntp

Um ein leichtgewichtiges System zu haben, ohne die NTP Server Funktionalität zu benötigen, ist systemd-timesyncd zu empfehlen, da es bereits integriert ist, sofern systemd genutzt wird.