Dlaczego dwa O / S na tej samej maszynie mają różnicę zegara 1 godzinę?

0

Moja maszyna ma dwa systemy operacyjne: dystrybucję Linuksa (podstawową) i system Windows 7 (rzadko używany).

Oba O / S są ustawione w mojej strefie czasowej (UTC + 1).

W zależności od tego, jak ustawiłem czas w systemie BIOS, albo system Windows pokazuje godzinę jako godzinę przed bieżącym czasem, albo Linux po godzinie.

Dlaczego to się dzieje?

Komputer z systemem Windows zwykle zaczyna być odłączony od Internetu; zamiast tego linuksowy jest podłączony, więc poprawia datę po krótkim czasie, ale po ponownym uruchomieniu jest ponownie źle skonfigurowany.

EDYCJA: okazało się, że jest to duplikat https://serverfault.com/questions/16107/why-does-ubuntu-9-04-reset-my-windows-clock

Marcus
źródło

Odpowiedzi:

2

Mogę wymyślić kilka zagadnień, które mogą tu występować.

Po pierwsze, możesz mieć włączony czas letni w jednym, a nie w drugim, lub jeden z systemów operacyjnych jest skonfigurowany dla niewłaściwej strefy czasowej.

Linux może zakładać, że zegar sprzętowy komputera jest ustawiony na UTC zamiast lokalnego, a Windows może myśleć, że jest ustawiony na lokalny. Jeśli jesteś na UTC + 1 lub UTC-1, możesz zobaczyć to zachowanie. Linux może ładować wartość zegara sprzętowego, dostosowując go do lokalnego, a następnie przekształcając go z powrotem do UTC przed zapisaniem do zegara sprzętowego podczas zamykania.

Steve
źródło
Strefy czasowe są poprawne dla obu, ale masz rację z faktem, że dwa O / S interpretują zegar sprzętowy na różne sposoby. Nie jestem pewien, jak powinienem to naprawić.
Marcus
Rozwiązanie znalezione tutaj: serverfault.com/questions/16107/…
Marcus
@Marcus, czy to przetrwa restart? jeśli tak, gratulacje. Wygląda na to, że się spóźniłem. : \ - także /etc/default/rcSnie jest obecny we wszystkich systemach - myślę, że jest on specyficzny dla Ubuntu. Debian (z którego pochodzi Ubuntu) nie ma go.
Wyatt8740
Przetrwał! Jestem bardzo szczęśliwy, ponieważ, chociaż rzadko, czasem o tym zapomniałem (spóźnienie 1 godziny jest dość kłopotliwe ...)
Marcus
@Marcus miło to słyszeć. Cieszę się, że to działa. Czasami było to dla mnie mylące. Zwłaszcza gdy przeniosłem strefy czasowe
Wyatt8740
1

Dystrybucja Linuksa zakłada, że ​​zegar BIOS używa UTC, a instalacja systemu Windows zakłada, że ​​czas BIOS jest w czasie lokalnym.

Oto jak skonfigurowałem to na moim laptopie z podwójnym uruchomieniem: Wprowadzam zmiany po stronie Linux, aby używać czasu lokalnego zamiast UTC dla zegara systemowego. najpierw uruchom komendę, aby czas był poprawnie ustawiony po stronie Linux-a, ponieważ root:

date -s "2 feb 2016 18:05:15"

hwclock --hctosys --localtimepowinien skopiować ustawienia daty / godziny systemu BIOS na komputer i ustawić je na czas lokalny. hwclock --systohc --localtimepowinien ustawić czas BIOS w czasie lokalnym zamiast UTC. datePoleciłbym ustawić czas za pomocą powyższej komendy, a następnie uruchomić: hwclock --systohc --localtime ORAZ RÓWNIEŻ uruchomić: hwclock --hctosys --localtime, aby upewnić się, że / etc / adjtime ma ostatnią linię pliku z napisem „LOCAL” zamiast „UTC” lub czegoś podobnego. te --hctosys --localtimeflagi razem można tego dokonać programowo. Możliwe, że datezrobi to sam, ale nie sprawdziłem.

aby sprawdzić, czy czas systemowy jest rzeczywiście dokładny w czasie lokalnym. Nie martw się tym, jak formatowany jest ciąg ustawiania daty, jest niezwykle elastyczny. Jako przykład innych prawidłowych sposobów wypowiedzenia:

date -s "2 feb 2016 6:05:15 PM"
date -s "february 2, 2016 6:11:30 PM"
date -s "Tue Feb  2 18:11:30 EST 2016"

(Jestem w czasie wschodniego standardu, GMT -5)

Jeśli nadal masz problemy, może być konieczne ponowne wybranie strefy czasowej. W Debianie lub pochodnych takich jak Ubuntu, używasz sudo dpkg-reconfigure tzdatado zmiany stref czasowych w interfejsie ncurses.

Jeśli go nie masz, spróbuj znaleźć odpowiedni plik informacji o strefie czasowej. Na mojej instalacji to jest /usr/share/zoneinfo/America/Indiana/Indianapolis.

Gdy go znajdziesz, skopiuj go do /etc/localtime:

cp /usr/share/zoneinfo/America/Indiana/Indianapolis /etc/localtime

Po wykonaniu tej czynności upewnię się, że czas jest odpowiednio ustawiony date. Jeśli nie, uruchom ponownie pierwsze dwa polecenia ( datei hwclock).

w Linuksie powinno to sprawić, że niezależnie od tego, kiedy ustawisz w Linuksie, będzie poprawnie współdzielone z Windows. Alternatywnie można to zrobić, ale trudniej jest zamiast tego ustawić system Windows na używanie UTC. Jak to się dzieje, zmiany w wersjach i oknach powracają do czasu lokalnego po aktualizacji.

Pamiętam jeden szczególnie uparty komputer, w którym robienie wszystkich hwclockrzeczy stawało się przesłonięte, ponieważ komputer pobierał bieżący czas przez Internet za pomocą NTP. Ustawienie strefy czasowej było jedynym sposobem, aby to naprawić bez całkowitego wyłączenia NTP.

Tak czy inaczej, to tylko duży zrzut wszystkich moich przeszłych doświadczeń z tą sprawą. Jeden z nich prawie na pewno zadziała. Najpierw spróbuję rzeczy ze strefy czasowej, a następnie zdecydowanie spróbuję tych hwclock --systohc --localtimerzeczy po zakończeniu, aby upewnić się, że zegar BIOS jest w czasie lokalnym.

Wyatt8740
źródło