Главная >> Инструкции >> Сбивается время в Ubuntu и Windows

Сбивается время в 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

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

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, чтобы временные зоны не сбивались, но что такое временные зоны и зачем они нужны, на завершение видео про это:

×

Оцените статью

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (59 оценок, среднее: 4,85 из 5)
Загрузка...
Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

61 комментарий к “Сбивается время в Ubuntu и Windows”

  1. Настроил успешно в Windows 8.1, в Linux часы сбивались только когда инет пропадал, а весли местоположению вбивать вручную не всегда корректно показывают время.

    Ответить
    • Рано обрадовался успеху. Время обратно сбивается в в Windows 8.1, Linux Ubuntu 14.04 - нормально. Что делал: всё по мануалу выше и отключил синхронизацию часов с интернетом. Пока проблемка решается обновлением часов (Кнопка "Обновление сейчас" в Настройках времени по интернету). P.S. В дуалбуте Win XP, 7 & Linux Ubuntu 12.04-14.04 такой ахинеи не было!

      Ответить
  2. Теперь у меня другая проблема вылезла. Я пытаюсь залогинится в своей Ubuntu gnome , а меня опять выкидывает на экран ввода логина и пароля. Это случилось после того как я время исправил по первому способу, хотя как это могло повлиять? Есть мнение что может быть?

    Ответить
  3. Просто отключил автоматическую установку времени в Линуксе. Другого способа не нашол. Вообще Убунта и Кубунта стали ужасными с точки зрения интерфейса пользователя. Опять из системы для работы сделали систему для вечной настройки.

    Ответить
    • не помогло, но попытка была хорошая, пока я исправил так: сделал под win10 скрипт, который выключает и снова включает синхронизацию времени с интернетом (после такой манипуляции происходит синхронизация) , и поставил скрипт в автозагрузку.

      Ответить
  4. Возник вопрос, - обе ОС берут время из биос, но одна думает что это UTC, а другая что это localtime?
    Но тогда время сбиваться не должно... Или время хранится на жестком диске, например в загрузочном секторе, а потому и переписывается?
    Разъясните, пожалуйста ))

    Ответить
  5. Вопрос- Если стоит несколько систем Windows (или Linux), то данную операцию производить в одной из них или в каждой?

    Ответить
  6. Синхронизация времени Linux и Windows.
    В Windows запустить из окна «выполнить» программу regedit — редактор реестра. Зайти в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
    и создать там параметр DWORD с именем RealTimeIsUniversal и значением равным единице.

    Ответить
  7. Сделал всё по инструкции, всё равно время на 1 час убегает и соответственно отстает, когда включаешь винду после убунты и наоборот. Винда седьмая стоит.

    Ответить
  8. Если у вас WindowsXP, то только один вариант - время BIOS местное.
    Ubuntu может работать с временем BIOS местным, а винда с временем BIOS UTC работать не может.
    Проблема известна еще до выпуска XP, но за время жизни ОС так и не смогли выпустить патч.
    Для семерки выпустили патч KB2922223.
    Подробности
    http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html

    Ответить
  9. Как затрахали оправдывая ГЛЮКОВ Убунту! То Gedit портит текстовые документы, делает из букв каказябры - это старая таблица символов. А почему тогда другие программы в Убунту правильно читают документ. Значит дело в уродском Gedit ! При чём исправив этот глюк командой, Gedit всё равно ИНОГДА гадит документы. Теперь вот с Часами "танцы с бубном". "Windows не правильно считывает...." Блин, но на прежних версиях Убунту такого не было! Значить можно было не создавать проблемы пользователям. Что ж вы вместо того, чтоб устранить эту проблему в месте с разработчиками, "ездите нам по ушам"? А Скайп почему в Ubunty 16.04 не устанавливается? Что на старом языке программирования написан? Почему ярлыки на рабочем столе нельзя создать? Буду искать другой Линукс, более дружественный, у которого более квалифицированные разработчики и которые уважают пользователей и их время.

    Ответить
  10. Огромное спасибо. Сколько ответов я уже нашел на данном сайте, всего и не сосчитать. Я уже внес его в список исключения в своих adblok -ах ( на убунту и теперь в винде). Продолжай развиваться и радовать нас верными ответами. P.S. добавлю я сайт себе в закладки.

    Ответить
  11. Описанным способом, командная строка, не получилось в windows. Сделал проще, сам создал в реестре параметр qword для х64 , задал ему имя RealTimeIsUniversal и значение 1.
    Все получилось и работает. Способ в принципе рабочий, если не получается через командную строку ручками и проблем нет.

    Ответить
  12. Спасибо - надеюсь помогло - у меня Linux Mint и Windows 10. Выполнил
    sudo timedatectl set-local-rtc 1 --adjust-system-clock
    и в Linux-е убрал автоматическую установку времени.

    Ответить
  13. Уважаемый админ, у меня стоит на ноутбуке Win7(64) и Роса R10. Как мне сделать, чтобы не сбивалось время? Ваш метод для виндоуз не сработал, пишет, что add не является выполнимой командой. Подскажите, пожалуйста, "на пальцах", если можно.

    Ответить
  14. Статья чуть более, чем полностью состоит из поисковых запросов и написана для роботов, а не для людей. Людям читать текст, где одни и те же ключевые фразы повторяются по десять раз в разных комбинациях слов невыносимо.

    Ответить
  15. А я ничего не делаю. Через некоторое время после загрузки время корректируется автоматически (на ноутбуке установлены Windows 7 u Ubuntu 16.04).

    Ответить
  16. От куда вообще такая мания /v RealTimeIsUniversal /t REG_DWORD /d 0 ?
    Почему нельзя просто написать, что нужно создать параметр в ветке? Просто с помощью мышки и интерфейса.
    Я конечно понимаю, что очень сложно донести до людей обычным языком, но так нужно этому учиться. Если я например программист, я же не общаюсь со всеми двоичным кодом.
    Если уж речь идет про windows, то это подразумевает использование окон и не надо тут умничать и пускать пыль в глаза.

    Ответить
    • Для меня было бы удобнее и быстрее потратить 5 секунд на копирование команды, а не получасовом ковырянии какого то там редактора в поисках как и где создавать эту ветку. И статья в десять раз растянулась бы объясняя пошагово как ее создать.

      Ответить
      • А у меня команда под Windows 10 не сработала - "отказано в доступе" Пришлось ручками через regedit параметр создавать.

        Ответить
  17. Спасибо большое. Manjaro Linux и сам неплохо обновлял время, а в Windows предложенный способ сработал с первого раза.
    И не вижу никаких проблем выполнить готовую команду в консоли Windows.

    Ответить
  18. "sc config w32time start= disabled"
    Ох, боюсь после этого можно хлебнуть много проблем на винде. Причём иногда будет непонятно в чём таки дело. w32time довольно важная служба, не стоит её отключать.

    Ответить
  19. sudo timedatectl
    Local time: Вт 2019-12-17 10:28:38 MSK
    Universal time: Вт 2019-12-17 07:28:38 UTC
    RTC time: Вт 2019-12-17 10:28:38
    Time zone: Europe/Moscow (MSK, +0300)
    System clock synchronized: yes
    NTP service: active
    RTC in local TZ: yes
    Warning: The system is configured to read the RTC time in the local time zone.
    This mode cannot be fully supported. It will create various problems
    with time zone changes and daylight saving time adjustments. The RTC
    time is never updated, it relies on external facilities to maintain it.
    If at all possible, use RTC in UTC by calling
    'timedatectl set-local-rtc 0'.

    Везде пишут о смене часового пояса, но хоть бы кто-нибудь написал как принудительно установить время в самом часовом поясе, это же получается в москве блин 7 утра а в Таганроге блин 10 утра, что за бредятина? может есть команда set UTC date?

    Ответить
  20. Спасибо большое. Я заметил, что в Linux время всегда верное, а при загрузке Windows сдвинуто на часовой пояс. Тогда я изменил двумя приведёнными строчками время в Windows. Теперь время всегда верное.

    Ответить
  21. самый простой вариант в Windows 7 выставить в планировщике заданий синхронизацию при запуске, и все.
    а при приведенных в статье исправлениях появляются различные баги. например если исправить в винде, то на убунте баг с редшифта получается.
    но писателю все равно спасибо - статья и натолкнула на мысль синхронизироваться при входе в систему

    Ответить
  22. PS C:\WINDOWS\system32> sc config w32time start=disabled
    Set-Content : Не удается найти позиционный параметр, принимающий аргумент "start=disabled".
    строка:1 знак:1
    + sc config w32time start=disabled
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Set-Content], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetContentCommand

    Ответить
  23. При > sc config w32time start= disabled выскакивает "Не удается найти позиционный параметр, принимающий параметр "start=" " На 64 win 10 системе даже с w64time пишет одинаково. Как выполнить команду?

    Ответить
  24. In Windows 10, I went to services and enabled "Windows Time" service w32time to be automatic, that solved it for me.
    Проще говоря, Службе времени Виндоуз 10 изменяем тип запуска на автоматический... Профит.
    Взято отсюда
    https://stackoverflow.com/questions/426071/how-can-i-sync-the-computers-clock-upon-startup/55128248#55128248?newreg=552e27ad788747a1805fa26f8bfc9a0c
    Перевод мой)

    Ответить
  25. >либо Linux по формату localtime, что является не совсем правильным

    кто нибуть может объяснить мне, почему МЕСТНОЕ время является не совсем неправильным?
    почему меня, рядового пользователя, должно волновать время UTC? в реальной жизни я с этим временем не сталкиваюсь от слова вообще.
    и задалбывает помнить линуховую команду на установку НОРМАЛЬНОГО времени (да, я пользуюсь минтом). хорошо, что хоть не часто приходится ставить линуксы, народ в основном игрушки в виндах играет, редко просят линуху поставить

    Ответить
  26. Спасибо за статью. Действительно, век живи - век учись. Ситуацию исправил правкой файла /etc/defaut/rcS. В биосе стоит время местное, дуалбут лубунта+хрюша, раньше сбивалось на 4 часа, теперь всё пучком.
    ПыСы. Чувствую, от винды совсем откажусь - держу только ради пары игрушек.

    Ответить

Оставьте комментарий