Если сбивается время при переходе между Linux и Windows: два способа исправить
Время сбивается при переходе между Linux и Windows, потому что Linux хранит в аппаратных часах UTC, а Windows местное время. Исправляется одной командой: либо ключ RealTimeIsUniversal в реестре Windows, либо timedatectl set-local-rtc 1 в Linux. Ниже оба способа, сравнение, синхронизация и откат.

Содержание
Почему после Windows часы в Linux врут на несколько часов
На материнской плате есть аппаратные часы (RTC), которые идут от батарейки и работают при выключенном компьютере. Они хранят только цифры: дату и время, без часового пояса. Как эти цифры понимать, решает операционная система.
- Linux по умолчанию считает, что в RTC записано время UTC, и сам прибавляет смещение пояса.
- Windows по умолчанию считает, что там местное время.
Пример для Москвы (UTC+3). Linux синхронизировался по сети и записал в RTC 09:00 UTC, на экране у вас 12:00. Загружаетесь в Windows: она читает 09:00 как местное и показывает на три часа меньше. Синхронизировалась, записала в RTC 12:00 местного. Возвращаетесь в Linux, он видит 12:00 UTC и показывает 15:00. Отсюда характерный сдвиг ровно на величину вашего пояса: 3 часа для Москвы, 5 для Екатеринбурга, 7 для Новосибирска.
Лечится это одним действием: обе системы должны трактовать RTC одинаково. Выбрать можно любой из двух вариантов, но не оба сразу.
Как узнать, в каком режиме работают часы
# сводка по времени, поясу, RTC и синхронизации
timedatectl
# прочитать аппаратные часы напрямую
sudo hwclock --show
# третья строка файла: UTC или LOCAL
cat /etc/adjtimeВ выводе timedatectl смотрите на строки:
RTC timeпоказывает, что сейчас записано в аппаратных часах;RTC in local TZ: noозначает режим UTC (стандарт Linux),yesместное время;System clock synchronized: yesиNTP service: activeзначат, что сетевая синхронизация работает.
Если RTC отличается от местного времени ровно на смещение пояса и RTC in local TZ: no, а Windows при этом не настроена, причина найдена.
Способ 1: перевести Windows на UTC
Этот вариант рекомендуют ArchWiki и документация Ubuntu: Linux остаётся в стандартном режиме, меняется одна запись в реестре Windows. Работает в Windows 10 и 11.
- Загрузитесь в Windows и откройте "Терминал (администратор)" или командную строку от имени администратора.
- Выполните команду:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_QWORD /f- Перезагрузитесь в Linux, дождитесь синхронизации по сети, затем снова в Windows и проверьте часы.
В инструкциях встречаются оба типа значения, REG_QWORD и REG_DWORD. В современных 64-битных Windows работают оба, главное, чтобы значение было 1. Если Windows после этого всё равно показывает неправильное время, в "Параметры", "Время и язык", "Дата и время" нажмите "Синхронизировать сейчас" или выполните в терминале администратора w32tm /resync.
Перед правкой реестра создайте точку восстановления Windows. Если машина с BitLocker, держите под рукой ключ восстановления: изменение реестра само по себе его не запрашивает, но любые эксперименты рядом с загрузкой лучше делать с ключом наготове. Подробнее о соседстве систем в инструкции как установить Linux рядом с Windows 11.
Способ 2: заставить Linux хранить местное время
Подходит, если нет прав администратора в Windows (рабочий ноутбук) или не хочется трогать реестр. В любом дистрибутиве с systemd:
sudo timedatectl set-local-rtc 1 --adjust-system-clock
timedatectlКлюч --adjust-system-clock пересчитывает системное время из RTC с новой интерпретацией. После команды timedatectl покажет предупреждение о том, что режим местного времени в RTC не полностью поддерживается и может давать сбои при смене пояса и перевода часов. В России сезонного перевода нет с 2014 года, так что основная проблема отпадает, но предупреждение будет висеть всегда.
На системах без systemd или для разового исправления можно использовать hwclock: команда sudo hwclock --systohc --localtime запишет текущее системное время в RTC как местное и обновит /etc/adjtime.
Какой способ выбрать: сравнение
| Критерий | Windows в UTC | Linux в местном времени |
|---|---|---|
| Где меняется | реестр Windows | одна команда в Linux |
| Нужны права администратора Windows | да | нет |
| Поведение при переводе часов | корректное | возможен сдвиг на час, если обе системы переводят часы |
| Совместимость с несколькими Linux на одном диске | все работают по умолчанию | каждый Linux нужно перенастроить |
| Поездки со сменой пояса | без проблем | RTC придётся пересчитывать |
| Как откатить | удалить ключ RealTimeIsUniversal | timedatectl set-local-rtc 0 |
Если сомневаетесь, выбирайте первый способ. Второй хорош как быстрая заплатка на чужом или корпоративном компьютере.
Сетевая синхронизация времени в Linux и Windows
После выбора режима обе системы должны брать точное время из сети, иначе часы будут уплывать на секунды и минуты в месяц.
# включить синхронизацию NTP
sudo timedatectl set-ntp true
# Ubuntu, Debian, Arch: подробности systemd-timesyncd
timedatectl timesync-status
# Fedora: там вместо timesyncd работает chrony
chronyc tracking
chronyc sourcesЕсли NTP service показывает inactive, проверьте саму службу: systemctl status systemd-timesyncd или systemctl status chronyd. Как включать и перезапускать службы, описано в статье про systemctl. Задать свой сервер для timesyncd можно в /etc/systemd/timesyncd.conf, строка NTP=ru.pool.ntp.org, затем sudo systemctl restart systemd-timesyncd.
В Windows синхронизацией занимается служба "Служба времени Windows" (w32time). Если она отключена, включите автоматическую установку времени в параметрах.
Время всё равно сбивается: что ещё проверить
- Неверный часовой пояс. Сдвиг на час или два при правильном RTC обычно означает, что в Linux выбран не тот пояс. Проверьте
timedatectl, список поясов выводитtimedatectl list-timezones, установка:sudo timedatectl set-timezone Europe/Moscow. - Время сбрасывается на 2000 или 2010 год после выключения из розетки. Села батарейка CR2032 на материнской плате. Это аппаратная проблема, программно её не обойти, только заменить батарейку.
- Сбой после быстрого запуска Windows. Режим "Быстрый запуск" на самом деле гибернация ядра, Windows при старте может не перечитать RTC. Отключите его в параметрах электропитания, это заодно убережёт общий NTFS-раздел.
- Третья система. macOS на Hackintosh или вторая копия Linux, настроенная в local, снова портят RTC. Все системы на машине должны использовать один режим.
- Неправильная дата в BIOS. Если время в UEFI сильно отличается, загрузчик или Secure Boot могут ругаться на сертификаты. Выставьте время в настройках прошивки вручную, затем дайте системам синхронизироваться. Если после экспериментов пропало меню выбора систем, поможет инструкция по восстановлению GRUB.
Живая флешка, виртуальные машины и компьютер без интернета
Загрузка с Live USB
Живой образ Ubuntu или Fedora ничего не знает о ваших настройках и работает в стандартном режиме UTC. Если вы выбрали второй способ (Linux в местном времени), одна загрузка с флешки с доступом к сети снова собьёт часы в Windows. С первым способом такой проблемы нет, и это ещё один довод в его пользу. Про запись и проверку образов читайте в статье о загрузочной флешке.
Виртуальные машины
Внутри VirtualBox, VMware или QEMU у гостя свои виртуальные часы, на RTC хоста они не влияют. Если гостевая Windows показывает неправильное время, в VirtualBox в настройках системы машины есть флажок аппаратных часов в UTC (Hardware Clock in UTC Time), а в libvirt параметр clock offset: для Windows обычно ставят localtime, для Linux utc.
Компьютер без сети
Без NTP аппаратные часы постепенно уплывают. Время можно выставить вручную: sudo timedatectl set-ntp false, затем sudo timedatectl set-time '2026-10-23 12:00:00'. Новое значение сразу записывается и в RTC.
Как вернуть настройки по умолчанию
Вернуть Windows к местному времени в RTC (терминал администратора):
reg delete "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /fВернуть Linux в стандартный режим UTC:
sudo timedatectl set-local-rtc 0 --adjust-system-clock
timedatectlПосле отката снова проверьте RTC in local TZ и дайте обеим системам синхронизироваться по сети. Подробная справка с историей вопроса и вариантами для разных выпусков есть на странице UbuntuTime в документации сообщества Ubuntu. Базовые команды терминала, которые пригодились выше, собраны в шпаргалке основных команд Linux.
Частые вопросы
Почему время сдвигается ровно на 3 часа?
Это смещение московского пояса от UTC. Linux пишет в аппаратные часы UTC, Windows читает их как местное время, и разница равна вашему часовому поясу.
Какой способ лучше: менять Windows или Linux?
Надёжнее перевести Windows на UTC ключом RealTimeIsUniversal. Перевод Linux на местное время проще, но systemd считает этот режим не полностью поддерживаемым.
Нужно ли что-то менять в BIOS?
Обычно нет. После настройки дайте одной из систем синхронизироваться по сети, она сама запишет правильное время в аппаратные часы.
Почему время сбрасывается после отключения питания?
Села батарейка CR2032 на материнской плате. Программная настройка тут не поможет, батарейку нужно заменить.
Как проверить, что Linux хранит время в UTC?
Выполните timedatectl и посмотрите строку RTC in local TZ. Значение no означает UTC.
Документация и источники
- UbuntuTime, Ubuntu Community Help Wiki, 2025
- System time: UTC in Microsoft Windows, ArchWiki, 2026
- timedatectl(1), systemd, 2026
- hwclock(8), util-linux, 2026
Читайте также
- Как установить Linux рядом с Windows 11: разметка, BitLocker, GRUB
- Как восстановить загрузчик GRUB после Windows или неудачного обновления
- systemctl в Linux: управление службами и автозагрузкой
- Как сделать загрузочную флешку Linux и загрузиться с неё
- Как выбрать Linux в 2026 году под свой компьютер и задачи
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.