
Когда на одном компьютере установлены и Windows, и Linux, время часто начинает «уплывать». Это распространённая проблема, которая возникает из-за того, что две операционные системы по-разному работают с системным часами. В этой статье я объясню, почему так случается, и покажу два способа, как раз решить эту проблему.
Разница во времени возникает из-за того, что Linux по умолчанию хранит время аппаратных часов как UTC а Windows — как локальное; например для Москвы это даёт сдвиг ровно на 3 часа. Исправляется двумя способами: настроить Linux на localtime или Windows на UTC.
Решение 1: настроить Linux на локальное время
Это самый простой способ. Он быстро решает проблему с часовым сдвигом и не требует редактирования реестра Windows.
Выполнить последовательно. Открыть терминал в Linux и выполнить:
| 1 | sudo timedatectl set-local-rtc 1 --adjust-system-clock |
Проверить статус:
| 1 | timedatectl |
В строке “RTC in local TZ” должно стать “yes”.
Убедиться, что часовой пояс корректный, например для Москвы:
| 1 | sudo timedatectl set-timezone Europe/Moscow |
Включить сетевую синхронизацию времени при необходимости:
| 1 | sudo timedatectl set-ntp true |
Если понадобится откатить настройку то используйте команду:
| 1 | sudo timedatectl set-local-rtc 0 --adjust-system-clock |
- Проблемы с часовыми поясами и летним временем (DST): Система может некорректно обрабатывать автоматический переход на летнее/зимнее время или смену часового пояса.
- Зависимость от внешней синхронизации: Linux в этом режиме перестает самостоятельно обновлять RTC. Вся надежда — на протокол синхронизации времени (NTP), который должен исправлять неточности.
Решение 2: настроить Windows на UTC (рекомендуемый способ)
Этот путь даёт единый стандарт «RTC = UTC» для всех Linux на ПК и считается более «каноничным» с точки зрения Unix‑практики.
Шаги:
Открыть редактор реестра от администратора: Win+R → в строке «Открыть:» вписать regedit → нажать сочетание клавиш Ctrl+Shift+Enter → (ввести пароль если требуется) и нажать «Да».
Перейти в ветку:
| 1 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation |
Создать параметр DWORD (32‑bit) с именем: RealTimeIsUniversal и значением 1.
Можно внести изменения в реестр командой (запущенная командная строка от имени администратора):
| 1 2 | reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation ^ /v RealTimeIsUniversal /t REG_DWORD /d 1 /f |
После этого перезагрузить Windows.
Чтобы откатить и вернуть к прежнему режиму работы выполните в командной строке команду:
| 1 | Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0 |
Либо откройте редактор реестра, как это описывалось ранее и поставьте значение RealTimeIsUniversal равным 0.
Примечания:
- Некоторые сторонние программы в Windows исторически ожидают, что RTC — локальное время. Это редкость, но если появятся странности, можно вернуться к Решению 1.
- После крупных обновлений Windows параметр иногда может сбрасываться; удобно хранить .reg‑файл для быстрого применения.
Важно: использовать только один из методов. Если применить оба сразу, рассинхронизация вернётся.
В чём суть проблемы
В заключении рассмотрим отчего возникает такая проблема.
- На ПК есть два типа часов: аппаратные (RTC/BIOS) и системные; Linux считает, что RTC должны быть в UTC, а Windows ожидает локальное время.
- После загрузки одной ОС другая интерпретирует RTC по‑своему, из‑за чего появляется сдвиг
- Это свойство поведения ОС, а не конкретного дистрибутива, поэтому проблема полностью дистро‑независима.
Как проявляется
- После загрузки Linux и последующей загрузки Windows часы в Windows «отстают» на величину часового пояса.
- После ручной правки времени всё верно до следующей смены ОС, затем рассинхронизация возвращается.
- Поэтому решения тоже универсальны: либо приводим Linux к «локальному RTC», либо переводим Windows на «UTC в RTC».
На этом все. Надеюсь проблема рассинхронизации времени при двойной загрузке систем больше не будет надоедать.















