- Сбивается время в Ubuntu и Windows
- Почему так происходит?
- Настройка Windows для работы по UTC
- Как вернуть обратно?
- Настройка Linux для работы localtime
- Как вернуть обратно?
- Выводы
- Fix Incorrect Time in Windows 11 That Dual boot with Ubuntu Linux
- Method 1.) Set RTC to local time zone in Ubuntu:
- Method 2.) Enable UTC time in Windows 11:
- Refresh the display time to apply change:
- Ji m
- Сбивается время при переключении систем в дуалбуте
- Jul 4, 2021 13:02 · 292 words · 2 minute read админство
Сбивается время в Ubuntu и Windows
Многие новые пользователи, которые только перешли на Linux с операционной системы Windows, и пока все еще запускают эту систему время от времени, сталкиваются с проблемой, что после загрузки Windows в Ubuntu сбивается время на несколько часов назад или вперед, затем после нескольких перезагрузок уже сложно понять какое сейчас время.
Все это происходит из-за различий формата хранения времени в этих операционных системах. И будет происходить при каждой перезагрузке, сколько бы вы ни устанавливали правильное время. Но эту проблему можно решить. И даже несколькими способами. В этой статье мы рассмотрим, как решить проблему сбивается время в Ubuntu и Windows.
Почему так происходит?
Как я уже сказал, проблема в разных форматах хранения и восстановления времени. В компьютере есть два вида часов. Аппаратные — идут всегда, даже когда компьютер выключен и программные часы, встроенные в ядро. Когда компьютер включается значение аппаратных часов записывается в программные, и в дальнейшем операционная система берет время оттуда. Но Windows и Linux работают по-разному с этими двумя часами. Есть два способа работы:
- UTC — и аппаратные, и программные часы идут по Гринвичу. То есть часы дают универсальное время на нулевом часовом поясе. Например, если у вас часовой пояс GMT+3, Киев, то часы будут отставать на три часа. А уже пользователи локально прибавляют к этому времени поправку на часовой пояс, например, плюс +3. Каждый пользователь добавляет нужную ему поправку. Так делается на серверах, чтобы каждый пользователь мог получить правильное для своего часового пояса время.
- localtime — в этом варианте программные часы тоже идут по Гринвичу, но аппаратные часы идут по времени локального часового пояса. Для пользователя разницы никакой нет, все равно нужно добавлять поправку на свой часовой пояс. Но при загрузке и синхронизации времени Windows вычитает из аппаратного времени 3 часа (или другую поправку на часовой пояс), чтобы программное время было верным.
Так почему же сбивается время Ubuntu и Windows? Вот, допустим, работает Windows, и со временем там все нормально, оно сохранено в формате localtime. Но при перезагрузке в Linux, операционная система берет время Localtime, и думает что это UTC. Таким образом, пользователь будет брать уже правильное время, и прибавлять к нему поправку на часовой пояс. Поэтому время уже будет неверным.
Дальше вы исправили время, и теперь аппаратные часы работают в UTC. Но затем грузите WIndows. Система думает, что это localtime и для установки правильного программного времени добавляет к аппаратному поправку на часовой пояс, например, в нашем случае +3. Дальше каждый пользователь еще раз применяет эту поправку и время уже сбито, опять.
Единственно верный способ решить эту проблему — заставить обе системы работать по одному формату и сделать это совсем не сложно. Причем можно пойти двумя путями: либо заставить Windows работать по UTC, либо Linux по формату localtime, что является не совсем правильным, но вполне возможно. Итак перейдем к решению проблемы сбивается время в Ubuntu.
Настройка Windows для работы по UTC
Итак, если у вас сбивается время Windows и Linux при переключении между операционными системами, лучшим способом будет заставить Windows работать по более правильному и логичному формату. Для этого достаточно добавить один ключ реестра. Вы можете сделать это с помощью одной команды в консоли. Чтобы открыть консоль в Windows 10 проведите мышь в левый нижний угол, затем нажмите правую кнопку. В контекстном меню выберите Командная строка (администратор):
Дальше наберите команду для 32 битных систем:
> Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
А для 64-битных, нужно использовать тип значения REG_QWORD:
> Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1
Почти готово, но служба времени Windows независимо от этой настройки будет писать время в местном формате при обновлении его через интернет, поэтому удобно эту службу отключить. Для этого выполните:
> sc config w32time start= disabled
Как вернуть обратно?
Если вы хотите вернуть все как было, то сделать это можно проще простого. Сначала возвращаем ключ реестра в правильное положение:
> Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0
И запускаем обратно службу синхронизации:
> sc config w32time start= demand
Готово, а дальше рассмотрим, как заставить Linux использовать формат времени localtime.
Настройка Linux для работы localtime
По умолчанию Linux использует формат хранения времени UTC, но если Ubuntu сбивает время Windows, вы можете очень просто заставить систему хранить в аппаратном таймере местное время. Во всех дистрибутивах, использующих Systemd, в том числе в Ubuntu для этого достаточно выполнить команду:
sudo timedatectl set-local-rtc 1 —adjust-system-clock
Чтобы посмотреть текущее состояние аппаратных и программных часов выполните:
Готово, теперь вы можете перезапустить компьютер и запустить Windows, чтобы убедиться, что время не сбивается при перезагрузке. В более старых системах Ubuntu, вам нужно отредактировать файл /etc/default/rcS и заменить UTC=yes на UTC=no. Вы можете сделать это командой:
sudo sed -i ‘s/UTC=yes/UTC=no/’ /etc/default/rcS
Как вернуть обратно?
Опять же, вернуть все как было можно с помощью одной команды:
sudo timedatectl set-local-rtc 0
А в старых дистрибутивах Ubuntu:
sudo sed -i ‘s/UTC=no/UTC=yes/’ /etc/default/rcS
Выводы
Вот и все. Теперь, если вы столкнетесь с проблемой Windows 10 — сбивается время Ubuntu или любом другом Linux дистрибутиве, вы уже будете знать, как её решить с помощью двух полностью работающих способов. Если у вас остались вопросы, спрашивайте в комментариях!
Мы разобрались, как настроить правильное время в Ubuntu и Windows, чтобы временные зоны не сбивались, но что такое временные зоны и зачем они нужны, на завершение видео про это:
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Fix Incorrect Time in Windows 11 That Dual boot with Ubuntu Linux
For those dual boot Windows 11 with Ubuntu or other Linux, you’ll find different time display in each system. And usually Windows shows the incorrect clock time.
There are two time standards, localtime and Coordinated Universal Time (UTC, aka GMT). The local time standard is dependent on the current time zone, while UTC is the global time standard that is independent of time zone.
By default, Windows uses localtime, but Ubuntu uses UTC. So you get the different time in the dual boot. And the solution is set the same time standard in the two systems.
Method 1.) Set RTC to local time zone in Ubuntu:
Though it’s not recommended, set the Real Time Clock (RTC) to use local time zone just works.
Firstly, open terminal either from system app launcher or by pressing Ctrl+Alt+T on keyboard. When it opens, run command:
timedatectl set-local-rtc 1 --adjust-system-clock
Then you can check system clock status via command:
And “RTC in local TZ: yes”, where TZ means time zone, tells localtime standard is in use.
As I said “it’s not recommended“, it warns that localtime standard may cause various problems with time zone changes and daylight saving time adjustments.
You can restore UTC time standard and do method 2 instead by running command:
timedatectl set-local-rtc 0
Method 2.) Enable UTC time in Windows 11:
If you’re now running Windows 11, you can easily enable the UTC / GMT time standard via following steps.
1. Firstly, click on ‘Search’ icon on task bar. Then search for and right-click on ‘Command Prompt’ and select ‘Run as administrator’.
2. When command prompt opens, copy and paste the command below and hit run:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
The command creates a registry key to tell Windows to use universal time standard.
Refresh the display time to apply change:
If Windows 11 shows the incorrect date and time, search for and open “Settings” from start menu. Then go to “Time & Language” from left pane, click “Date & time” and finally disable and re-enable ‘Set time automatically’ option will correct your system time.
For Ubuntu users, it may also display incorrect time when “Automatic Date & Time” not enabled. Simply enable or refresh the option in System “Settings -> Date & Time” will do the trick.
Ji m
I’m a freelance blogger who started using Ubuntu in 2007 and wishes to share my experiences and some useful tips with Ubuntu beginners and lovers. Please comment to remind me outdated tutorial! And, notify me if you find any typo/grammar/language mistakes. English is not my native language. Contact me via [email protected] Buy me a coffee: https://ko-fi.com/ubuntuhandbook1
Сбивается время при переключении систем в дуалбуте
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 — каждая ОС ставит его по-своему.
- заставить Windows сохранять время в UTC
- заставить linux сохранять время в локальном варианте
Я не очень хорошо знаком с администрированием Windows, так что мне кажется второй вариант наиболее простым. За время в linux отвечает одна из утилит из состава systemd — timedatectl.
Нас интересует последняя строчка: “RTC in local TZ: no”. Видимо, можно как-то установить в yes… Команда timedatectl set-local-rtc 1 делает именно это:
Обратите внимание на предупреждение! Явно это не родной режим linux, так что там могут быть проблемы (теоретически). Но переводов на летнее время у меня нет, путешествую в другую таймзону я нечасто, так что мне этот способ подходит. Перезагружаемся, проверяем и забываем об этой проблеме.