Konflikty czasowe wielu systemów rozruchowych
Systemy operacyjne przechowują i pobierają czas w zegarze sprzętowym znajdującym się na płycie głównej, dzięki czemu może on śledzić czas, nawet gdy system nie ma zasilania. Większość systemów operacyjnych (Linux / Unix / Mac) domyślnie zapisuje czas na zegarze sprzętowym jako UTC , chociaż niektóre systemy (zwłaszcza Microsoft Windows) przechowują czas na zegarze sprzętowym jako czas „lokalny”. Powoduje to problemy w systemie podwójnego rozruchu, jeśli oba systemy inaczej patrzą na zegar sprzętowy.
Zaletą posiadania zegara sprzętowego jako UTC jest to, że nie trzeba zmieniać zegara sprzętowego podczas przemieszczania się między strefami czasowymi lub gdy zaczyna się lub kończy czas letni (DST), ponieważ UTC nie ma przesunięcia DST ani strefy czasowej.
Zmiana systemu Linux na czas lokalny jest łatwiejsza i bardziej niezawodna niż zmiana systemu Windows na UTC, więc systemy Linux / Windows z podwójnym uruchomieniem zwykle używają czasu lokalnego.
Od czasu Intrepid (8.10) domyślnym jest UTC = tak.
Niech Windows używa UTC
Uwaga: Ta metoda początkowo nie była obsługiwana w systemach Windows Vista i Server 2008, ale wróciła z Vista SP2, Windows 7, Server 2008 R2 i Windows 8 / 8.1.
Aby MS Windows obliczył czas z zegara sprzętowego jako UTC.
Utwórz plik o nazwie WindowsTimeFixUTC.reg z następującą zawartością, a następnie kliknij go dwukrotnie, aby scalić zawartość z rejestrem:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001
Uwaga: Usługa Czas systemu Windows będzie nadal zapisywać czas lokalny w RTC, niezależnie od powyższego ustawienia rejestru przy zamykaniu, więc wygodnie jest wyłączyć usługę Czas systemu Windows za pomocą tego polecenia (jeśli synchronizacja czasu jest nadal wymagana, podczas gdy w systemie Windows użyj dowolnego czasu innej firmy rozwiązanie synchronizacji):
sc config w32time start= disabled
Cofanie zmiany
Możesz utworzyć plik o następującej treści, a następnie kliknąć go dwukrotnie, aby scalić oryginalne zmiany, jak wyżej:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=-
Jeśli usługa Czas systemu Windows została wyłączona, włącz ją ponownie za pomocą polecenia:
sc config w32time start= demand
Niech Linux używa czasu „lokalnego”
Aby poinformować system Ubuntu, że zegar sprzętowy jest ustawiony na czas „lokalny”:
Systemy starsze niż Ubuntu 15.04 (np. Ubuntu 14.04 LTS):
- edytować
/etc/default/rcS
dodaj lub zmień następującą sekcję
# Set UTC=yes if your hardware clock is set to UTC (GMT)
UTC=no
Systemy Ubuntu 15.04 i nowsze (np. Ubuntu 16.04 LTS):
otwórz terminal i wykonaj następujące polecenie
timedatectl set-local-rtc 1
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Aby ustawić zegar BIOS na czas lokalny zamiast UTC w wersji systemowej (15.04 i nowszej), będziesz musiał użyć
timedatectl
polecenia. Według Arch Wiki :źródło
Twoja strefa czasowa to wschodnia , czyli obecnie EDT (wschodni czas letni). EDT to UTC minus cztery godziny, to samo co przesunięcie, którego doświadczasz.
Kiedy dzieje się tak w systemie podwójnego rozruchu, zwykle dzieje się tak, ponieważ jeden system operacyjny uważa, że zegar sprzętowy śledzi czas lokalny, podczas gdy drugi system operacyjny uważa, że zegar sprzętowy śledzi UTC.
W twoim przypadku zegar sprzętowy jest prawdopodobnie ustawiony na czas lokalny i:
Jeśli miałbyś po prostu zresetować czas w systemie Ubuntu, ręcznie lub automatycznie , byłoby to błędne w systemie Windows, więc to nie jest dobre rozwiązanie.
Zamiast tego najlepszym rozwiązaniem jest prawdopodobnie ponowna konfiguracja systemu Ubuntu, aby traktował czas zegara sprzętowego jako czas lokalny (wtedy możesz zostawić konfigurację systemu Windows i czas zegara sprzętowego samodzielnie).
Aby to zrobić, edytuj
/etc/default/rcS
jako root i upewnij się, żeUTC=no
:Naciśnij Alt+ F2.
Wpisz
gksu gedit /etc/default/rcS
i naciśnij Enter.Prawdopodobnie zobaczysz to:
UTC=yes
naUTC=no
. (Lub możesz też dodać komentarz, zmieniając go na coś w rodzajuUTC=no # changed to accommodate Windows system
. Wszystko w wierszu po#
znaku jest komentarzem i ma na celu uczynienie twoich ustawień bardziej czytelnymi dla człowieka.)UTC=
linii. Jeśli nie ma komentarza (tzn. Nie ma#
na początku), zmień go odpowiednio. Jeśli jest komentowany, usuń komentarz z listy, usuwając wiodące#
i upewnij się, że jest napisaneUTC=no
.Zapisz plik i zamknij edytor tekstu.
Uruchom ponownie, aby zastosować zmiany i sprawdź, czy czas działa teraz poprawnie w obu systemach operacyjnych.
Źródło: https://help.ubuntu.com/community/UbuntuTime#Make_Linux_use_.27Local.27_time
(Ale to jest bardzo ogólne; napisałem tę odpowiedź, aby dotyczyć konkretnie twojej sytuacji, co jest dość powszechnym problemem).
źródło
Poprawka / etc / rcS nie działała na mojej instalacji Win7 / Ubuntu 14.04x64, podobnie jak żadne poprawki przez graficzny interfejs użytkownika zegara. Ponieważ źródłem problemu jest czas BIOS vs czas UTC, a Windows jest uciążliwy, jeśli chodzi o korzystanie z UTC, właśnie wybrałem punkt na mapie, który używa UTC + 0 (bez zmiany między BIOS a czasem UTC) .
Spróbuj zmienić lokalizację na Reykjavik (stolica Islandii). Voila! Twój czas Ubuntu zmieni się zgodnie z czasem BIOS.
źródło