37

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

Вопрос в том, кто делает правильные вещи? На каком из них я должен установить настройку часового пояса в UTC, чтобы иметь правильное время на обоих?

5 ответов5

66

Недавно я столкнулся с той же проблемой, и вот как я ее исправил. Вам нужно сделать небольшое изменение в обеих ОС.

Я начал с Linux первым. Запустите следующие команды под пользователем root.

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

Источник

После следующей загрузки обе ОС покажут вам правильное время.

14

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

По-видимому, Windows 8 поддерживает UTC для RTC. Windows 7 тоже сделала, но были проблемы.

Против этого выдвигался лучший аргумент, когда люди устанавливали свои часы BIOS вручную, но время на основе сервера сейчас намного более распространено.

4

Обычно в системах Linux RTC (часы реального времени) установлены на UTC, а преобразование в местное время выполняется в пространстве пользователя на основе данных часового пояса и переменной среды TZ . Это "менее плохо", потому что оно поддерживает монотонно возрастающий RTC системы и применяет любое волшебство часового пояса позже, гарантируя, например, что ни у каких файлов обычно не будет временной метки в будущем (что может легко произойти по крайней мере один раз в год, если система RTC настроена на местное время). Как указал Кен, в самом RTC нет понятия часового пояса, только время.

Как вы обнаружили, это вызывает проблемы при двойной загрузке с системой, которая обычно не работает таким образом, как семейство операционных систем Microsoft, которые обычно ожидают, что RTC будет установлен на местное время. Да, Windows NT (я думаю, что вплоть до NT 4, на самом деле) может работать с RTC, установленным на UTC, но, по крайней мере, в последний раз я смотрел, что это не была действительно поддерживаемая конфигурация, и было несколько предостережений.

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

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

2

Если вы используете двойную загрузку и между Windows и Ubuntu есть конфликты времени, это происходит потому, что Ubuntu по умолчанию хранит время на аппаратных часах как UTC, а Microsoft Windows сохраняет время как местное время, что приводит к конфликту времени между Ubuntu и Windows.

Вам необходимо настроить систему Linux на использование местного времени, как описано здесь в этом руководстве для Ubuntu.

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .