Місцевий час Windows проти Linux?


40

З тих пір, як я почав використовувати Linux в dualboot з Windows, я помітив, що коли я перезавантажував машину, час на іншій ОС був помилковим, наприклад, це було 12:00 в Linux, тоді я перезавантажився і в Windows це було 18:00, і коли я перевірив BIOS, RTC був встановлений на 18:00. Оскільки мій часовий пояс становить -06: 00 CST, я припускаю, що Linux просто встановлює час RTC на UTC і перераховує час на основі часового поясу, тоді як Windows просто встановлює RTC на місцевий час. Обидва використовують один і той же сервер NTP для синхронізації часу.

Питання в тому, хто з них робить правильно? На якому слід встановити часовий пояс на UTC, щоб мати правильний час для обох?



бічне питання: чому цього не сталося зі старими версіями Windows та Linux?
golimar

Відповіді:


16

Це не так, але використовувати UTC - це правильніше. RTC не має часового поясу; це просто німий настінний годинник. Якщо ваш місцевий часовий пояс вшановує стандарт DST (якого є безліч смаків, а правила змінюються довільно), то два рази на рік вам доведеться їхати та змінювати його. ОС зробить це за вас, але якщо RTC - UTC, ОС все одно робить UTC-> локальний переклад - навіщо поспілкуватися з годинником? Крім того, під час переходу DST "назад" RTC не може сказати вам, який час! Це 1:30 ранку CDT чи CST?

Мабуть, Windows 8 підтримує UTC для RTC. Windows 7 теж робив, але були проблеми .

Існував кращий аргумент проти цього, коли люди встановлювали свої годинники BIOS вручну, але час на основі сервера зараз набагато більше.


68

Нещодавно я зіткнувся з тією ж проблемою, і це я вирішив. Потрібно зробити невелику зміну в обох ОС.

Я почав спочатку з Linux. Запустіть ці наступні команди як корінь.

ntpdate pool.ntp.org

Це оновить ваш час, якщо встановлено неправильно.

Тепер встановіть апаратний годинник на UTC за допомогою цієї команди.

hwclock --systohc --utc

Джерело

Тепер завантажтесь у Windows та додайте наступний реєстр. Просто створіть .reg файл, використовуючи наведений нижче код у Блокноті. Збережіть його та запустіть.

Windows Registry Editor Version 5.00

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

Джерело

Від наступного завантаження обидві ОС покажуть точний час.


6
Найкраща задокументована відповідь з конкретними інструкціями! +1.
agtoever

1
Слід включити, до яких видань Windows застосовується налаштування реєстру.
Танат

2
Коли Windows отримала здатність розуміти системний годинник, який зберігає час, відмінний від локального?
Марк

1
Цей налаштування реєстру працює для Windows XP / Vista / 7/8 / 8.1. @Tanath
Ayan

3
@ Марк у Windows XP.
Майкл Хемптон

4

Звичайний випадок полягає в тому, що системи Linux мають RTC (годинник в режимі реального часу), встановлений на UTC, і перетворення в місцевий час здійснюється в просторі користувачів на основі даних часового поясу та TZзмінної середовища. Це "менш погано", оскільки воно підтримує RTC системи монотонно зростаючим і застосовує будь-яку магію часового поясу пізніше, гарантуючи, наприклад, що жодні файли зазвичай не матимуть часової позначки в майбутньому (що може легко траплятися принаймні раз на рік, якщо система RTC встановлюється на місцевий час). Як зазначив Кен , сама RTC не має поняття часового поясу, а лише часу.

Як ви з’ясували, це спричиняє проблеми при подвійному завантаженні системи, яка зазвичай не працює таким чином, як сімейство операційних систем Microsoft, які, як правило, очікують, що RTC буде встановлений на місцевий час. Так, Windows NT (я думаю, повернення до NT 4 насправді) може працювати з RTC, встановленим на UTC, але, принаймні, останнє, я подивився, що це насправді не підтримується конфігурація, і було ряд застережень.

Просте рішення у вашому випадку - це, мабуть, встановити RTC на місцевий час, сказати вашій системі Linux, що RTC встановлений на місцевий час (точна механіка виконання цього варіанту залежить від версії розповсюдження та випуску, але, мабуть, в Ubuntu ви встановлюєте UTC=no/ і т.д. / default / rcS ), а потім налаштуйте операційні системи таким чином, що лише одна з них (бажано саме тієї, якою ви користуєтесь найбільше, оскільки час, який відображається у всіх інших, буде неправильним двічі на рік, доки він не завантажиться і не буде шансу щоб виправити це) обробляє зміни літнього часу . І живіть із недоліків, які мають бути керовані в однокористувацькій системі.

Ви також можете встановити сторону Windows для використання UTC як часового поясу та відключити автоматичні зміни літнього часу в Windows, а Linux увімкнути встановлення RTC в UTC та відображення часу, перетвореного відповідно до його практики. Однак це призведе до того, що Windows відобразить дату та час у UTC, що може бути не тим, що ви дійсно хочете. Це не велика проблема для нас, європейців, які максимум щось схоже на три години від UTC, але це може бути більшою проблемою в США. Це, ймовірно, більш реалістичний варіант, якщо ви використовуєте Windows лише зрідка, а ваша основна ОС - Linux або якась інша ОС, що знає RTC-UTC.


Чи маєте ви якусь інформацію про те, що "це насправді не підтримується конфігурація, і існує ряд застережень."?
Випадково832

@ Random832 Дозвольте мені побачити, чи можу я це знайти. Я знаю, що я бачив це раніше, але зараз, здається, не можна знайти його при швидкому пошуку в Google.
CVn

2

Якщо ви подвійно завантажуєтесь, і між Windows та Ubuntu виникають часові конфлікти, це відбувається, тому що Ubuntu зберігає час на апаратному годиннику як UTC за замовчуванням, тоді як Microsoft Windows зберігає час як місцевий час, тим самим спричиняючи конфліктні часи між Ubuntu та Windows.

Потрібно встановити вашу систему Linux для використання місцевого часу, як пояснено тут у цьому посібнику для Ubuntu .


Він використовує місцевий час, і я знаю, що він дійсно зберігає час як UTC (якщо ви принаймні читаєте питання), і я знаю, що я можу зробити, щоб виправити це, питання полягає в тому, хто з них насправді робить правильно замініть інший замість цього.
arielnmz

За замовчуванням Windows використовує локальний час, Mac OS використовує UTC, а операційні системи, схожі на UNIX, відрізняються. ОС, яка використовує стандарт UTC, зазвичай вважатиме час CMOS (апаратний годинник) часом UTC (час GMT, Грінвічський час) і вноситиме коригування до нього під час встановлення системного часу на завантаження відповідно до вашого часового поясу.

Знову ж таки, я знаю це, я просто хочу знати, яка ОС робить це правильно, щоб я могла, наприклад, встановити часовий пояс Windows на UTC і виправити це, або просто навпаки.
arielnmz

@MagomedSegaIsmailov Чи працює Mac OS в будь-яких системах, які використовують BIOS RTC? Я міг би припустити, що EFI надає певний розум.
Випадково832

0

Я подвійний завантажувальний windows 10 і remix os і просто слідую лише керівництву для windows працював для мене обидва рази є правильними. Я використовував командний рядок, щоб додати вам сценарій також, як було легше


Будь ласка, не додайте "дякую" як відповіді. Вкладіть деякий час у сайт, і ви отримаєте достатньо привілеїв, щоб одержати відповіді, які вам подобаються, це спосіб Super User сказати дякую.
DavidPostill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.