Czas podwójnego rozruchu jest wyłączony

303

System podwójnego rozruchu Windows XP Pro i Ubuntu 12.04.

Mam ustawiony bios na właściwy czas i Ubuntu na amerykański czas wschodni. Ubuntu uruchomi się, a czas wyłączy się o -4 godziny. Jeśli poprawię czas w Ubuntu, to kiedy uruchomię system Windows XP, czas będzie wyłączony o + 4 godziny.

To jest nowa instalacja 12.04. Nie miałem tego problemu przed ponowną instalacją Ubuntu.

Bill Walden
źródło

Odpowiedzi:

265

https://help.ubuntu.com/community/UbuntuTime#Multiple_Boot_Systems_Time_Conflicts

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):

  1. edytować /etc/default/rcS
  2. 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):

  1. otwórz terminal i wykonaj następujące polecenie

    timedatectl set-local-rtc 1
    
Eric Carvalho
źródło
53
O Boże. Nie mogę uwierzyć, że byli na tyle głupi, by używać czasu lokalnego na zegarze sprzętowym. Dlaczego miałbyś to robić?
iono
20
@twome, ponieważ ponieważ w początkowej fazie MS-DOS nie było wiele przeszkód w tworzeniu sieci, a przenoszenie komputera do tej pory nie było tak powszechne, że przenosiłoby strefy czasowe. (I tak, nawet biorąc pod uwagę tę historię, wciąż nie był to najlepszy ruch).
Jon Hanna
9
@twome, chociaż zgadzam się z tobą, jeśli zegar sprzętowy pozostaje jako uniwersalny, ponieważ nie zachowuje on informacji o strefie czasowej, jest z tym kilka problemów: A) BIOS / UEFI ma różne funkcje, takie jak automatyczne budzenie / wyłączniki czasowe, w których ustaw czasy dla tych wyzwalaczy. Dziwnie byłoby ustawić te czasy w UTC - przynajmniej dla przeciętnego użytkownika. B) Jak Jon powiedział powyżej, przyczyny kompatybilności wstecznej.
Shahriyar Imanov
5
W Windows PowerShell uruchom to polecenie, aby zaktualizować wyżej wymienioną właściwość rejestru: New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Anatolij Mironow
6
W przypadku przeglądania tekstu wystarczy zmienić ustawienia tylko w jednym systemie operacyjnym, a nie w obu.
Alexander Revo
66

Aby ustawić zegar BIOS na czas lokalny zamiast UTC w wersji systemowej (15.04 i nowszej), będziesz musiał użyć timedatectlpolecenia. Według Arch Wiki :

Standardowy czas zegara sprzętowego można ustawić za pomocą wiersza polecenia. Możesz sprawdzić, co ustawiłeś do użycia przez:

$ timedatectl | grep local

Zegar sprzętowy można zapytać i ustawić za pomocą timedatectl polecenia. Aby zmienić standard zegara sprzętowego na czas lokalny, użyj:

# timedatectl set-local-rtc 1

Jeśli chcesz przywrócić zegar sprzętowy w UTC, wykonaj:

# timedatectl set-local-rtc 0
muru
źródło
4
Na Ubuntu 16.10 pomogło to zrobić „hwclock --systohc --localtime”. To zapisuje „część lokalną” do / etc / adjtime i tym samym czyni ją stałą.
user1050755
1
@ user1050755 czy to przed, po, czy zamiast polecenia timedatectl?
nasch
36

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:

  • System Windows jest skonfigurowany do korzystania z czasu lokalnego, który (biorąc pod uwagę ustawienia czasu) jest prawidłowy .
  • Ubuntu jest ustawione na używanie UTC, co (biorąc pod uwagę twoje ustawienia czasu) jest nieprawidłowe .

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/rcSjako root i upewnij się, że UTC=no:

  1. Naciśnij Alt+ F2.

  2. Wpisz gksu gedit /etc/default/rcSi naciśnij Enter.

  3. Prawdopodobnie zobaczysz to:

    # assume that the BIOS clock is set to UTC time (recommended)
    UTC=yes
    
    • Jeśli tak, zmień UTC=yesna UTC=no. (Lub możesz też dodać komentarz, zmieniając go na coś w rodzaju UTC=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.)
    • Jeśli nie, poszukaj dowolnej 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 napisane UTC=no.
  4. Zapisz plik i zamknij edytor tekstu.

  5. 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).

Eliah Kagan
źródło
Zauważ, że może się to zdarzyć również podczas aktualizacji z jednej wersji Ubuntu do następnej, tak jak zrobiłem to dla mnie. Mogę zalecić wykonanie powyższej poprawki, a następnie ręczne zsynchronizowanie zegara, tak jak w tej odpowiedzi (dostosowanie go do pracy z systememd): askubuntu.com/a/254846/139735
starbeamrainbowlabs
To powinna być przyjęta odpowiedź imho. Miałem zainstalowany system Windows i działał dobrze, potem zainstalowałem Ubuntu i zegary oszalały - nie widzę powodu, dla którego powinienem modyfikować ustawienia systemu Windows, jeśli najwyraźniej dodanie Linuksa zepsuło moją konfigurację.
Przemek D
13

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.

OpensourceFool
źródło
Ha ha! Niesamowite. : DI naprawdę nie obchodzi mnie moja lokalizacja. Naprawiono dwie sekundy. Wielkie dzięki.
Jasnoniebieska kropka,