Skąd Raspberry Pi ma czas?

44

Nie muszę ustawiać zegara (oprócz strefy czasowej) na Raspberry Pi. Skąd bierze się czas? O ile to jest dokładne?

Szufelka
źródło
Świeże instalacje mają czas odbioru z różnych źródeł. Aby uzyskać szczegółowe informacje oraz powód, dla którego powinieneś zmienić go na time.nist.gov, zapoznaj się z tym
pytaniem

Odpowiedzi:

45

Raspbian pobiera czas z serwera NTP („serwera czasu”).

Całkowicie odłącz Raspberry Pi, wyjmij kabel sieciowy i uruchom Raspberry Pi ponownie. Zobaczysz, że data i godzina są nieprawidłowe.

Jeśli chcesz / potrzebujesz datę i godzinę, aby nie być zresetowane bez podłączony do Internetu, musisz zegar czasu rzeczywistego (RTC) - Na przykład coś takiego jak ten - które będą przechowywane obecnego czasu, za pomocą baterii uruchomić zegar. W ten sposób komputer utrzymuje czas, gdy nie jest zasilany.

AKTUALIZACJA Wystarczy zauważyć, że powyższy zegar RTC nie jest jedynym sposobem na zachowanie dokładności czasu między stratami mocy. Możesz także użyć modułu GPS i podłączyć go do pinów GPIO.

Dokładność Jest dość dokładna, chociaż jeśli twój czas jest znacznie opóźniony. Samo poprawienie może potrwać do 3 godzin, ponieważ zmiany z serwera są stopniowo wprowadzane do lokalnego zegara. Stabilność sieci ma największy wpływ na dokładność, ponieważ nieprzewidywalna sieć (coś bardziej bezprzewodowego, na przykład 3G ) bardzo utrudni dokładność. Mówiąc prosto: dokładność jest całkiem dobra, różnica czasu między komputerem a faktycznym czasem (z serwera NTP) jest zwykle mniejsza niż 100 ms .

Vincent P.
źródło
1
niezła odpowiedź. dzięki za link o zegarze sprzętowym
Scoop
1
Niezła odpowiedź; można to poprawić, wymieniając dokładność protokołu NTP.
Alex Chamberlain
@AlexChamberlain Dzięki za podniesienie głowy, zamierzałem go dodać, ale całkowicie wymknęło mi się to z głowy. Dodałem to teraz.
Vincent P
Podczas gdy moje Pi jest podłączone do sieci, zauważam, że czas płynął teraz o 30 minut. Czy ntpd jest domyślnie włączone, czy muszę to robić ręcznie?
andig
Może tak, aż do Raspberry Pi 3. Kupiłem jeden dwa miesiące temu, a aktualizacja czasu NTP jest przykręcona, przynajmniej na oficjalnej Raspbian Jessie. Z tym problemem otworzyłem trzy wątki i wszyscy nie mają pojęcia. Musiałem kupić moduł sprzętowy na czas, aby rozwiązać problem.
Pygmalion
21

Odpowiedź Morgana dała mi wskazówkę, której potrzebowałem, aby rozwiązać problem.

  1. Idź do http://support.ntp.org/bin/view/Servers/NTPPoolServers
    Wybierz region, a następnie kraj i listę serwerów.

  2. Edytuj plik /etc/ntp.conf, np

    sudo vim /etc/ntp.conf

    Zastąp listę serwerów tymi, które znalazłeś na stronie internetowej. na przykład

    serwer 0.dk.pool.ntp.org iburst
    serwer 1.dk.pool.ntp.org iburst
    serwer 2.dk.pool.ntp.org iburst
    serwer 3.dk.pool.ntp.org iburst

    Zapisz i wyjdź.

  3. Uruchom ponownie demona NTTP.

    sudo /etc/init.d/ntp restart

  4. sprawdź, czy data jest poprawna.

    data
    czw 20 czerwca 13:39:20 CEST 2013

Na jednym z moich serwerów data została natychmiast zmieniona. W drugim musiałem poczekać kilka minut.

użytkownik1682960
źródło
2
Jeśli jesteś w Wielkiej Brytanii (lub innym kraju), możesz po prostu zmienić dwuliterowy kod kraju, aby pasował do .egserver 0.uk.pool.ntp.org iburst
Pierz
Krok 4 działał dla mnie dopiero po około 15 minutach. A może dlatego, że uciekłem ntpq -p. Używam: „Raspbian GNU / Linux 7 (wheezy)” i „Linux raspberrypi 4.1.7+ # 817 PREEMPT Sobota 19 września 15:25:36 BST 2015 armv6l GNU / Linux”
Peter Mortensen
Być może hwclocklub fake-hwclockprzeszkadza (ale część „/etc/rc.conf” jest nieaktualna)
Peter Mortensen
ntpq -pCzęść jest z odpowiedzią na jaki czas jest utrzymywana na Raspberry Pi? .
Peter Mortensen
A po 5-minutowym przestoju było to 5 minut za opóźnieniem ( ntpq -pnie miało znaczenia).
Peter Mortensen
14

Jeśli masz fake-hwclockpakiet , wykona on także sztuczkę oszczędzania znacznika czasu, aby zapobiec resetowaniu zegara. To nie przyspieszy czasu, gdy urządzenie jest wyłączone, więc pozostanie w tyle. Wewnętrzny zegar również trochę dryfuje, gdy jest włączony.

Jeśli masz połączenie z Internetem (lub LAN z serwerem) i uruchamiasz ntp (ntpd / ntpdate), możesz uzyskać czas w sieci, jak wskazują inne odpowiedzi. Po zsynchronizowaniu jest naprawdę bardzo dokładny. Serwery online dadzą ci konsensus „czas na świecie”.

XTL
źródło
ciekawe o fake-hwclock. Dlaczego ktoś miałby chcieć zamrozić zegar, gdy urządzenie jest wyłączone? Nie mogę wymyślić takiego przypadku. Jest tu?
Scoop
2
@Scoop Ponieważ alternatywą jest zapomnienie czasu, więc zostanie zresetowane. Spowoduje to, że wszelkie zarejestrowane znaczniki czasu będą wyglądać jak z przyszłości itp. „Zamrożenie” zegara zapewnia, że ​​czas płynie do przodu, nawet jeśli licznik jest wyłączony :)
XTL
1
Oczywiście ntp lub inny sposób ustawienia zegara będzie nadal działał, a fałszywy hwclock działa tylko przy rozruchu i zamykaniu systemu.
XTL
1
dla fake-hwclockArch Arch, użyj archplusplus.co.uk/post/40202081414/...
levinalex
2
Wygląda na to, że ten pakiet jest teraz domyślnie zainstalowany w Raspbian.
Pierz
11

Raspberry Pi nie ma zintegrowanego zegara czasu rzeczywistego (RTC), który zapewnia opłacalność: patrz pytanie „Dlaczego nie ma zegara czasu rzeczywistego (RTC)?” w oficjalnym FAQ . Oznacza to, że po odłączeniu Raspberry Pi traci on swój czas. Po przywróceniu zasilania czas jest inicjowany do 1 stycznia 1970 r. (Inaczej epoka Uniksa ).

Raspberry Pi ustawia swój czas w sieci za pomocą NTP , protokołu synchronizacji zegara między komputerami. Ten protokół jest szeroko stosowany w Internecie, aby zapewnić, że komputery mają ten sam czas i jest wysoce niezawodny, ponieważ niektóre maszyny są przeznaczone do obliczania czasu za pomocą zegarów atomowych .

ntpdto demon (oprogramowanie w tle) uruchomił czas rozruchu i jest odpowiedzialny za synchronizację czasu przy użyciu protokołu NTP. ntpdmożna skonfigurować za pomocą pliku /etc/ntp.conf. Na przykład w tym miejscu można ustawić serwery tak, aby żądały czasu.

Morgan Courbet
źródło
Czy nie pamięta ostatniego razu? Zamknąłem Raspberry Pi tydzień temu i dateteraz pokazuje tę tygodniową datę plus, myślę, kilka dodatkowych godzin od przestoju wczoraj i dziś (po niektórych restartach wczoraj i dziś). (Raspbian, odpowiadający połowie 2015 r.).
Peter Mortensen,
Uruchom, cat /etc/fake-hwclock.dataa zobaczysz, jak ostatni raz fake-hwclockzaoszczędził czas (oczywiście w czasie wyłączenia). fake-hwclockjest używany w RPi do naśladowania prawdziwego zegara. Myślę, że uruchomiłeś swoje RPi bez dostępu do Internetu lub bez ntpdaktualizacji czasu. Czy możesz to potwierdzić?
Morgan Courbet,
5

Raspbian Stretch: NTP nie jest domyślnie instalowany

Wygląda na to, że w Raspbian Stretch nastąpiła niewielka zmiana. Krótko mówiąc, ntp nie jest już zainstalowany. Bieganie dpkg -l | grep ntpnic nie zwraca.

Najwyraźniej Stretch porzucił ntpaplikację na rzecz systemd. Sprawdź man timesyncdwpis, aby uzyskać szczegółowe informacje na temat ustawień konfiguracji. timesyncdnadal używa serwerów NTTP do aktualizacji czasu. Jeśli chcesz skonfigurować te serwery ręcznie, możesz to zrobić w /etc/systemd/timesyncd.confpliku.

b_laoshi
źródło
1
Po dokonaniu edycji uruchom ponownie usługę, sudo systemctl restart timesyncda następnie sprawdź dzienniki, journalctl -u timesyncd -fczasem korporacyjne zapory blokują port. W takich przypadkach użyj podanego adresu URL korporacyjnego serwera NTTP.
typelogic
Wierzę, że poprawna nazwa demona jest systemd-timesyncdtaka, że ​​polecenie ponownego uruchomienia będziesystemctl restart systemd-timesyncd
chb
3

Jeśli szukasz sposobu na rejestrowanie lub utrzymywanie czasu w trybie offline , możesz dodać układ zegara czasu rzeczywistego , na przykład DS1307 .

Marius Butuc
źródło
Istnieją dość rozsądne rozwiązania RTC do kupienia, np. Cjemicros.co.uk/micros/indidual/newprodpages/…
Pierz