Сбивается время при переходе между LINUX и WINDOWS

Как исправить разницу во времени между Ubuntu и Windows, работающими на одной машине

При переходе из одной в другую систему наблюдается неприятный момент - время начинает "убегать" на несколько часов то вперед, то назад. Это происходит потому, что Linux и Window хранят время в разных форматах.

В компьютере используется два вида часов. Первые - аппаратные часы, которые идут всегда, даже тогда, когда компьютер выключен (питаются от батарейки на материнской плате компьютера). Вторые часы - программные. Вот именно этими часами пользуется операционная система. При включении компьютера первоначальное время берется из аппаратных часов и записывается в программные часы. И вся проблема как раз в том, что разные операционные системы по-разному работают с программными часами. Есть два варианта работы:

UTC - аппаратные и программные часы идут по Гринвичу. И эти часы дают универсальное время с нулевым смещением (нулевой часовой пояс). А уже локально к этому времени прибавляется ваш часовой пояс (с плюсом или минусом). Чаще всего так время идет на серверах, с которыми потом синхронизируются рабочие станции пользователей и уже локально у всех пользователей происходит поправка на их часовой пояс.
Localtime - в данном случае программные часы тоже идут по Гринвичу, а вот аппаратные часы идут по времени локального часового пояса. Пользователь особой разницы не заметит, т.к. все равно нужно добавлять или вычитать поправку на свой часовой пояс. И вот тут появляется проблема. Windows при загрузке и(или) синхронизации времени делает поправку на часовой пояс пользователя для того, чтобы программное время было верным. В Linux не так.

Именно поэтому, при каждой перезагрузке из одной системы в другую будет происходить смещение времени на величину поправки на часовой пояс. И единственный способ это устранить - это заставить обе системы (и Windows, и Linux) работать со временем в одном формате. Сделать это можно двумя путями:

Заставить Windows работать по UTC, как Linux;
Заставить Linux работать в формате localtime.

 

ПЕРЕКЛЮЧЕНИЕ WINDOWS НА РАБОТУ ПО UTC
Для решения проблемы сбивающегося времени достаточно добавить всего один ключ в реестр Windows. Это можно сделать с помощью ввода команды в консоли.

Чтобы открыть консоль от имени администратора в Windows 10 нужно поставить курсор мыши в левый нижний угол экрана и нажать правую кнопку мыши. В появившемся контекстном меню нужно выбрать "Командная строка (администратор)".

 

Для 32-х битной Windows вводим (это одна команда, вводится в одну строку):

Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

Для 64-х битных нужно ввести (это одна команда, вводится в одну строку):

Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

Однако, это еще не все. Служба времени Windows все равно продолжит сохранять время в старом формате при его обновлении через Интернет. Поэтому, службу нужно отключить. Либо это сделать руками через "Панель управления" Windows, либо быстрее и проще в той же командной строке, запущенной от имени администратора, выполнить:

sc config w32time start=disabled

КАК ВЕРНУТЬ НАСТРОЙКИ ВРЕМЕНИ В WINDOWS ОБРАТНО?
В командной строке, запущенной от имени администратора, выполняем (это одна команда, вводится в одну строку):

Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0

и запускаем службу синхронизации времени Windows:

sc config w32time start=demand

 

ПЕРЕВОД LINUX НА РАБОТУ С LOCALTIME
По умолчанию Linux хранит временя в формате UTC, но можно переключить систему так, чтобы она хранила в аппаратном таймере местное время. Рассмотрим на примере Ubuntu-Linux (работает даже в старых версиях, например в 16.04).

Чтобы посмотреть текущее состояние аппаратных и программных часов, нужно выполнить:

timedatectl

Начнем исправлять проблему сбивающихся часов. Для этого выполняем команду:

sudo timedatectl set-local-rtc 1 --adjust-system-clock

Готово! Еще проще, чем в Winsdows!

Однако, в более старых Ubuntu придется отредактировать файл /etc/default/rcS, внутри которого заменить UTC=yes на UTC=no.

КАК ВЕРНУТЬ НАСТРОЙКИ ВРЕМЕНИ В LINUX ОБРАТНО?
Вернуть все как было можно с помощью команды:

sudo timedatectl set-local-rtc 0

И в старых дистрибутивах Ubuntu поправить файл /etc/default/rcS, внутри которого заменить UTC=no на UTC=yes.

На этом проблема сбивающегося времени в Windows и Linux (любой дистрибутив, не обязательно Ubuntu) решена.

288 5
13 1
Login to post comments
Untimely gone@1609663501/22/2023, 1:21 pm

ضخم

Untimely gone@1609922301/22/2023, 9:06 am

Tidak ada rasa lelah untuk kami yang memiliki tanggung jawab 

Untimely gone@1607256601/22/2023, 5:15 am

я забыл, как установить и использовать Linux.. но ценю это

Bagus

Untimely gone@1609911601/22/2023, 4:06 am

Bismillah sy guru hinorer yg minim akan gaji mohon d bantu