Czy NTP można ustawić tak, aby ładował czas z pliku na wypadek, gdyby nie mógł załadować z sieci?


3

Przejrzałem dokumentację, ale nie mogę znaleźć czegoś takiego. Sytuacja jest taka, że ​​mam BeagleBone Black, który nie ma prawdziwego zegara. Domyślnie komputer uruchamia się, myśląc, że jest rok 1999 (co jest świetne na imprezę, ale ...). NTP to rozwiązuje, ale tylko wtedy, gdy sieć jest podłączona. W przeciwnym razie znów jest rok 1999. I niestety, znalazłem urządzenie w miejscu, w którym nie może uzyskać dostępu do Internetu, a także muszę rejestrować czasy, które mają przynajmniej jakiś sens.

Przyszło mi do głowy, że dla moich celów byłoby dobrze, gdyby istniał sposób, aby NTP odczytał godzinę z pliku, jeśli sieć była niedostępna. Wyobrażam sobie, że plik czasu zostałby zapisany albo jako zadanie cron, albo coś w obrębie samego NTP, który utrzymywałby stan tego pliku.

Czy jest coś takiego dla NTP? Czy są jakieś alternatywne narzędzia, które osiągnęłyby to, czego potrzebuję? W szczególności nie byłoby to zbyt wielkim bólem, aby założyć BBB?


2
Powinienem był zatytułowany „Jak powstrzymać mój Beaglebone przed imprezowaniem jak w 1999 roku?”
Michael Frank,

Odpowiedzi:


4

Chcesz fake-hwclockpaczkę. Jest specjalnie zaprojektowany do takich sytuacji. Opis ze strony pakietu Debian:

fake-hwclock: Zapisz / przywróć zegar systemowy na komputerach bez działającego sprzętu RTC

Niektóre maszyny nie mają działającego zegara czasu rzeczywistego (RTC) lub nie ma sterownika dla istniejącego sprzętu. fake-hwclock to prosty zestaw skryptów do okresowego zapisywania aktualnego zegara jądra (w tym przy zamykaniu) i przywracania go podczas rozruchu, aby zegar systemowy utrzymywał przynajmniej czas zbliżony do czasu rzeczywistego. To powstrzyma niektóre problemy, które mogą być spowodowane przez system, który wierzy, że podróżował w czasie do 1970 roku, takie jak konieczność sprawdzania systemu plików przy każdym uruchomieniu.

Ponadto nadal zaleca się korzystanie z protokołu NTP, aby poradzić sobie z „dryfowaniem” fałszywego zegara, gdy sprzęt jest zatrzymany lub uruchamia się ponownie.


2

Możesz mieć cronjob, który działa co kilka minut w następujący sposób:

date +%s > /root/lasttime

Następnie wykonaj kolejną pracę kroniki (zakładając, że masz crona, który rozumie zaawansowane ustawienia czasu, w przeciwnym razie w skrypcie rozruchowym):

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

Pierwszy zapisuje czas w sekundach od epoki do /root/lasttime, a następnie ponownie uruchamia się odczytuje czas z pliku i ustawia datę.

Twój czas będzie zły, gdy czas beagle został wyłączony. Możesz mieć warunki wyścigu, w których pierwsze zadanie crona może zostać wykonane przed drugim, i dlatego ustaw czas na 1999 r., Więc najlepiej jest to robić rzadko lub sprawdzać, aby upewnić się, że czas ma sens przed zapisaniem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.