Многие новые пользователи, которые только перешли на Linux с операционной системы Windows, и пока все еще запускают эту систему время от времени, сталкиваются с проблемой, что после загрузки Windows в Ubuntu сбивается время на несколько часов назад или вперед, затем после нескольких перезагрузок уже сложно понять какое сейчас время.
Все это происходит из-за различий формата хранения времени в этих операционных системах. И будет происходить при каждой перезагрузке, сколько бы вы ни устанавливали правильное время. Но эту проблему можно решить. И даже несколькими способами. В этой статье мы рассмотрим, как решить проблему сбивается время в Ubuntu и Windows.
Содержание статьи
- Почему так происходит?
- Настройка Windows для работы по UTC
- Настройка Linux для работы localtime
- Выводы
Почему так происходит?
Как я уже сказал, проблема в разных форматах хранения и восстановления времени. В компьютере есть два вида часов. Аппаратные - идут всегда, даже когда компьютер выключен и программные часы, встроенные в ядро. Когда компьютер включается значение аппаратных часов записывается в программные, и в дальнейшем операционная система берет время оттуда. Но 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 битных систем:
А для 64-битных, нужно использовать тип значения REG_QWORD:
Почти готово, но служба времени Windows независимо от этой настройки будет писать время в местном формате при обновлении его через интернет, поэтому удобно эту службу отключить. Для этого выполните:
Как вернуть обратно?
Если вы хотите вернуть все как было, то сделать это можно проще простого. Сначала возвращаем ключ реестра в правильное положение:
И запускаем обратно службу синхронизации:
Готово, а дальше рассмотрим, как заставить 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, чтобы временные зоны не сбивались, но что такое временные зоны и зачем они нужны, на завершение видео про это:
Вот чёрт, а я гнал на батарейку с мати... спасибо буду знать!
Спасибо! По-настоящему полезная статья
Не ожидал, что найду решение этой проблемы не искав её. Отличниший ресурс.
Не ведитесь на изменения в реестре Windows 10. Система отказывается загружаться.
Настроил успешно в Windows 8.1, в Linux часы сбивались только когда инет пропадал, а весли местоположению вбивать вручную не всегда корректно показывают время.
Рано обрадовался успеху. Время обратно сбивается в в Windows 8.1, Linux Ubuntu 14.04 - нормально. Что делал: всё по мануалу выше и отключил синхронизацию часов с интернетом. Пока проблемка решается обновлением часов (Кнопка "Обновление сейчас" в Настройках времени по интернету). P.S. В дуалбуте Win XP, 7 & Linux Ubuntu 12.04-14.04 такой ахинеи не было!
Теперь у меня другая проблема вылезла. Я пытаюсь залогинится в своей Ubuntu gnome , а меня опять выкидывает на экран ввода логина и пароля. Это случилось после того как я время исправил по первому способу, хотя как это могло повлиять? Есть мнение что может быть?
Время не могло повлиять, тут, скорее всего, что-то еще.
у меня была похожая проблема, всё дело было в том ... что я изменил права корневой папки, из за этого меня выкидывало, если вы проделали тоже самое, то советую поменять права назад
А я думал что вирусня какая то))))) Спасибо ОГРОМНОЕ! Шикарный сайт!!!
А какие манипуляции необходимо произвести в Win XP, что б в нем не сбивалось время ???
удалить мертвую систему, и поставить поддерживаемую
В kubuntu 16.04 ни одна из команд не работает.
Просто отключил автоматическую установку времени в Линуксе. Другого способа не нашол. Вообще Убунта и Кубунта стали ужасными с точки зрения интерфейса пользователя. Опять из системы для работы сделали систему для вечной настройки.
переходи на, тёмную сторону, на debian =)
При много благодарен!
не помогло, но попытка была хорошая, пока я исправил так: сделал под win10 скрипт, который выключает и снова включает синхронизацию времени с интернетом (после такой манипуляции происходит синхронизация) , и поставил скрипт в автозагрузку.
Спасибо, помогло. В очередной раз. Страницу сохранил. 🙂
Возник вопрос, - обе ОС берут время из биос, но одна думает что это UTC, а другая что это localtime?
Но тогда время сбиваться не должно... Или время хранится на жестком диске, например в загрузочном секторе, а потому и переписывается?
Разъясните, пожалуйста ))
Очень спасибо, камрад! А то заеколебало это вечное переставлялово часов между Убунтой и виндой.
Вопрос- Если стоит несколько систем Windows (или Linux), то данную операцию производить в одной из них или в каждой?
Синхронизация времени Linux и Windows.
В Windows запустить из окна «выполнить» программу regedit — редактор реестра. Зайти в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
и создать там параметр DWORD с именем RealTimeIsUniversal и значением равным единице.
100% срабатывает метод, если установлен патч KB2922223. Спасибо!
Да, все отлично, на Win7 сработало. Второй системой стоит Linux Mint 19, при переходе туда-обратно сейчас время не сбивается. Спасибо за информацию!
Сделал всё по инструкции, всё равно время на 1 час убегает и соответственно отстает, когда включаешь винду после убунты и наоборот. Винда седьмая стоит.
Век живи - век учись! )
Если у вас WindowsXP, то только один вариант - время BIOS местное.
Ubuntu может работать с временем BIOS местным, а винда с временем BIOS UTC работать не может.
Проблема известна еще до выпуска XP, но за время жизни ОС так и не смогли выпустить патч.
Для семерки выпустили патч KB2922223.
Подробности
http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html
Как затрахали оправдывая ГЛЮКОВ Убунту! То Gedit портит текстовые документы, делает из букв каказябры - это старая таблица символов. А почему тогда другие программы в Убунту правильно читают документ. Значит дело в уродском Gedit ! При чём исправив этот глюк командой, Gedit всё равно ИНОГДА гадит документы. Теперь вот с Часами "танцы с бубном". "Windows не правильно считывает...." Блин, но на прежних версиях Убунту такого не было! Значить можно было не создавать проблемы пользователям. Что ж вы вместо того, чтоб устранить эту проблему в месте с разработчиками, "ездите нам по ушам"? А Скайп почему в Ubunty 16.04 не устанавливается? Что на старом языке программирования написан? Почему ярлыки на рабочем столе нельзя создать? Буду искать другой Линукс, более дружественный, у которого более квалифицированные разработчики и которые уважают пользователей и их время.
Огромное спасибо. Сколько ответов я уже нашел на данном сайте, всего и не сосчитать. Я уже внес его в список исключения в своих adblok -ах ( на убунту и теперь в винде). Продолжай развиваться и радовать нас верными ответами. P.S. добавлю я сайт себе в закладки.
Описанным способом, командная строка, не получилось в windows. Сделал проще, сам создал в реестре параметр qword для х64 , задал ему имя RealTimeIsUniversal и значение 1.
Все получилось и работает. Способ в принципе рабочий, если не получается через командную строку ручками и проблем нет.
Спасибо, помогло в вин_10
Спасибо огромное. Проблема решилась благодаря вашей статье.
Спасибо - надеюсь помогло - у меня Linux Mint и Windows 10. Выполнил
sudo timedatectl set-local-rtc 1 --adjust-system-clock
и в Linux-е убрал автоматическую установку времени.
Уважаемый админ, у меня стоит на ноутбуке Win7(64) и Роса R10. Как мне сделать, чтобы не сбивалось время? Ваш метод для виндоуз не сработал, пишет, что add не является выполнимой командой. Подскажите, пожалуйста, "на пальцах", если можно.
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0
Статья чуть более, чем полностью состоит из поисковых запросов и написана для роботов, а не для людей. Людям читать текст, где одни и те же ключевые фразы повторяются по десять раз в разных комбинациях слов невыносимо.
А я ничего не делаю. Через некоторое время после загрузки время корректируется автоматически (на ноутбуке установлены Windows 7 u Ubuntu 16.04).
От куда вообще такая мания /v RealTimeIsUniversal /t REG_DWORD /d 0 ?
Почему нельзя просто написать, что нужно создать параметр в ветке? Просто с помощью мышки и интерфейса.
Я конечно понимаю, что очень сложно донести до людей обычным языком, но так нужно этому учиться. Если я например программист, я же не общаюсь со всеми двоичным кодом.
Если уж речь идет про windows, то это подразумевает использование окон и не надо тут умничать и пускать пыль в глаза.
Для меня было бы удобнее и быстрее потратить 5 секунд на копирование команды, а не получасовом ковырянии какого то там редактора в поисках как и где создавать эту ветку. И статья в десять раз растянулась бы объясняя пошагово как ее создать.
А у меня команда под Windows 10 не сработала - "отказано в доступе" Пришлось ручками через regedit параметр создавать.
Спасибо большое. Manjaro Linux и сам неплохо обновлял время, а в Windows предложенный способ сработал с первого раза.
И не вижу никаких проблем выполнить готовую команду в консоли Windows.
Очень нужный мануал, когда установлено две OS - Ubuntu & Windows!
Спасибо! Работает в Manjaro Linux.
Cпасибо помогло,Lubuntu 18.04 lts =)
"sc config w32time start= disabled"
Ох, боюсь после этого можно хлебнуть много проблем на винде. Причём иногда будет непонятно в чём таки дело. w32time довольно важная служба, не стоит её отключать.
Мне помогло. Спасибо !!!
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?
Спасибо, на Manjaro помогло. Пы.Сы. скоро откажусь от Windows - я ее держал только для игрушек. А они мне уже надоели.
Спасибо большое. Я заметил, что в Linux время всегда верное, а при загрузке Windows сдвинуто на часовой пояс. Тогда я изменил двумя приведёнными строчками время в Windows. Теперь время всегда верное.
самый простой вариант в Windows 7 выставить в планировщике заданий синхронизацию при запуске, и все.
а при приведенных в статье исправлениях появляются различные баги. например если исправить в винде, то на убунте баг с редшифта получается.
но писателю все равно спасибо - статья и натолкнула на мысль синхронизироваться при входе в систему
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
timedatectl set-local-rtc 1
Спасибо, теперь всё работает правильно.
Спасибо!
При > sc config w32time start= disabled выскакивает "Не удается найти позиционный параметр, принимающий параметр "start=" " На 64 win 10 системе даже с w64time пишет одинаково. Как выполнить команду?
Надо было не через PowerShall, а через стандартную командную строку от администратора
Применил сценарий для Windows - не помогло. Window 10 и Ubuntu 20.4.
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
Перевод мой)
>либо Linux по формату localtime, что является не совсем правильным
кто нибуть может объяснить мне, почему МЕСТНОЕ время является не совсем неправильным?
почему меня, рядового пользователя, должно волновать время UTC? в реальной жизни я с этим временем не сталкиваюсь от слова вообще.
и задалбывает помнить линуховую команду на установку НОРМАЛЬНОГО времени (да, я пользуюсь минтом). хорошо, что хоть не часто приходится ставить линуксы, народ в основном игрушки в виндах играет, редко просят линуху поставить
Помогла именно настройка в Linux. В Windows время было как в материнке а в Ubuntu добавлялось 6 часов.
Спасибо за статью. Действительно, век живи - век учись. Ситуацию исправил правкой файла /etc/defaut/rcS. В биосе стоит время местное, дуалбут лубунта+хрюша, раньше сбивалось на 4 часа, теперь всё пучком.
ПыСы. Чувствую, от винды совсем откажусь - держу только ради пары игрушек.
У меня при переходе с Ubuntu
на Windows отстаёт время. При переходе с Windows на Ubuntu время показывает показывает правильно. Выставил в БИОСЕ время теперь при переходе с Linux на Windows перестали отставать часы.
Спасибо, просто и доходчиво.
Проблема с часами решена
поменяли винде и в линуксе, все равно сбивается...
Кому интерестно, время в Windows можно синхронизировать и через утилиту TimeSync, после того как стандартная синхронизация была отключена.
Благодарю за толкование, оказывается, всё так просто)