È possibile impostare NTP per caricare un tempo dal file nel caso in cui non possa essere caricato dalla rete?


3

Ho esaminato la documentazione ma non riesco a trovare nulla di simile. La situazione è che ho un BeagleBone Black che non ha un vero orologio. Per impostazione predefinita, il computer si avvia pensando che sia il 1999 (che è ottimo per festeggiare, ma ...). NTP risolve questo problema, ma solo se la rete è connessa. Altrimenti, è di nuovo 1999. E sfortunatamente, trovo il dispositivo in una posizione in cui non è possibile accedere a Internet e deve anche registrare i tempi che fanno almeno alcuni senso.

Mi è venuto in mente che sarebbe andato bene per i miei scopi se c'era un modo per far sì che NTP leggesse una volta da un file se la rete non era disponibile. Immagino che il file del tempo sia scritto come un cron job o qualcosa all'interno di NTP stesso che ha mantenuto lo stato di questo file.

C'è qualcosa come questo per NTP? Esistono strumenti alternativi che potrebbero realizzare ciò di cui ho bisogno? In particolare, non sarebbe troppo doloroso impostarlo sul BBB?


2
Avrei dovuto intitolare questo "Come faccio a interrompere il mio Beaglebone dalla festa come se fosse il 1999?"
Michael Frank

Risposte:


4

Tu vuoi il fake-hwclock pacchetto. È progettato specificamente per situazioni come questa. Descrizione dalla pagina del pacchetto Debian:

fake-hwclock: Salva / ripristina l'orologio di sistema su macchine senza hardware RTC funzionante

Alcune macchine non hanno un'unità RTC (realtime clock) funzionante o nessun driver per l'hardware esistente. fake-hwclock è un semplice set di script per salvare periodicamente l'orologio corrente del kernel (incluso allo shutdown) e ripristinarlo all'avvio in modo che l'orologio di sistema si mantenga almeno vicino al tempo reale. Ciò fermerà alcuni dei problemi che potrebbero essere causati da un sistema che crede di aver viaggiato nel tempo fino al 1970, come ad esempio la necessità di eseguire controlli del filesystem ad ogni avvio.

Inoltre, l'uso di NTP è ancora consigliato per gestire il falso orologio "alla deriva" mentre l'hardware viene fermato o riavviato.


2

Potresti avere un cronjob eseguito ogni pochi minuti in questo modo:

date +%s > /root/lasttime

Poi hai un altro cronjob (ammesso che tu abbia un cron che capisca le impostazioni dell'ora avanzate, altrimenti in uno script di avvio):

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

Il primo memorizza il tempo in secondi dall'epoca in cui è stato creato /root/lasttime, quindi il riavvio si legge l'ora dal file e imposta la data.

Quindi il tuo tempo sarà sbagliato dalla quantità di tempo in cui il beagle è stato spento. Potresti avere una race condition in cui il primo job cron potrebbe essere eseguito prima del secondo, quindi impostare il tempo su 1999, quindi è meglio renderlo poco frequente o effettuare un check in per assicurarsi che l'ora abbia senso prima di memorizzarlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.