Найти тему
Эникейщик

Сбой времени при перезагрузке из Linux в Windows. Исправляем недоразумение

Не так давно решил снова «поковырять» Linux . Устанавливать его, как единственную систему не хотелось. Потому, просто разбил диск и установил на свободное место. Таким образом, получилась двойная загрузка, в зависимости от выполняемых мною задач. Но, может быть я отстал от времени, может быть просто не помню, столкнулся с небольшой, но не особо приятной особенностью Linux , а в моем случае это Ubuntu . Впрочем, если бы это был другой дистрибутив, проблема была бы точно такой же. Причем, возникает она только в системах с двойной загрузкой и связана с временем, которое отображается на часах. Но, это проблема решается легко. Давайте начнем ее решение.

Проблема с отображением времени в операционных системах заключалась в том, что после того, как я поработаю в Ubuntu и загружаюсь в Windows , я попадаю немного в прошлое, согласно показаниям часов. А именно, на то смещение времени, которое в вашем часовом поясе от мирового. То есть, если у меня в Linux на часах 6:00, то перезагрузившись в Windows вижу, что на часах у меня 00:00.

Честно говоря, сначала я грешил на батарейку BIOS . Поэтому просто синхронизировал время в Windows и работал дальше с мыслью, что нужно купить и заменить. Но, потом задумался, почему же тогда, если проблемы с батарейкой, время в Linux не сбивается? Поискав в интернете, я действительно обнаружил, что такая проблема на системах с двойной загрузкой присутствует.

А дело тут вот в чем. Linux живет по UTC (Coordinated Universal Time – Всемирному координированному времени). Его отсчет ведется с нуля и добавляется или отнимается на разницу часового пояса. То есть, если у вас 6 часов утра, то по UTC будет еще только полночь или 00:00. Соответственно, раз Linux использует Всемирное время, то и в BIOS он записывает именно это значение. Ну и автоматом добавляет к нему разницу в вашем часовом поясе. А вот Windows живет по локальному времени. То есть, считав из BIOS значение времени она и считает его локальным. Windows можно научить жить по UTC , но для этого потребуется поменять несколько значений в реестре. В Linux же это делается одной командой. Поэтому, пойдем простым путем и проделаем операции именно в Ubuntu (в других дистрибутивах используется эта же команда), научим жить ее по локальному, а не Всемирному времени.

Загружаемся в Ubuntu и запускаем терминал. Для этого щелкаем на значок приложений на панели и запускаем Терминал. Ну или как истинные линуксоиды жмем комбинацию клавиш: «Ctrl+Alt+T».

-2

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

$ sudo timedatectl.
-3

Ну и как видим, система живет по времени UTC, так как значение «RTC in local TZ» стоит «no». Нам же нужно, чтобы это значение стояло «yes». Поэтому выполняем команду:

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

После выполнения данной команды никаких выводов на экран не будет. Поэтому, снова выполняем команду:

$ sudo timedatectl
-5

Как видим, значение из «no » стало «yes ». Теперь просто перезагружаемся и проверяем, все ли в порядке.

После загрузки в ОС Windows первый раз после того, как мы научили Ubuntu жить по локальному времени, в Windows время может и не поменяться. Но, это только первый раз. Поэтому, поменяйте его вручную или выполните синхронизацию с сервером времени и в дальнейшем у вас все будет в порядке. Обе системы будут жить по одному времени, так что перевода часов при перезагрузке из одной системы в другую не будет.

-6
Надеюсь, что информация была для вас полезна!