Сбивается время при переключении между linux и 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

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

sudo timedatectl

Готово, теперь вы можете перезапустить компьютер и запустить 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.

Многие новички Linux оставляют у себя на компьютере второй запасной операционной системой Windows. Но при переходе то в одну, то во вторую систему наблюдается неприятный момент — время начинает «убегать» на несколько часов то вперед, то назад. Это происходит потому, что Linux и Window хранят время в разных форматах.

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

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

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

  1. Заставить Windows работать по UTC, как Linux;
  2. Заставить 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) решена.

Если на компьютере установлены две системы Linux и Windows, иногда возникает сбой в отображении времени на несколько часов назад или вперёд.
Всё это происходит из-за различий формата хранения времени в этих операционных системах и будет происходить при каждой перезагрузке, сколько бы вы ни устанавливали правильное время. В компьютере есть два вида часов. Аппаратные — идут всегда, даже когда компьютер выключен, и программные часы, встроенные в ядро. Когда компьютер включается, значение аппаратных часов записывается в программные и в дальнейшем операционная система берёт время оттуда. Но Windows и Linux работают по-разному с этими двумя часами.

Есть два способа работы:

  • UTC — и аппаратные, и программные часы идут по Гринвичу. То есть часы дают универсальное время на нулевом часовом поясе. Например, если у вас часовой пояс GMT+3, Киев, то часы будут отставать на три часа. А уже пользователи локально прибавляют к этому времени поправку на часовой пояс, например, плюс +3. Каждый пользователь добавляет нужную ему поправку. Так делается на серверах, чтобы каждый пользователь мог получить правильное для своего часового пояса время.
  • localtime — в этом варианте программные часы тоже идут по Гринвичу, но аппаратные часы идут по времени локального часового пояса. Для пользователя разницы никакой нет, все равно нужно добавлять поправку на свой часовой пояс. Но при загрузке и синхронизации времени Windows вычитает из аппаратного времени 3 часа (или другую поправку на часовой пояс), чтобы программное время было верным.

Но эту проблему можно решить и даже несколькими способами.
Настройка 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 использует формат хранения времени UTC, но если Linux сбивает время Windows, вы можете очень просто заставить систему хранить в аппаратном таймере местное время. Во всех дистрибутивах, использующих Systemd, в том числе в Ubuntu 16.04 и новее для этого достаточно выполнить команду:

sudo timedatectl set-local-rtc 1 --adjust-system-clockЧтобы посмотреть текущее состояние аппаратных и программных часов, выполните:

sudo timedatectlГотово, теперь вы можете перезапустить компьютер и запустить 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Источник

PS. C моей точки зрения, более правильно устанавливать Windows в виртуальную машину на Linux. В этом случае винда ведёт себя более стабильно. Правда, для этого нужно очень хорошо владеть настройками ВМ.

Перейти к содержанию

На чтение 1 мин Просмотров 140 Опубликовано

Многие новички Linux у которых стоит второй системой Windows сталкиваются с неприятным сюрпризом с переходом из одной систему в другую время различается. Это происходит потому, что Linux и Windows хранят время в разных форматах. Windows хранит время в формате localtime, а Linux в формате UTC.

Самый простой способ это исправить, надо перевести Linux на роботу с localtime.

timedatectl | grep local

ПЕРЕВОД LINUX НА РАБОТУ С LOCALTIME

Проверить состояние:

timedatectl | grep local

Если в ответ получите RTC in local TZ: no то время Гринвича (+0), если RTC in local TZ: yes то значит локальное (то есть что в Linux, то и в Биосе и так же будет в Windows).

Чтобы Линукс при выключении не переводил часы на «+0», делаем:

timedatectl set-local-rtc 1

и если вдруг нужно будет вернуть все назад:

timedatectl set-local-rtc 0

Если на вашей машине установлены Ubuntu и Windows, вы замечаете, что время «скачет» после перезагрузки из одной системы в другую. Сегодня мы расскажем, как исправить это.

Такой конфликт во времени между Windows и Ubuntu происходит из-за того, что по умолчанию Ubuntu хранит время в аппаратных часах в виде универсального скоординированного времени (UTC), а Microsoft Windows хранит время в локальном часовом поясе. Таким образом, при переключении между Ubuntu и Windows время показывается по-разному.

Исправить эту проблему достаточно просто, как из Ubuntu, так и из Windows.

A. Изменить разницу между UTC и локальным временем между Ubuntu и Windows  из Ubuntu, чтобы Ubuntu использовала локальное время.

Перед тем, как приступать к реализации этого метода обратите внимание, что Ubuntu рекомендует хранить время в UTC, так как в этом случае не возникает проблем с переходом на летнее время и обратно. Метод B (исправление в Windows), приведенный ниже, не имеет таких недостатков.

Для Ubuntu 16.04 и новее, выполните следующие команды:

timedatectl set-local-rtc 1

Проверить, использует ли Ubuntu локальное время вместо UTC, можно с помощью команды

timedatectl

Если вы используете Ubuntu предыдуших версий, до 16.04: нужно отредактировать файл /etc/default/rcS и заменить «UTC=yes» на «UTC=no» (без кавычек). Для того, чтобы сделать это автоматически, просто вставьте следующую команду в терминал:

sudo sed -i 's/UTC=yes/UTC=no/' /etc/default/rcS

После этого необходимо перезагрузить систему.

B. Исправляем из Windows (метод должен работать в Vista SP2, Windows 7, Server 2008 R2 и Windows 8/8.1), чтобы система использовала универсальное время вместо локального: загрузите этот файл реестра Windows и установите его двойным щелчком по имени файла.

Затем необходимо отключить службу времени Windows (которая продолжает записывать локальное время при выключении, независимо от параметров реестра), запустите командную строку от имени администратора и выполните следующую команду:

sc config w32time start= disabled

После этого необходимо перезагрузить систему.

Как вернуть изменения

A. Из Ubuntu: вернуть изменения из Ubuntu достаточно просто.

Ubuntu 16.04 и новее: для того, чтобы вернуть изменения, просто запустите следующую команду:

timedatectl set-local-rtc 0

Ubuntu версий до 16.04: всё, что нужно сделать, это заменить «UTC=no» на «UTC=yes» в файле /etc/default/rcS. Для того, чтобы сделать это автоматически, вставьте в терминал следующую команду:

sudo sed -i 's/UTC=no/UTC=yes/' /etc/default/rcS

После этого перезагрузите компьютер.

B. Из Windows: вернуть изменения в Windows чуть более сложно.

Для начала, откройте загруженный ранее файл .reg в текстовом редакторе и измените значение ключа «RealTimeIsUniversal» с «dword:00000001» на «-» (без кавычек). Вот как будет выглядеть файл после изменений:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=-

Сохраните файл и дважды кликните по нему.

Затем выполните следующую команду из командной строки (запущенной от имени администратора), чтобы разрешить запуск службы времени Windows:

sc config w32time start= demand

После этого перезагрузите компьютер.

  • Самый простой dlna сервер для windows
  • Самый экономный браузер для windows
  • Сбой a2dp сбой загрузки драйвера стереозвука windows
  • Сбой запроса на сброс usb порта windows 10 код ошибки 43
  • Сбивается громкость микрофона в windows 10