Моя система синхронизирует автоматически синхронизирующий к аппаратным часам?

Я знаю, что мои аппаратные часы основаны на простых кварцевых часах и будут выходить из синхронизации со временем, но системное время основано на тактовой частоте ЦП и супер точно в результате.

Я не нахожусь в среде, где я могу использовать NTP, таким образом, я должен знать, система синхронизирует автоматически синхронизирующий назад к часам hw, чтобы помешать ему дрейфовать?

Если это не сделает, то я должен буду настроить задание крона или что-то для вызова hwclock синхронизировать назад к часам hw. Все установлено на UTC так, чтобы не должно было быть беспокойство.

1
задан 29 September 2018 в 02:45

1 ответ

Я думаю, что эта страница предоставляет лучший ответ:

2. Как Linux следит за ходом времени

2.1 Основные стратегии

Система Linux на самом деле имеет два часов: Каждый - "Часы реального времени" c батарейным питанием (также известный как "RTC", "часы CMOS", или "Аппаратные средства синхронизируют"), который следит за ходом времени, когда система выключена, но не используется, когда система работает. Другой "системные часы" (иногда названный "часами ядра" или "часами программного обеспечения"), который является счетчиком программного обеспечения на основе прерывания по таймеру. Это не существует, когда система не работает, таким образом, это должно быть инициализировано от RTC (или некоторый другой источник времени) во время начальной загрузки. Ссылки на "часы" в ntpd документации относятся к системным часам, не RTC.

Два часов будут дрейфовать на различных уровнях, таким образом, они будут постепенно расходиться друг от друга, и также далеко от "реального" времени. Самый простой способ сохранить их вовремя состоит в том, чтобы измерить их уровни дрейфа и применить поправочные коэффициенты в программном обеспечении. Так как RTC только используется, когда система не работает, поправочный коэффициент применяется, когда часы читаются во время начальной загрузки, с помощью часов (8) или hwclock (8). Системные часы исправлены путем корректировки уровня, на котором системное время совершенствуется с каждым прерыванием по таймеру, с помощью adjtimex (8).

Сырая альтернатива adjtimex (8) должна иметь chron выполненные часы (8) или hwclock (8) периодически для синхронизации системного времени к (исправленному) RTC. Это рекомендовалось в часах (8) страница справочника, и это работает, если Вы делаете это достаточно часто, что Вы не вызываете большие "переходы" в системное время, но adjtimex (8) является более изящным решением. Некоторые приложения могут жаловаться, переходит ли время назад.

Следующие повышаются в точности, должен использовать программу как ntpd, чтобы периодически читать время из сервера сетевого времени или радио-часов, и непрерывно корректировать уровень системных часов так, чтобы времена всегда соответствовали, не вызывая внезапные "переходы" в системное время. Если у Вас всегда есть сетевое соединение во время начальной загрузки, можно проигнорировать RTC полностью и использовать ntpdate (который идет с ntpd пакетом) инициализировать системные часы от сервера времени - или локальный сервер на LAN или удаленный сервер в Интернете. Но если у Вас иногда нет сетевого соединения, или если Вам требуется время, чтобы быть точными во время последовательности начальной загрузки, прежде чем сеть будет активна, затем необходимо поддержать время в RTC также.

2
ответ дан 7 December 2019 в 13:21

Другие вопросы по тегам:

Похожие вопросы: