Edycja: Po kilku dniach korzystania z metody, którą pierwotnie opublikowałem, odkryłem, że RealTimeIsUniversal
flaga, jako nie zachowana pozostałość po Windows NT, jest w rzeczywistości dość niestabilna i ogólnie niepraktyczna. Co jakiś czas, w pozornie przypadkowych odstępach czasu, zegar Windows wracał z czasu UTC do czasu lokalnego, co było bardzo denerwujące (i powodowało kilka zatwierdzeń git, które wyglądają, jakby były z przyszłości w dzienniku zatwierdzeń). To sprawiło, że szukałem kolejnej poprawki…
Zasadniczo problem polega na tym, że, jak wspomniał John Fouhy w komentarzu, system Windows utrzymuje zegar w czasie lokalnym, podczas gdy OS X utrzymuje zegar w UTC (używając określonej strefy czasowej jako modyfikatora, aby podać prawidłowy czas). Aby to naprawić, jeden z systemów operacyjnych będzie musiał pochylić się do tyłu i śledzić czas przy użyciu metody drugiego systemu.
Teraz najbardziej niezawodną metodą, jaką znalazłem do tej pory, aby rozwiązać ten problem, jest po prostu przełączenie zegara OS X na czas lokalny z czasu UTC przy każdym wyłączeniu, a następnie przełączenie go z powrotem przy każdym uruchomieniu. Dokładną metodę tego można znaleźć na wiki projektu OSx86 , co ciekawe. (Mała uwaga: jest kilka rzeczy, które wydają się być specyficzne dla OSx86, a mianowicie plist LaunchDaemon do instrukcji Leoparda. Jednak wypróbowałem dosłownie metodę Leoparda na moim MacBooku Pro i działa dobrze. Innymi słowy, po prostu postępuj zgodnie ze wskazówkami dokładnie tak, jak napisano, i nie przejmuj się odniesieniami do OSx86 w plikach - nie mają one znaczenia).
Oto stare rozwiązanie, jeśli chcesz je wypróbować. Ostrzegam: nigdy nie zostało to zaktualizowane, aby działało poprawnie z nowszymi wersjami systemu Windows, więc jest to bardzo zawodne, ponieważ dowiedziałem się na własnej skórze…
Innym sposobem synchronizacji zegarów jest wymuszenie na systemie Windows korzystania z UTC przez hack rejestru (sztuczkę, którą znalazłem w Mac OS X Hints ):
- Uruchom RegEdit ( Start -> Uruchom ... , wpisz
regedit
)
- Przejdź do „
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
”.
- Z menu Edycja wybierz Nowy -> Wartość DWORD .
- Nazwij tę wartość „
RealTimeIsUniversal
”.
- Kliknij dwukrotnie
RealTimeIsUniversal
i wprowadź 1
dane wartości.
Przy następnym uruchomieniu systemu Windows zegar powinien być zgodny z zegarem systemu Mac OS X, a strefa czasowa systemu Windows może być zgodna ze strefą czasową ustawioną w systemie Mac OS X.