Перейти к содержимому

Проблема с временем в Windows и Linux

Одна из самых распространённых и раздражающих проблем при использовании Windows и Linux на одном компьютере — постоянная рассинхронизация системного времени.

Linux по умолчанию использует UTC в качестве аппаратного времени:

  1. Система читает время из BIOS как UTC
  2. Применяет смещение часового пояса
  3. Отображает локальное время пользователю

Пример: Если в BIOS 12:00 UTC, а вы в часовом поясе UTC+3, Linux покажет 15:00.

Windows использует локальное время напрямую:

  1. Система читает время из BIOS как локальное
  2. Отображает его без преобразований
  3. При изменении времени записывает локальное время обратно в BIOS

Пример: Если в BIOS 15:00, Windows покажет 15:00 (без учёта часового пояса).

  1. Загружаетесь в Linux → Linux читает время как UTC и добавляет смещение
  2. Перезагружаетесь в Windows → Windows читает это же время как локальное
  3. Результат: Время в Windows сбито на величину вашего часового пояса!

Существует два подхода к решению:

  1. Настроить Linux на использование локального времени (не рекомендуется)
  2. Настроить Windows на использование UTC

Мы будем использовать второй подход, так как он более правильный с технической точки зрения.

Прежде чем выполнять команду, нужно определить, какая у вас версия Windows — 32-битная или 64-битная.

Как узнать разрядность:

  1. Нажмите Win + Pause/Break
  2. Или: Параметры → Система → О системе
  3. Найдите строку “Тип системы”

Скорее всего, у вас 64-битная система (это стандарт для современных компьютеров).

Шаг 2: Выполнение команды настройки реестра

Заголовок раздела «Шаг 2: Выполнение команды настройки реестра»
  1. Откройте командную строку от имени администратора

  2. В зависимости от разрядности вашей системы, выполните соответствующую команду

Для 64-битных систем (наиболее распространённый вариант):

Заголовок раздела «Для 64-битных систем (наиболее распространённый вариант):»
Окно терминала
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1
Окно терминала
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

После выполнения команды вы должны увидеть сообщение:

Операция успешно завершена.

или

The operation completed successfully.

Шаг 4: Отключение службы синхронизации времени

Заголовок раздела «Шаг 4: Отключение службы синхронизации времени»

Чтобы Windows не пыталась “исправить” время обратно, необходимо отключить службу автоматической синхронизации:

Окно терминала
sc config w32time start= disabled

После выполнения вы увидите:

[SC] ChangeServiceConfig SUCCESS

После выполнения всех шагов:

  • Время в Windows всегда корректное
  • Время в Linux всегда корректное
  • Не нужно вручную корректировать часы
  • Проблема решена навсегда

Если по какой-то причине вам нужно вернуть всё обратно:

Окно терминала
Reg delete HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /f
Окно терминала
sc config w32time start= auto

После этого перезагрузите компьютер.