Linux: jak wyłączyć czas amerykański i przywrócić poprawną strefę czasową

ByTomasz Sanecki

Linux: jak wyłączyć czas amerykański i przywrócić poprawną strefę czasową

W tym poście pokażemy, jak zmienić czas w systemie Linux.

Jeśli na komputerze masz zainstalowane zarówno systemy Windows, jak i Linux, prawdopodobnie zauważyłeś, że po przełączeniu się z Linuksa na Windows wyświetlany czas różni się od czasu lokalnego. Dzieje się tak, ponieważ Linux zakłada, że zegar sprzętowy jest zsynchronizowany z czasem uniwersalnym (UTC), podczas gdy Windows zakłada, że jest on zgodny z czasem lokalnym.

Rozwiązaniem jest zmuszenie systemu Windows do wykonywania obliczeń w oparciu o czas UTC lub systemu Linux w czasie lokalnym.

Dlaczego Linux pokazuje “inny” czas niż Windows

Od dawna, być może od zawsze, komputery wyposażone były w RTC, czyli Real Time Clock (inaczej jest w Raspberry czy Banana Pi o czym pisałem tutaj: Obsługa zewnętrznego RTC w Banana Pi). Jest to układ, który jest po prostu zegarem. Bateria w komputerze (często CR2032) służy nie tylko do podtrzymania ustawień Biosu, czy teraz bardziej UEFI, ale też do zasilania tego zegara.

Później ten czas jest odczytywany przez system operacyjny i od ery internetu, korygowany na podstawie zegara wzorcowego, odczytywanego z sieci po protokole NTP (network time protocol). Dlatego komputery podłączone do internetu mają bardzo dokładny zegarek, system operacyjny koryguje czas u siebie oraz w RTC.

Windows, podczas uruchamiania, wprost przepisuje czas z RTC, czyli godzina w Windowsie jest identyczna z tą w UEFI/BIOS.

W linuksach jest to zrobione inaczej, być może dla przeciętnego użytkownika komputera nie lepiej ani gorzej, ale na pewno profesjonalniej. Otóż Linux zakłada, że RTC odmierza wzorcowy czas uniwersalany, skrótowo opisany UTC (Universal Time Coordinated).

Polska znajduje się w strefie CET (Central European Time), nasz czas jest przesunięty o godzinę w przód, względem UTC, czyli UTC+1:00. I teraz zaczyna się problem. Linux podczas uruchamiania, gdy ma dostęp do sieci, odpytuje zdefiniowany serwer NTP, zapisuje czas UTC do sprzętowego zegara RTC, a sam wyświetla czas skonfigurowanej strefy czasowej, czyli dodaje lub odejmuje odpowiednie przesunięcie.

Dla przykładu - jest godzina 20:54 - taką pokaże Linux, ale w RTC będzie (zależnie czy czas letni/zimowy) 18:54 lub 19:54. Później uruchamiamy Windows, który odczytuje czas z RTC i wyświetla go wprost, bez korekty dla strefy, czyli mamy opóźnienie godziny lub dwóch, zamiast czasu CET, mamy pokazywany czas UTC.

Jak sprawdzić aktualne ustawienia czasu w Linux (timedatectl)

Za kontrolę czasu i daty w Linuksie Mint i nie tylko, odpowiada usługa timedatectl. Widzimy tu nasz aktualny czas, czas UTC, czas RTC identyczny z UTC, ustawioną strefę czasową.

Jest też informacja, że zegar jest synchronizowany z wzorcem w sieci (Network time on: yes), że jeszcze nie został zsynchronizowany (NTP synchronized: no) i że zegar RTC nie pracuje w naszej strefie czasowe (RTC in local TZ: no), czyli RTC pokazuje czas UTC.

Jeśli by zmienić tą ostatnią opcję, to zniknie problem z czasem w Windows, bo Linux będzie traktował czas w RTC jak nasz aktualny. Od teraz Linux w kwestii czasu jest tak samo upośledzony jak Windows, czyli wprost przepisuje czas z RTC, jako czas bieżący.

Pojawiło się też ostrzeżenie, że takie ustawienie nie jest najlepsze, że generuje rozmaite problemy, choćby ze zmianą czasu letni/zimowy, nas to jednak nie dotyczy.

Podobnie możesz napotkać różne zachowania przy hibernacji. Mi debian automatycznie zmienił i nawet będąc w hibernacji:Kod:Obecnie mam zainstalowane tylko:Kod:Ale przy synchronizacji czasu, które wymuszam po każdym odhibernowaniu, czas nie był fixnięty o 1h+ 0,004282s, tylko o samą końcówkę, także czas nie został poprawiony przez ntp, czyli się zmienił automatycznie.

Poza tym masz w logu info:Kod:Daj mu timedatectl set-local-rtc 0Ja generalnie jak się bawiłem archem, to przy konfiguracji czasu dawałem coś takiego:Kod:Przy czym, ja miałem do tego demona ntp, bo jakoś nie potrafię się bez niego obejść.

Jak ustawić strefę czasową (UTC vs czas lokalny)

TZ=Zona_horaria date Zastąpienie strefy czasowej nazwą, pod którą pojawia się na liście.

Jeśli nie podoba Ci się zegar na Twoim pulpicie, w naszych repozytoriach znajdziesz kilka aplikacji , które umożliwiają sprawdzenie godziny. Może również pojawiać się w menedżerach pakietów pod nazwą Zegary. Kolejny tytuł dostępny w repozytoriach.

Jak wskazuje litera „D” w tytule, jest to zegar cyfrowy, który symuluje wyświetlanie cyfr za pomocą diod LED. Ten program do przechowywania danych wyświetla czas w różnych częściach świata . Cyfrowy zegar w stylu vintage , którego wygląd można dostosować za pomocą arkuszy stylów.

Co robi timedatectl set-local-rtc i jak to wpływa na Windows

Jeśli by zmienić tą ostatnią opcję, to zniknie problem z czasem w Windows, bo Linux będzie traktował czas w RTC jak nasz aktualny.

Od teraz Linux w kwestii czasu jest tak samo upośledzony jak Windows, czyli wprost przepisuje czas z RTC, jako czas bieżący.

Pojawiło się też ostrzeżenie, że takie ustawienie nie jest najlepsze, że generuje rozmaite problemy, choćby ze zmianą czasu letni/zimowy.

W tym miejscu możesz również zweryfikować, czy RTC działa w naszej strefie czasowe. Widzimy informację, że zegar RTC nie pracuje w naszej strefie czasowe (RTC in local TZ: no), czyli RTC pokazuje czas UTC.

Jeśli zmienisz tę logikę, system przestanie “mieszać” UTC z czasem lokalnym.

Uwaga praktyczna: “poważny” problem to rozjazd RTC i wyświetlania

Jeden z problemów, który należy rozwiązać, jest brak synchronizacji między dwoma zegarami (które stosują różne metody pomiaru czasu) a czasem rzeczywistym.

Aby temu zaradzić, po uruchomieniu komputera zegar systemowy odczytuje czas z zegara czasu rzeczywistego i stosuje formułę korekcyjną.

Zauważyłeś na starych komputerach, że jeśli nie ma połączenia z Internetem, czas, zamiast rzeczywistego, jest zaledwie kilka minut po tym, jak go wyłączyłeś.

Układ scalony na płycie głównej mierzy upływ czasu za pomocą oscylacji kryształu.

Innymi słowy: problem “czas amerykański / inna strefa” wynika z tego, jak system interpretuje RTC i jak liczy przesunięcie względem UTC.

Najprostsza ścieżka do rozwiązania w systemie z Windows + Linux

Linux zakłada, że zegar sprzętowy jest zsynchronizowany z czasem uniwersalnym (UTC), podczas gdy Windows zakłada, że jest on zgodny z czasem lokalnym. Rozwiązaniem jest zmuszenie systemu Windows do wykonywania obliczeń w oparciu o czas UTC lub systemu Linux w czasie lokalnym.

Jeśli zmienisz ustawienie, w którym RTC jest traktowany jako czas lokalny, zniknie problem z czasem w Windows, bo Linux będzie traktował czas w RTC jak nasz aktualny.

Dla kontroli czasu i daty w Linux Mint i nie tylko odpowiada usługa timedatectl. Widzimy tu nasz aktualny czas, czas UTC, czas RTC identyczny z UTC, ustawioną strefę czasową.

Jest też informacja, że zegar jest synchronizowany z wzorcem w sieci (Network time on: yes), że jeszcze nie został zsynchronizowany (NTP synchronized: no) i że zegar RTC nie pracuje w naszej strefie czasowe (RTC in local TZ: no), czyli RTC pokazuje czas UTC.

Jeśli chcesz “wyłączyć czas amerykański”, w praktyce sprowadza się to do ustawienia właściwej strefy czasowej i spójnego traktowania RTC (UTC albo czas lokalny) między systemami.

Minimalna lista rzeczy do sprawdzenia

  • Jaką masz ustawioną strefę czasową (timedatectl pokazuje ustawioną strefę czasową).
  • Czy RTC działa jako UTC czy “w lokalnej strefie” (RTC in local TZ: no).
  • Czy synchronizacja z siecią działa (Network time on: yes, NTP synchronized: no).

W przypadku, gdy “przeskakują” godzinę lub dwie podczas przełączania systemów, to właśnie rozjazd między interpretacją czasu w Linux a interpretacją czasu w Windows jest kluczowy.

Za podział godzin na 60 minut odpowiadają Babilończycy. Prawdopodobnie najstarszym sposobem mierzenia czasu jest pozycja słońca. Dzień był okresem, który upłynął, zanim słońce powróciło na swoje miejsce. W X wieku pojawiły się zegary słoneczne, które rzucały cienie, zaznaczając upływ godzin w ciągu dnia. To historyczny kontekst, ale w komputerach liczy się przede wszystkim to, jak zegar sprzętowy i systemowy są synchronizowane względem UTC i strefy lokalnej.

Komputery mają dwa sposoby pomiaru upływu czasu. Jest zasilany bateryjnie i działa nawet przy wyłączonym komputerze. Używamy terminu „zegar” w luźnym znaczeniu, ponieważ nie posiada przycisków, wskazówek ani diod LED. Jest to układ scalony na płycie głównej, odpowiedzialny za działanie zegara systemowego. Układ ten zawiera oscylator kwarcowy oparty na krysztale piezoelektrycznym.

To wyjaśnia, dlaczego po poprawnym ustawieniu sposobu interpretacji RTC i strefy czasowej problem rozjazdu powinien ustąpić.

Schemat UTC vs strefa lokalna

W linuksach jest to zrobione inaczej, być może dla przeciętnego użytkownika komputera nie lepiej ani gorzej, ale na pewno profesjonalniej. Otóż Linux zakłada, że RTC odmierza wzorcowy czas uniwersalany, skrótowo opisany UTC (Universal Time Coordinated). I teraz zaczyna się problem, kiedy Windows odczytuje RTC “wprost”.

Spójność czasu połączenie z NTP

Linux podczas uruchamiania, gdy ma dostęp do sieci, odpytuje zdefiniowany serwer NTP, zapisuje czas UTC do sprzętowego zegara RTC, a sam wyświetla czas skonfigurowanej strefy czasowej, czyli dodaje lub odejmuje odpowiednie przesunięcie.

Windows, podczas uruchamiania, wprost przepisuje czas z RTC, czyli godzina w Windowsie jest identyczna z tą w UEFI/BIOS.

Dla przykładu - jest godzina 20:54 - taką pokaże Linux, ale w RTC będzie (zależnie czy czas letni/zimowy) 18:54 lub 19:54. Później uruchamiamy Windows, który odczytuje czas z RTC i wyświetla go wprost, bez korekty dla strefy.

W konsekwencji: jeśli chcesz “wyłączyć czas amerykański” (czyli zredukować objawy wskazywania innej strefy), dopasuj strefę czasową oraz logikę RTC między systemami.

Powiązane scenariusze: MONITOR i komunikacja sieciowa (jeśli dotyczy)

Celem tego artykułu jest udostępnienie wskazówek dotyczących zmniejszania powierzchni ataku powodującego wzmocnienie protokołu UDP (User Datagram Protocol). Protokół UDP (User Datagram Protocol) jest protokołem bezpołączeniowym.

W szczególności konfiguracje użytkowników, którzy muszą mieć przychodzący protokół UDP dla portu 53 (DNS) lub portu 123 (NTP), powinny mieć usunięte podatne na zagrożenia konfiguracje wymienione w tym artykule.

Użytkownicy powinni ocenić, czy muszą publicznie udostępnić te porty w Internecie, a następnie zamknąć wszystkie porty UDP, które nie są absolutnie niezbędne.

Nie. Są to standardowe porty dla usług UDP.

Porty UDP używane przez NTP DNS

Wersje pakietu NTPD wcześniejsze niż 4.2.8 są podatne na ataki odbicia UDP za pośrednictwem polecenia monlist. To nie jest zalecana konfiguracja. Użytkownicy powinni korzystać z następujących dokumentów, aby dowiedzieć się, jak skonfigurować synchronizację czasu dla swoich maszyn wirtualnych platformy Azure.

Uwaga 3: Nie ma to wpływu na zwykłe pakiety NTP używane do synchronizacji czasu (tryb 3 i tryb 4).

To tylko kontekst bezpieczeństwa sieciowego, ale jeśli NTP/DNS są blokowane lub źle skonfigurowane, zegar w systemie może zachowywać się inaczej.

Ważne ustawienie: TZ (strefa) i dopasowanie do właściwego regionu

TZ=Zona_horaria date Zastąpienie strefy czasowej nazwą, pod którą pojawia się na liście.

Odpowiednie ustawienie strefy czasowej pozwala, aby Linux wyświetlał czas zgodny z lokalnym przesunięciem względem UTC (na przykład CET/UTC+1:00).

Linux podczas uruchamiania zapisuje czas UTC do RTC i wyświetla czas skonfigurowanej strefy czasowej, czyli dodaje lub odejmuje odpowiednie przesunięcie. Gdy Windows odczytuje RTC “wprost”, rozjazd pojawia się, jeśli RTC jest interpretowane inaczej.

Dlatego w praktyce dobiera się sposób pracy RTC tak, by oba systemy “rozumiały” ten sam czas: albo UTC, albo czas lokalny.

Rozdział 20 Egzamin Red Hat Linux 7.x EX 300 Korzystanie z narzędzia timedatectl i Chrony

Za kontrolę czasu i daty w Linux Mint i nie tylko, odpowiada usługa timedatectl. Widzimy tu nasz aktualny czas, czas UTC, czas RTC identyczny z UTC, ustawioną strefę czasową.

Jest też informacja, że zegar jest synchronizowany z wzorcem w sieci (Network time on: yes), że jeszcze nie został zsynchronizowany (NTP synchronized: no) i że zegar RTC nie pracuje w naszej strefie czasowe (RTC in local TZ: no), czyli RTC pokazuje czas UTC.

Jeśli zmienisz tę logikę, “czas amerykański” jako objaw rozjazdu powinien przestać się pojawiać.

Element Co oznacza Jak wpływa na rozjazd
UTC (RTC) Linux zakłada, że RTC odmierza czas uniwersalny (UTC) Windows może odczytać RTC “wprost” i przesunąć godzinę
Strefa czasowa (wyświetlanie) Linux wyświetla czas dla skonfigurowanej strefy Nieprawidłowa strefa daje wrażenie “innego czasu”
RTC in local TZ Określa, czy RTC jest traktowany jak lokalny czas Gdy zostanie zmienione, problem z czasem w Windows może zniknąć
NTP synchronized Czy zegar zsynchronizował się z wzorcem w sieci Gdy brak synchronizacji, czas może się rozjeżdżać

tags: #linux #jak #wylaczyc #czas #amerykanski

Popularne posty:

About the author

Tomasz Sanecki administrator

Informatyk z zawodu i zamiłowania. Od 2007r właściciel firmy Perfect Systems. Specjalista do spraw bezpieczeństwa IT, serwisu urządzeń elektronicznych, sieci komputerowych. Prywatnie mąż i ojciec dwójki dzieci. Pasjonat nowoczesnych technologii, motocykli oraz włoskiego espresso.