Операционные системы хранят и извлекают время в аппаратных часах, расположенных на вашей материнской плате, чтобы они могли отслеживать время, даже когда в системе нет питания. Большинство операционных систем (Linux / Unix / Mac) хранят время на аппаратных часах в виде UTC по умолчанию, хотя некоторые системы (в частности, Microsoft Windows) сохраняют время на аппаратных часах как "местное" время. Это вызывает проблемы в системе с двойной загрузкой, если обе системы по-разному отображают аппаратные часы.
Преимущество использования аппаратных часов в качестве UTC заключается в том, что вам не нужно менять аппаратные часы при переходе между часовыми поясами или при начале или окончании перехода на летнее время (DST), поскольку UTC не имеет смещений DST или часовых поясов.
Перевод Linux на использование местного времени проще и надежнее, чем перевод Windows на использование UTC, поэтому системы Linux / Windows с двойной загрузкой, как правило, используют местное время.
Начиная с Intrepid (8.10) по умолчанию используется UTC=yes.
Решение 1: Заставьте Windows использовать UTC
Примечание: Этот метод изначально не поддерживался в Windows Vista и Server 2008, но вернулся с Vista SP2, Windows 7, Server 2008 R2 и Windows 8/8.1.
Чтобы заставить MS Windows вычислять время по аппаратным часам как UTC.
Создайте файл с именем WindowsTimeFixUTC.reg со следующим содержимым, а затем дважды щелкните по нему, чтобы объединить содержимое с реестром:
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=dword:00000001
Примечание: Служба времени Windows по-прежнему будет записывать местное время в RTC независимо от приведенных выше настроек реестра при завершении работы, поэтому удобно отключить службу времени Windows с помощью этой команды (если синхронизация времени все еще требуется, а в Windows используется любое стороннее решение для синхронизации времени):
sc config w32time start= disabled
При выполнении приведенной выше команды в Powershell вам необходимо будет указать sc.exe:
sc.exe config w32time start= disabled
Изменение вспять
Вы можете создать файл со следующим содержимым, а затем дважды щелкнуть по нему, чтобы объединить исходные изменения, как указано выше:
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=-
Если служба времени Windows была отключена, включите ее снова с помощью команды:
sc config w32time start= demand
Решение 2: Заставьте Linux использовать "Местное" время
Чтобы сообщить вашей системе Ubuntu, что аппаратные часы установлены на "местное" время:
Системы, существовавшие до Ubuntu 15.04 (например, Ubuntu 14.04 LTS):
- редактировать /etc/default/rcS
добавьте или измените следующий раздел
# Set UTC=yes if your hardware clock is set to UTC (GMT)UTC=no
Системы Ubuntu 15.04 и выше (например, Ubuntu 16.04 LTS):
откройте терминал и выполните следующую команду
timedatectl set-local-rtc 1