Сбивается время при переключении систем в дуалбуте

Jul 4, 2021 13:02 · 292 words · 2 minute read админство

У меня на ноутбуке установлено 2 ОС: Linux Mint и Windows 10. Первая - для работы, вторая - для Steam. Переключаюсь поиграть я не так чтобы часто, но в этот раз меня окончательно достал сброс времени при возврате в linux на 3 час, так что я решил всё-таки разобраться в проблеме. Мой часовой пояс Europe/Moscow UTC+3, значит где-то не происходит перевод из datetime with timezone в naive datetime или наоборот. И что же может быть общего между двумя ОС на разных разделах диска? Вероятно, только BIOS (или grub, но вряд ли проблема там). В BIOS тоже есть часы, и зовутся они RTC (real time clock)!

Чтобы убедиться, что проблема в них, проведём небольшой эксперимент и попереключаемся между ОС, но с заходом в BIOS. Сейчас время правильное, гибернетим linux -> заходим в BIOS, время на 3 часа меньше. То есть linux работает со временем с таймзоной, а сохраняет в BIOS время в UTC. Загружаемся в Windows, там верное время. Заходим в BIOS - и видим там локальное, а не в UTC! Значит, проблема в RTC - каждая ОС ставит его по-своему.

Тут 2 возможных варианта:

  • заставить Windows сохранять время в UTC
  • заставить linux сохранять время в локальном варианте

Я не очень хорошо знаком с администрированием Windows, так что мне кажется второй вариант наиболее простым. За время в linux отвечает одна из утилит из состава systemd - timedatectl.

Вывод timedatectl

Нас интересует последняя строчка: “RTC in local TZ: no”. Видимо, можно как-то установить в yes… Команда timedatectl set-local-rtc 1 делает именно это:

Вывод timedatectl

Обратите внимание на предупреждение! Явно это не родной режим linux, так что там могут быть проблемы (теоретически). Но переводов на летнее время у меня нет, путешествую в другую таймзону я нечасто, так что мне этот способ подходит. Перезагружаемся, проверяем и забываем об этой проблеме.