4h4-auto.ru

4х4 Авто
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Автоматическая синхронизация времени ubuntu

Автоматическая синхронизация времени ubuntu

Нередки конфигурации, когда на компьютере установлены две операционные системы (Windows и Linux) в конфигурации двойной загрузки (или как модно говорить Dual Boot). Действительно, на первое время можно попробовать пользоваться и Linux, и Windows, а затем уже принять решение о полном переходе на Linux, если все ваши потребности удовлетворены.

Однако вы можете столкнуться с проблемой, что после переключения между операционными системами (загрузки в Linux после Windows) сбивается время на несколько часов вперед или назад. Собственно, с данной ситуацией столкнулся и я. Мне это не понравилось. К счастью, описанная проблема решается в пару кликов.

Виджеты времени Kubuntu

Почему сбивается время

Windows и Linux по разному работают с временем BIOS. Дело тут в наличии двух форматов представления времени UTC и localtime.

Linux и формат UTC

Операционные системы GNU/Linux (в том числе Mac OS X) считают, что время в BIOS указано в формате UTC (по Гринвичу). Соответственно, при загрузке Linux для преобразования UTC к локальному времени добавляет (отнимает) смещение текущего часового пояса, который выбрал пользователь. Проще говоря, чтобы получить локальное время для часового пояса Москвы UTC+3, Linux добавит 3 часа.

Windows и формат LocalTime

Windows же считает, что в время в BIOS хранится в формате localtime. Поэтому если вы указали новый часовой пояс или синхронизировали время с внешним источником, система соответственным образом меняет время в BIOS на локальное время.

Linux (Kubuntu 18.04 в моем случае) считает, что время в BIOS указано в формате UTC и дополнительно добавляет смещение часового пояса. Именно поэтому и сбивается время при переключении между Linux и Windows.

Как исправить смещение времени

Вариант 1

Шаг 1. Добавляем параметр RealTimeIsUniversal

Чтобы исправить такую ситуацию, нужно переключить Windows на использование времени в формате UTC с помощью параметра реестра RealTimeIsUniversal.

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

Запуск командной строки Windows от имени администратора

Для 32-битных систем:

reg add «HKLMACHINESystemCurrentControlSetControlTimeZoneInformation» /v RealTimeIsUniversal /t REG_DWORD /d 1 /f

Для 64-битных систем (нужно создавать параметр типа QWORD вместо DWORD):

reg add HKLMSYSTEMCurrentControlSetControlTimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

Редактор реестра Windows

Шаг 2. Отключаем синхронизацию времени с сетью Интернет

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

sc config w32time start=disabled

После выполнения указанной команды потребуется перезагрузиться в Linux, а затем снова в Windows.

Командная строка Windows

Вариант 2

Также можно переключить Linux на использование локального времени. В Kubuntu 18.04 и выше это можно сделать командой:

timedatectl set-local-rtc 1

Терминал в Kubuntu

Как вернуть настройку времени в Windows и Linux назад

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

Для 32-битных систем:

reg add «HKLMACHINESystemCurrentControlSetControlTimeZoneInformation» /v RealTimeIsUniversal /t REG_DWORD /d 0 /f

Для 64-битных систем (нужно создавать параметр типа QWORD вместо DWORD):

reg add HKLMSYSTEMCurrentControlSetControlTimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 0

Для включения синхронизации времени в Windows:

sc config w32time start=demand

Читайте так же:
Регулировка карбюратора бензопила alpina

Для возврата настроек на умолчание в Kubuntu 18.04 или Ubuntu 18.04 достаточно выполнить команду в Терминале:

sudo timedatectl set-local-rtc 0

Какой вариант выбрать, решайте сами. Лично я использую первый вариант. А какой вариант используете вы?

Понравилась статья? Не очень? Тогда возможно, что вы напишите свою гораздо лучше. Просто перейдите по ссылке Размещение статей и ознакомьтесь с правилами публикации статей на сайте MultiBlog67.RU .

unboxIT

Если информация была полезной для вас, вы можете поблагодарить за труды Яндекс деньгами: 41001164449086 или пластиковой картой:

Правильная настройка сервера времени NTP на Linux

В интернете можно найти целое море мануалов по настройке сервера времени — ntpd, но ирония состоит в том, что 95% из них либо не совсем верны, и авторы этого даже не замечают, либо не дают необходимой информации. Далее я расскажу как организовать NTP сервер под Linux в локальной сети, который будет синхронизировать своё время с серверами в Интернете, а устройства в локальной сети будут уже синхронизировать время с ним.

Немного пред истории. Как и положено, всё началось неожиданно, сервер который я настраивал на кануне ночью, при следующей загрузки завис. «Шикарно» подумал я и полез в логи. В результате в том что сервер вис был повинен ntpd сервис, который из-за неправильной настройки сети не мог связаться внешним сервером для синхронизации. Посмотрев скрипт запуска, я наткнулся на интересную запись:

А теперь внимание на строку с номером 8. Это начало цикла, в котором целых 7-мь раз будет предпринята попытка начальной, грубой синхронизации времени. Всё бы хорошо, но если у вас неправильно настроена сеть, или DNS, то вызовет подвисание сервера, на 7*( 1 + время проверки доступности DNS, порядка 5 сек ) секунд. В общем ждать минуту меня явно не устраивало, итак приступим.

Настройка начальной, грубой синхронизации

В замечательном файле /etc/ntp/step-tickers, хранятся имена серверов с которыми производиться начальная, грубая (сотни милесекунд) корректировка. Если вы уверены что у вас всегда будет доступ к Internet, можете перечислить в нём имена серверов, например:

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

Задача: Организовать NTP сервер в локальной сети, который будет синхронизировать своё время с Интернетом, а устройства в локальной сети будут уже синхронизировать время с ним.
Дистрибутив: Mandriva 2010.2 free Версия ntpd: 4.2.4p8

Мир Linux действительно великолепен, все настройки в нём сводятся к простому редактированию файлов конфигураций. ntpd в этом плане не исключение. Итак если у вас ещё не стоит ntpd сервер установим его:

Желающие могут скомпилировать из исходников, или установить его другим способом, в мои же платны входит показать как настроить это чудо, по скольку в интернете можно найти целое море мануалов по настройке ntpd, но ирония состоит в том, что 95% из них либо не совсем верны (и авторы этого даже не замечают при вызове статусов) либо не дают необходимой информации. Итак файл с настройками храниться в /etc/ntp.conf, минимальные настройки примерно такие:

Читайте так же:
Датчик регулировки дроссельной заслонки фиат

Каждая строчка указывает на сервер (списки серверов можно найти здесь http://www.pool.ntp.org), с которым будет происходить синхронизация. Четыре строчки с server, соответственно четыре сервера. Хотя на самом деле в данном примере это не совсем так. Каждая запись указывает на пул (группу) серверов. При обращении скажем по адресу 2.ru.pool.ntp.org будет выбран 1 IP адрес сервера, с которым будет происходить синхронизация. Соответствия обновляются 1 раз в час. Теперь на более простом примере. Всего у нас имеется 4 коробки с часами. Мы берём и наугад достаём из каждой коробки 1 часы, всего у нас получается 4 часов, с которыми мы будем сверять наше время. В течении часа, каждый раз когда мы будем сверять время, мы будем брать одни и те же часы. Через час если мы опять обратимся к этим коробкам, то вытащим уже другие часы. Таким образом наше время будет сверяться постоянно с разными часами, и если какие-то из них окажутся не рабочими, то ничего страшного не случиться, ведь за 1 час, наши локальные часы не слишком сильно рассинхронизируются. Ну да мы отвлеклись, продолжим. Прежде чем запускать сервер ntpd, необходимо произвести начальную, грубую установку времени. Можно просто выставить время руками, а можно выполнить команду (разумеется если у нас корректно работает связь с интернетом):

После того как время грубо синхронизировано можно запускать основной сервис (на всякий случае перезапустим его):

После чего выполним команду:

В результате должны увидеть что-то на подобии:

Небольшие пояснения что есть что. remote — FQDN или IP-адрес сервера; refid — IP-адрес сервера с которым в настоящий момент выполняется синхронизация сервера из столбца remote; st — stratum сервера; t — режим работы сервера: ‘u’ — unicast, ‘m’ — multicast, ‘b’ — broadcast, ‘-‘ — manycast; when — время, прошедшее с момента последнего ответа сервера в секундах или ‘-‘, если сервер еще ни разу не ответил (скорее всего, «умер», и сведения о нем пора удалить из файла конфигурации); poll — интервал опроса сервера в секундах (после запуска имеет небольшое значение, чтобы синхронизация происходила быстрее, с течением времени значение увеличивается); reach — состояние восьми последних попыток запроса времени у сервера в восьмеричном представлении (в случае успешной попытки устанавливается соответствующий бит); delay — задержка ответа сервера в секундах; offset — самое важное значение — различие локального времени и времени на сервере (с течением времени значение уменьшается, т.к. время становится более точным); jitter — дисперсия, дрожание фазы (более низкие значения обеспечивают более точную синхронизацию). Ждём 10 минут. Повторяем, команду и видем:

Ага, вот оно появились всякие дополнительные символы и вот что они означают: ‘*’ — сервер, с которым в настоящий момент выполняется синхронизация, ‘#’ — сервер отобран для синхронизации, но дистанция до него превышает максимально возможную, ‘?’ — сервер отобран для синхронизации и использует сигнал PPS, ‘+’ — сервер добавлен в список серверов, отобранных для синхронизации, ‘x’ — сервер использует некорректный алгоритм, ‘.’ — сервер выбран из конца списка серверов, отобранных для синхронизации, ‘-‘ — сервер отвергнут группирующим алгоритмом, пробел — сервер имеет слишком высокий stratum и/или не может быть проверен; Теперь по простому, если видем ‘+’, ‘-‘, ‘*’ синхронизация пошла. offset — отклонение нашего времени и времени удалённого сервера, если значение скажем больше 100, то синхронизация реально не произошла. На некоторых ресурсах можно увидеть следующую картину:

Читайте так же:
Клапан регулировки давления топлива на ланос

Видим что половина серверов (2, 3, 4) вообще не работает и реально происходит работа с локальным сервером и с 172.22.128.8. Смотрим значение offset которое говорит что никакой синхронизации нет и в помине! Из листинга можно сделать только один вывод, что сервер засинхронизирован сам с собой, и его время имеет мало общего с действительным. Будьте внимательны, не давайте вас нае. обмануть 🙂 На этом бы можно и остановиться но теперь как говориться усложняем задачу. Нам надо чтоб наш сервер являлся источником времени для локальной сети, но при этом никто не смог сделать ничего плохого с вашим сервером. В чём проблема? В том что для нормальной синхронизации, даже если вы не планируете кому то давать синхронизировать время с вами, У ВАС ДОЛЖЕН быть открытым порт udp 123. После прочтения множества мануалов и дня потерянного времени вот что в /etc/ntp.conf получилось у меня:

Вникаем внимательно. Наш сервер засинхронизирован с 6-тью внешними пулами серверов, строки с 02 по 07. Строка 10, мы запрещаем кому либо чтобы-то не было делать с нашим сервером. Теперь нам надо внести исключение для серверов с которыми наш сервер будет синхронизироваться, строки с 13 по 18. При этом параметры nomodify notrap, говорят о том что запрещено изменять состояние НАШЕГО сервера и отправлять сообщения об исключениях ВНЕШНИМИ серверами, т. е. чтоб никто из этих серверов ничего не натворил. Строка 22, мы разрешаем участникам локальной сети синхронизировать время с нашим сервером, но при этом тоже вводим ограничение. Теперь самая важная строка — 25, будем считать что это локальная петля. Без неё работать не будет. В итоге, наш сервер синхронизируется с внешними серверами, при этом сам является сервером но только для нашей локальной сети, всем остальным доступ запрещён. Ещё раз перезапустим сервис:

Пойдём покурим, выпьем чаю, кофе (нужное подчеркнуть), после чего выполним команду:

Видим, наш сервер засинхронизирован, отклонение не превышают и 50мс. Настройка NTPD практически одинакова для всех Xnix систем, и отличается по сути только способом запуска. Всем советую ознакомиться также со статьёй где расписан вариант настройки для FreeBSD. http://www.sergeysl.ru/freebsd-ntpd/ Вот собственно и всё.

Добавить комментарий

Если информация была полезной для вас, вы можете поблагодарить за труды Яндекс деньгами: 41001164449086 или пластиковой картой:

Автоматическая синхронизация времени ubuntu

Network Time Protocol (NTP) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью.

В Linux существует два понятия времени — аппаратное(время в биосе) и системное(с учетом часового пояса). Аппаратное время можно узнать командой hwclock (запускается от имени суперпользователя), где также показывается отставание аппаратных часов от системных(команда date).

[root@centos s]# hwclock

Втр 13 Сен 2011 03:48:49 -1.467155 секунд

Но при решении некоторых задач иногда бывает необходимо записать текущее значение аппаратных часов в системные, для этого используется команда hwclock с опцией —systohc, а если нужно сделать наоборот — записать значение системных часов в аппаратные команда запускается с опцией —hctosys.

[root@centos s]# hwclock —systohc

[root@centos s]# hwclock —hctosys

Если использовать команду date без каких либо опций, то выводится информация в след виде, где вызывают вопрос только 3 буквы — MSD — это летнее время в Москве (наступит осень и будет отображаться MSK).

Читайте так же:
Как отрегулировать клапана на оке 1113

[root@centos s]# date

Втр Сен 13 00:00:38 MSD 2011

MSK отличается в + от времени по гринвичу на 3 часа, а MSD на 4 .

Установка времени в Linux

Устанавливается время командой date с опцией s, от слова set.

[root@centos s]# date -s 19:10

Втр Сен 13 19:10:00 MSD 2011

Но откуда операционная система знает, в каком регионе в мы живем ? По какому времени ходят системные часы ? Реально они идут по гринвичу, а система смотрит на наличие файла /etc/localtime

[root@centos s]# file /etc/localtime

/etc/localtime: timezone data, version 2, 12 gmt time flags, 12 std time flags,no leap seconds, 129 transition times, 12 abbreviation chars

Запишем в этот файлик данные относящиеся к временной зоне например Нью-Йорка, для чего потребуется выполнить следующую команду:

[root@centos s]# cp /usr/share/zoneinfo/America/New_York /etc/localtime

cp: переписать «/etc/localtime»? y

[root@centos s]# date

Втр Сен 13 11:19:37 EDT 2011

*Кстати вводить длинные команды удобнее используя табуляцию (кнопка TAB), начиная вводить начало каждого слова в команде и нажимая TAB система будет автоматом подставлять значение, что значительно сокращает время набора длинных команд и путей.

Меняя содержимое этого файла, мы меняем все значения, отвечающие за вывод времени, но при этом на системное время мы влияния не оказываем, т.к. оно "ходит" по Гринвичу.

Существует два стандарта времени GMT — Greenwich Mean Time — астрономическое (Среднее солнечное) время меридиана, проходящего через прежнее место расположения Гринвичской королевской обсерватории и UTC — всемирное координированное время, в сущности являющиеся одним и тем же. UTC появилось после того как в США возник вопрос "а по какой из 6ти деревень Гринвич, находящихся в разных штатах проходит Гривический мередиан". Чтобы не обижать национальные чувства американцев, было применено понятие UTC =))))))

Автоматическая синхронизация времени по протоколу NTP — Network Time Protocol.

Основной параметр серверов времени — Stratum — уровень сервера, сервера с этим параметром, равным 0 не общаются с клиентами, а позволяют синхронизировать время только других серверов синхронизации с уровенем 1 и ниже.

В Линукс есть программка ntpdate, с помощью которой можно синхронизировать системное время с сервером точного времени, предварительно указав при запуске программы(от roota)

[root@centos s]# ntpdate time.nist.gov

12 Sep 16:37:10 ntpdate[7743]: step time server 192.43.244.18 offset -68520.369071 sec

Если повторять синхронизацию постоянно, то все равно будут отклонения в несколько микросекунд.

Можно использовать для этой цели планировщик CRON, где через заданный промежуток времени будет синхронизироваться время, выглядит это следующим образом:

[root@centos s]# crontab -e

0 * * * * /usr/sbin/ntpdate сервера NTP

Эта запись значит что каждый час будет запускаться синхронизация с сервером времени.(0.00 1.00 2.00 и тд)

Но можно все сделать гораздо удобнее, установив программу NTP

[root@centos s]# yum install ntp — для Centos

$ sudo apt-get install ntp — для UBUNTU

Теперь настроим программу NTP.

Разрешение доступа из локальной сети:

По умолчанию ваш сервер NTP будет доступен всем хостам в Интернет. Параметр restrict в

файле /etc/ntp.conf позволяет вам контролировать, какие машины могут обращаться к вашему

Если вы хотите запретить всем машинам обращаться к вашему серверу NTP, добавьте

следующую строку в файл /etc/ntp.conf:

restrict default ignore

Если вы хотите разрешить синхронизировать свои часы с вашим сервером только машинам в

Читайте так же:
Устройство регулировки частоты вращения асинхронного двигателя

вашей сети, но запретить им настраивать сервер или быть равноправными участниками

синхронизации времени, то вместо указанной добавьте строчку

restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap

/etc/ntp.conf может содержать несколько директив restrict

restrict 10.0.0.0 mask 255.0.0.0 noquery

/etc/init.d/ntpd start или service ntpd start — для CentOS

/etc/init.d/ntp start или service ntp start — для Ubuntu.

* Опять же вводя команду узнать имя демона(ntp или ntpd) можно нажав кнопку TAB начав набирать имя сервиса.

FAQ: Синхронизация времени между Windows, Mac OS X и Ubuntu

Если вы хотите увидеть на нашем сайте ответы на интересующие вас вопросы обо всём, что связано с техникой Apple, операционной системой Mac OS X (и её запуском на PC), пишите нам через форму заявки на обзор или форму обратной связи.

К нам поступил следующий вопрос:

день добрый!
на хакинтоше стоят Snow Leopard, Windows 7 и Ubuntu. постоянно сбивается время после перезагрузки (( мак ос всегда его на 4-5 часов назад переводит! подскажите, как исправить проблему

Проблема с синхронизацией времени актуальна не только для хакинтошей, но и для настоящих Маков, на которых Windows работает через Boot Camp. Её причина очень проста: Mac OS X всегда считает, что время, записанное в BIOS (или EFI), записано там в формате UTC — проще говоря, по Гринвичу. К нему она прибавляет соответствующую поправку на часовой пояс.

А Windows поступает иначе: она напрямую считывает время из BIOS. И если вы это время меняете, либо оно автоматически синхронизируется, то в BIOS оно запишется уже в исправленном формате: UTC+поправка.

Как решить это противоречие? Есть два подхода: один — со стороны Mac OS, другой — со стороны Windows и Linux.

Решение средствами Mac OS X

Сразу скажем — это не лучший способ. Суть в том, что для Mac OS X мы задаём в качестве часового пояса время по Гринвичу. Например, в настройках (пульт Дата и время, вкладка Часовой пояс) выберите в качестве своего населённого пункта Рейкьявик.

Кроме того, на вкладке «Дата и время» обязательно отключите автоматическую синхронизацию времени, иначе получится ещё хуже, чем было.

После этих действий время в Windows всегда будет правильным, и Mac OS X не будет его портить. Но почему это не лучший способ? Дело в том, что если вы синхронизируете с Mac OS X какой-нибудь гаджет — например, iPhone, то неправильный часовой пояс будет искажать многие важные данные. К примеру, время входящих SMS тоже окажется гринвичским.

Решение средствами Windows и Linux

Другой способ — это заставить Windows и Linux считывать время из BIOS так же, как это делает Mac OS. К счастью, такая возможность действительно предусмотрена, но спрятана она очень глубоко.

В Windows вам придётся запустить из окна «Выполнить» программу regeditРедактор реестра. Затем зайдите в ветку HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation и создайте там параметр DWORD с именем RealTimeIsUniversal и значением, равным единице:

В Linux (по крайней мере, в Ubuntu), необходимо отредактировать файл /etc/default/rcS в любом текстовом редакторе и заменить содержимое параметра «UTC=no» на «UTC=yes».

После этого перезагрузитесь в Mac OS X и выставите родной часовой пояс, заодно можете включить автоматическую синхронизацию времени через Интернет. После перезагрузки в Windows и Ubuntu вы увидите точно такое же время.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector