Kann NTP so eingestellt werden, dass eine Zeit aus einer Datei geladen wird, falls diese nicht vom Netzwerk geladen werden kann?

488
metasoarous

Ich habe mir die Dokumentation angesehen, aber nichts dergleichen finden. Die Situation ist, dass ich einen BeagleBone Black habe, der keine echte Uhr hat. Standardmäßig startet der Computer mit dem Gedanken, dass es 1999 ist (was für Partys ideal ist, aber ...). NTP behebt dies, jedoch nur, wenn das Netzwerk angeschlossen ist. Ansonsten ist es wieder 1999. Und leider habe ich das Gerät an einem Ort installiert, an dem es keinen Internetzugang gibt, und es müssen auch Protokollierungszeiten erstellt werden, die zumindest einen Sinn ergeben.

Mir ist aufgefallen, dass es für meine Zwecke in Ordnung wäre, wenn es eine Möglichkeit gäbe, dass NTP eine Zeit aus einer Datei liest, wenn das Netzwerk nicht verfügbar war. Ich kann mir vorstellen, dass die Zeitdatei entweder als Cron-Job oder als etwas in NTP selbst geschrieben wurde, das den Status dieser Datei aufrechterhält.

Gibt es so etwas für NTP? Gibt es alternative Hilfsmittel, um das zu erreichen, was ich brauche? Insbesondere wäre das kein zu großer Schmerz für die BBB?

3
Hätte dies "Wie kann ich verhindern, dass mein Beaglebone wie 1999 feiert?" Michael Frank vor 9 Jahren 2

2 Antworten auf die Frage

4
dfc

Sie wollen das fake-hwclockPaket. Es ist speziell für solche Situationen konzipiert. Beschreibung von der Debian-Paketseite:

fake-hwclock: Speichern / Wiederherstellen der Systemuhr auf Maschinen ohne funktionierende RTC-Hardware

Einige Maschinen verfügen nicht über eine Echtzeituhr (RTC) oder keinen Treiber für die vorhandene Hardware. fake-hwclock ist ein einfacher Satz von Skripten, um die aktuelle Uhr des Kernels in regelmäßigen Abständen (einschließlich beim Herunterfahren) zu speichern und beim Booten wiederherzustellen, sodass die Systemuhr mindestens in der Nähe der Echtzeit bleibt. Dadurch werden einige der Probleme beseitigt, die von einem System verursacht werden können, das glaubt, es sei in der Zeit vor 1970 angelaufen, z. B. dass bei jedem Start Dateisystemprüfungen durchgeführt werden müssen.

Darüber hinaus wird die Verwendung von NTP immer noch empfohlen, um zu verhindern, dass die gefälschte Uhr "driftet", wenn die Hardware angehalten oder neu gestartet wird.

2
Paul

Du könntest einen Cronjob haben, der alle paar Minuten so lief:

date +%s > /root/lasttime 

Dann haben Sie einen weiteren Cronjob (vorausgesetzt, Sie haben einen Cron, der erweiterte Zeiteinstellungen versteht, ansonsten in einem Bootup-Skript):

@reboot date +%s -s `cat /root/lasttime` 

Beim ersten wird die Zeit in Sekunden seit der Epoche /root/lasttimegespeichert, dann liest der Neustart die Uhrzeit aus der Datei und stellt das Datum ein.

Ihre Zeit wird also falsch sein, wenn der Beagle ausgeschaltet wurde. Möglicherweise gibt es eine Race-Bedingung, bei der der erste Cron-Job möglicherweise vor dem zweiten ausgeführt wird. Stellen Sie daher die Zeit auf 1999 ein. Daher empfiehlt es sich, dies selten zu tun oder einen Check durchzuführen, um sicherzustellen, dass die Zeit sinnvoll ist, bevor Sie sie speichern.