Czas lokalny systemu Windows czy Linux?

40

Odkąd zacząłem używać Linuksa w trybie podwójnego rozruchu w systemie Windows, zauważyłem, że kiedy ponownie uruchomiłem komputer, czas w innym systemie operacyjnym był zły, np. W Linuksie była godzina 12:00, następnie zrestartowałem się, aw systemie Windows 18:00, i kiedy sprawdziłem BIOS, RTC ustawiono na 18:00. Ponieważ moja strefa czasowa to -06: 00 CST, zakładam, że Linux po prostu ustawia czas RTC na UTC i ponownie oblicza czas na podstawie strefy czasowej, podczas gdy Windows po prostu ustawia RTC na czas lokalny. Oba używają tego samego serwera NTP do synchronizacji czasu.

Pytanie brzmi: kto robi właściwą rzecz? W którym z nich należy ustawić ustawienie strefy czasowej na UTC, aby mieć odpowiedni czas w obu przypadkach?

arielnmz
źródło
powiązane: Czas na
zegarze
pytanie poboczne: dlaczego tak się nie stało ze starszymi wersjami systemu Windows i Linux?
golimar

Odpowiedzi:

16

Żadne nie jest złe, ale korzystanie z UTC jest bardziej właściwe. RTC nie ma strefy czasowej; to tylko głupi zegar ścienny. Jeśli Twoja lokalna strefa czasowa uwzględnia DST (których jest wiele smaków, a zasady zmieniają się arbitralnie), to dwa razy w roku musisz je zmienić. System operacyjny zrobi to za Ciebie, ale jeśli RTC to UTC, system operacyjny i tak dokonuje tłumaczenia lokalnego UTC-> po co majstrować przy zegarze? Co więcej, podczas przejścia „cofania się” DST, RTC nie może powiedzieć, która jest godzina! Czy jest 1:30 CDT lub CST?

Najwyraźniej Windows 8 obsługuje UTC dla RTC. Windows 7 również, ale były problemy .

Był lepszy argument przeciwko temu, gdy ludzie ustawiali zegary BIOS ręcznie, ale czas na serwerze jest teraz znacznie bardziej powszechny.

Rozpoznać
źródło
68

Niedawno napotkałem ten sam problem i tak go naprawiłem. Musisz dokonać niewielkiej zmiany w obu systemach operacyjnych.

Najpierw zacząłem od Linuksa. Uruchom następujące polecenia jako root.

ntpdate pool.ntp.org

Spowoduje to zaktualizowanie Twojego czasu, jeśli nie zostanie poprawnie ustawiony.

Teraz za pomocą tego polecenia ustaw zegar sprzętowy na UTC.

hwclock --systohc --utc

Źródło

Teraz uruchom system Windows i dodaj następujący rejestr. Wystarczy utworzyć plik .reg, używając poniższego kodu w Notatniku. Zapisz i uruchom.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001

Źródło

Od następnego rozruchu oba systemy pokażą ci właściwy czas.

Ayan
źródło
6
Najlepsza udokumentowana odpowiedź z konkretnymi instrukcjami! +1.
agtoever
1
Powinny obejmować wersje systemu Windows, których dotyczy modyfikacja rejestru.
Tanath,
2
Kiedy system Windows zyskał zdolność rozumienia zegara systemowego, który odmierza czas inny niż lokalny?
Mark
1
Ta poprawka rejestru działa w systemie Windows XP / Vista / 7/8 / 8.1. @Tanath
Ayan
3
@Zaznacz w systemie Windows XP.
Michael Hampton
4

Normalnym przypadkiem jest to, że systemy Linux mają RTC (zegar czasu rzeczywistego) ustawiony na UTC, a konwersja na czas lokalny odbywa się w przestrzeni użytkownika na podstawie danych strefy czasowej i TZzmiennej środowiskowej. Jest to „mniej złe”, ponieważ utrzymuje monotoniczny wzrost systemu RTC i stosuje później każdą magię strefy czasowej, zapewniając na przykład, że żadne pliki zwykle nie będą miały znacznika czasu w przyszłości (co może się zdarzyć co najmniej raz w roku, jeśli system RTC jest ustawiony na czas lokalny). Jak zauważył Ken , sama RTC nie ma pojęcia strefy czasowej, tylko czas.

Jak zauważyłeś, powoduje to problemy podczas podwójnego uruchamiania z systemem, który normalnie nie działa w ten sposób, jak rodzina systemów operacyjnych Microsoft, które zazwyczaj oczekują ustawienia RTC na czas lokalny . Tak, Windows NT (tak naprawdę myślę, że wracam do NT 4) może współpracować z RTC ustawionym na UTC, ale przynajmniej na koniec wyglądałem, że to nie jest obsługiwana konfiguracja i było wiele zastrzeżeń.

Prostym rozwiązaniem w twoim przypadku jest prawdopodobnie ustawienie RTC na czas lokalny, powiedz systemowi Linux, że RTC jest ustawiony na czas lokalny (dokładna mechanika robienia tego zależy od wersji dystrybucji i wydania, ale najwyraźniej w Ubuntu ustawiłeś UTC=no/ etc / default / rcS ), a następnie skonfiguruj systemy operacyjne tak, aby tylko jeden z nich (najlepiej ten, którego używasz najczęściej, ponieważ czas wyświetlany we wszystkich innych przypadkach będzie niepoprawny dwa razy w roku, dopóki nie zostanie uruchomiony i miał szansę aby to poprawić) obsługuje zmiany czasu letniego . I żyj z wadami, którymi powinien zarządzać system jednego użytkownika.

Możesz również ustawić po stronie systemu Windows, aby używał UTC jako strefy czasowej i wyłączał automatyczne zmiany czasu letniego w systemie Windows, i ustaw Linux na RTC w UTC i wyświetlanie czasu konwertowanego zgodnie z jego praktykami. Spowoduje to jednak wyświetlenie przez system Windows daty i godziny w UTC, co może nie być tym, czego naprawdę chcesz. Nie jest to duży problem dla nas, Europejczyków, którzy są co najwyżej trzy godziny wolnego od UTC, ale mogą być bardziej problemem w Stanach Zjednoczonych. Jest to prawdopodobnie bardziej realistyczna opcja, jeśli używasz tylko systemu Windows od czasu do czasu, a twoim głównym systemem operacyjnym jest Linux lub inny system operacyjny obsługujący RTC-UTC.

CVn
źródło
Czy masz jakieś informacje na temat „nie była to tak naprawdę obsługiwana konfiguracja i było wiele zastrzeżeń”?
Random832
@ Random832 Pokaż mi, czy mogę to znaleźć. Wiem, że widziałem go wcześniej, ale teraz nie mogę go znaleźć przynajmniej za pomocą szybkiego wyszukiwania w Google.
CVn
2

Jeśli podczas podwójnego rozruchu występują konflikty czasowe między Windows a Ubuntu, dzieje się tak, ponieważ Ubuntu domyślnie zapisuje czas na zegarze sprzętowym jako UTC, podczas gdy Microsoft Windows przechowuje czas jako czas lokalny, powodując w ten sposób konflikt między czasem Ubuntu i Windows.

Musisz ustawić swój system Linux na korzystanie z czasu lokalnego, jak wyjaśniono tutaj w tym przewodniku dla Ubuntu .

JakeGould
źródło
Wykorzystuje czas lokalny i jestem świadomy, że rzeczywiście przechowuje czas jako UTC (jeśli przynajmniej przeczytasz pytanie), i wiem, co mogę zrobić, aby to naprawić, pytanie brzmi, które z nich jest właściwe zamiast tego zmień drugie.
arielnmz
Domyślnie Windows używa czasu lokalnego, Mac OS używa UTC, a systemy operacyjne podobne do UNIX są różne. System operacyjny, który korzysta ze standardu UTC, na ogół weźmie pod uwagę czas CMOS (zegar sprzętowy) i czas UTC (GMT, czas Greenwich) i dostosuje go podczas ustawiania czasu systemowego przy rozruchu zgodnie z twoją strefą czasową.
Znów jestem tego świadomy, chcę tylko wiedzieć, który system operacyjny robi to dobrze, więc mogę np. Ustawić strefę czasową systemu Windows na UTC i naprawić to, lub na odwrót.
arielnmz
@MagomedSegaIsmailov Czy Mac OS działa na dowolnym systemie korzystającym z BIOS RTC? Zakładałbym, że EFI zapewnił trochę zdrowia psychicznego.
Random832,
0

Jestem podwójnym uruchamianiem systemu Windows 10 i remiksowania systemu operacyjnego i po prostu przestrzeganie tylko przewodnika dla systemu Windows zadziałało dla mnie, oba czasy są poprawne. Użyłem wiersza polecenia, aby dodać ci skrypt, ponieważ było łatwiej

Edwin Correa
źródło
Nie dodawaj „dziękuję” jako odpowiedzi. Zainwestuj trochę czasu na stronie, a zdobędziesz wystarczające uprawnienia do głosowania na odpowiedzi, które Ci się podobają, co jest sposobem Super Użytkownik na podziękowanie.
DavidPostill