Inny czas w Windows i Linux Mint


18

Najpierw zainstalowałem Linux Mint na Acer Aspire 4930, a następnie uruchomiłem podwójnie system Windows 7.

Zawsze widzę prawidłową godzinę w Linux Mint, ale po uruchomieniu systemu Windows czas jest cofany o kilka godzin, nawet po zresetowaniu, po ponownym uruchomieniu pokazuje ponownie niewłaściwy czas.


Pytania:

  1. Dlaczego to się dzieje?

  2. Co mogę z tym zrobić?

Odpowiedzi:


17

W systemie Windows zegar systemowy RTC jest tradycyjnie przechowywany w czasie lokalnym. W systemach Unix i Linux jest tradycyjnie przechowywany w UTC i /etc/localtimesłuży do wskazywania bieżącej strefy czasowej, dzięki czemu wyświetlany czas jest poprawny.

Te dwa światopoglądy kolidują w konfiguracjach podwójnego rozruchu, ponieważ jest tylko jeden RTC. Zazwyczaj mówisz Linuksowi, że RTC to czas lokalny (ponieważ nie można powiedzieć Windowsowi). Wskaźnik ten waha się od jednego do drugiego systemu Linux, ale ponieważ Mint jest jak Ubuntu prawdopodobnie można ustawić UTC=now /etc/default/rcS. Następnie możesz ustawić zegar na czas lokalny w systemie Windows, a Linux pozostawi go w spokoju.


Uwaga redaktora :

Ten plik nie jest obecny od wersji Linux Mint 19 (a dokładniej od wersji Ubuntu 18.04):

/etc/default/rcS

2
UTC jest już ustawione na nie, różnica czasu wciąż istnieje.
Ballistic

5

Mint 18.2 KDE wydaje się być odporna na inne poprawki (w tym dodatkowe znalezione podczas wyszukiwania). Pliki wymienione w odpowiedziach aecolley i error404 albo już nie istnieją, albo wydają się nie znajdować w miejscu, do którego odnosi się to ustawienie, przynajmniej w bieżącej wersji KDE. Polecenie w odpowiedzi Julie Pelletier zadziałało dla 18,2 cynamonu, ale nie dla 18,2 KDE.

Po wypróbowaniu pół tuzina sugerowanych rozwiązań, następujące naprawiły go dla 18.2 KDE. Przy wyświetlonym prawidłowym czasie uruchom następujące polecenie terminalu:

timedatectl set-local-rtc 1 --adjust-system-clock

Źródło: Wskazówki i porady dotyczące Linux Mint po instalacji [Mint 18 - edycja cynamonowa]

Powinno to również działać w przypadku cynamonu jako alternatywnego rozwiązania, i zakładam również inne DE.

Uwagi redaktora:

  • Nie jest sudowymagane, uruchom to polecenie jako użytkownik.

  • Pozostaje przy ponownym uruchomieniu, powinien być stały.

  • Testowany na Linux Mint 19.1 Cinnamon, który jest oparty na Ubuntu 18.04.


Potwierdzam, że działa na Mint 18.3 Cynamon.
dhrome

@Vlastimil, minęło trochę czasu, odkąd to zrobiłem. Przypominam sobie, że sudo nie jest wymagane (jeśli tak, to bym to uwzględnił w odpowiedzi, a podobne poprawki też nie odnoszą się do sudo, więc jestem pewien, że tak nie jest). I tak, to się utrzymuje.
fixer1234

@ fixer1234 Dziękuję bardzo, kolego! Uratowałeś mi dzień i myślę, że wszyscy :)
LinuxSecurityFreak

3

Najbardziej ogólnym sposobem na to jest:

hwclock --systohc --localtime

który jest trwały podczas restartów i działa na większości systemów.


Jeśli twój zegar wyświetla aktualnie prawidłowy czas, wtedy rzeczywiście potrzebne jest polecenie hwclock --systohc --localtime, które ustawi zegar sprzętowy na czas lokalny przy użyciu wartości aktualnie wyświetlanej przez system. Jeśli jednak Twój zegar jest obecnie niepoprawny (tzn. Zegar sprzętowy jest czasem lokalnym, ale system dodaje przesunięcie dla Twojej strefy czasowej, co powoduje niepoprawną wyświetlaną wartość), musisz hwclock --hctosys --localtime.
dnia

@youen, miałem taką sytuację, a twoja modyfikacja po prostu rzuciła wolny czas w innym kierunku. Rozwiązaniem było dla mnie zresetowanie zegara do prawidłowego czasu, a następnie użycie polecenia w odpowiedzi Julie.
fixer1234

@ fixer1234 OK, dziwne. Szczerze mówiąc, nie wypróbowałem drugiego polecenia w moim komentarzu, ponieważ do tego czasu naprawiłem już zegar. Wierzę jednak, że uruchomienie któregokolwiek z tych poleceń, a następnie ustawienie zegara na prawidłowy wyświetlany czas, załatwi sprawę (ponowne uruchomienie pierwszego polecenia prawdopodobnie nie było konieczne, jeśli wykonałeś już drugie). Cieszę się, że w końcu
Ci się udało

1

OSTRZEŻENIE

Ta metoda jest błędna w wersjach wcześniejszych niż 7 systemu Windows, ale rozwiązuje problem po stronie Windows równania, a nie po stronie Linuksa: nie musisz ustawiać Linuksa na używanie czasu lokalnego .


Zaczerpnięte z najbardziej chwalebnej i cenionej Arch Linux Wiki :

Jednym z powodów, dla których użytkownicy często ustawiają RTC w czasie lokalnym, jest podwójne uruchomienie systemu Windows (który używa czasu lokalnego).

Jednak Windows [może obsłużyć RTC będący UTC] za pomocą prostej poprawki rejestru. Zaleca się skonfigurowanie systemu Windows do korzystania z UTC, a nie systemu Linux do korzystania z czasu lokalnego.

Za pomocą regeditdodaj DWORDwartość 1rejestru o wartości szesnastkowej do rejestru:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

Możesz to zrobić z poziomu uruchomionego wiersza polecenia administratora:

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

Możesz też utworzyć plik * .reg (na pulpicie) z następującą zawartością i kliknąć go dwukrotnie, aby zaimportować do rejestru:

Windows Registry Editor Version 5.00

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

Jeśli powyższe wydaje się nie mieć żadnego efektu i używany jest 64-bitowy wariant systemu Windows, użycie QWORDwartości zamiast DWORDwartości może rozwiązać problem.

Jeśli system Windows poprosi o aktualizację zegara z powodu zmian czasu letniego, pozwól mu. Zostawi zegar w UTC zgodnie z oczekiwaniami, korygując tylko wyświetlany czas.

Zegar sprzętowy i zegar systemowy mogą wymagać aktualizacji po ustawieniu tej wartości. Jeśli masz problemy z przesunięciem czasu, spróbuj ponownie zainstalować tzdata, a następnie ponownie ustawić strefę czasową:

# timedatectl set-timezone America/Los_Angeles

Naprawdę miałem ten problem na własnym komputerze z systemem Windows, ale do tej pory po prostu go ignorowałem; Zobaczę jednak, czy ta metoda działa i przekażę moje ustalenia.
Alexej Magura

1
Mi to pasuje. Wielkie dzięki! W ten sposób nie muszę modyfikować każdej instalacji Linuksa, która jest na moim komputerze.
Lokesh

0

Zmień (jako root) /etc/timeadjzmienną z UTCna LOCAL.

To rozwiązało problem bez konieczności majstrowania przy regedit po stronie Windows.


0

Uruchom jedno z tych dwóch poleceń, które pasują do twojego czasu lokalnego

timedatectl set-local-rtc 1 --adjust-system-clock

'lub'

timedatectl set-local-rtc 0 --adjust-system-clock
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.