Синхронизация времени RTC не работает (CONFIG_RTC_SYSTOHC)

У меня есть опция CONFIG_RTC_SYSTOHC включенная в моем ядре:

 Device Drivers ---> [*] Real Time Clock ---> [*] Set the RTC time based on NTP synchronization 

Помощь говорит:

 CONFIG_RTC_SYSTOHC: If you say yes here, the system time (wall clock) will be stored in the RTC specified by RTC_HCTOSYS_DEVICE approximately every 11 minutes if userspace reports synchronized NTP status. 

Однако мои аппаратные часы не синхронизируются. У меня RTC_HCTOSYS_DEVICE установлен правильно:

 CONFIG_RTC_HCTOSYS_DEVICE="rtc0" 

В приведенной выше ссылке говорится, что синхронизация работает, если «если пользовательское пространство сообщает о состоянии синхронизации NTP». Что это значит? Я использую ntpdate чтобы регулярно синхронизировать свое время (каждые 4 часа) с помощью cron.

Как я могу сообщить своей системе, что я синхронизирован ntp и что я хочу, чтобы мои аппаратные часы были синхронизированы?

3 Solutions collect form web for “Синхронизация времени RTC не работает (CONFIG_RTC_SYSTOHC)”

Запуск ntpdate из cronjob будет настраивать системное время каждый раз, когда он запускается, но это не означает, что ваша система «синхронизирована NTP» (часы могут дрейфовать между периодическими синхронизациями), и ядро ​​не будет автоматически синхронизировать RTC.

Есть ли какая-то конкретная причина, по которой вы используете ntpdate из cronjob, а не запустите ntpd ? ntpd будет хранить гораздо более точное время, имеет большую проверку ошибок (так что ошибочный сервер времени не вызовет хаоса для вас), и дисциплинирует тактовую частоту системы, чтобы компенсировать дрейф осциллятора.

Кроме того, он будет сообщать о «синхронизированном статусе NTP» в ядро, которое затем будет периодически устанавливать hwclock.

На странице man ntpdate :

ntpdate можно запускать вручную по мере необходимости, чтобы установить часы хоста, или его можно запустить из сценария запуска хоста, чтобы установить часы во время загрузки. Это полезно в некоторых случаях для установки часов перед запуском NTP-демона ntpd. Также можно запустить ntpdate из cron-скрипта. Однако важно отметить, что ntpdate с надуманными cron-скриптами не заменяет демона NTP, который использует сложные алгоритмы, чтобы максимизировать точность и надежность при минимизации использования ресурсов. Наконец, поскольку ntpdate не дисциплинирует тактовую частоту хоста, как и ntpd, точность с использованием ntpdate ограничена.

В общем, лучше использовать ntpd чтобы синхронизировать часы, если у вас нет особых причин (например, удаленная или изолированная система, где передача данных очень дорога).

Поскольку вы уже ввели ntp обновления времени через ntpupdate почему бы не просто добавить аппаратную синхронизацию к этому cron (или сделать второй)? Я использовал тот же самый метод в некоторых действительно действительно старых RHEL 3 и 4 ящиках моей компании, чтобы синхронизировать их часы.

 0 */4 * * * ntpdate mytimeserver.com && ( hwclock --adjust; hwclock -w ) 

Этот cron обновит аппаратные часы до времени системы, если ntpdate будет успешным. Дополнительная информация о hwclock commands .

Добавлено примечание:

mytimeserver.com для меня – это внутренняя версия с несколькими серверами времени для избыточности. Если у вас нет доступа к одной и той же вещи, вы должны изменить ntp сервер на разные пулы ntp, чтобы каждая система не зависела от одного и только одного сервера ntp.

Сервер 1:

 0 */4 * * * ntpdate 0.pool.ntp.org && ( hwclock --adjust; hwclock -w ) 

Сервер 2:

 0 */4 * * * ntpdate 1.pool.ntp.org && ( hwclock --adjust; hwclock -w ) 

ntpdate не STA_UNSYNC флаг STA_UNSYNC когда он корректирует системное время. Таким образом, ядро ​​считает, что системное время недействительно и не обновляет RTC. Он не очищает STA_UNSYNC потому что он использует adjtime() для установки системного времени вместо adjtimex() .

Чтобы использовать функцию CONFIG_RTC_SYSTOHC , вы должны использовать инструмент, который очищает флаг STA_UNSYNC , т. STA_UNSYNC .

Может быть, проблема должна быть сообщена разработчикам ntpdate .

  • Каковы возможные причины неустойчивой синхронизации NTP?
  • Разрешение имени домена в моих IP-таблицах
  • NTP с изолированными сетями
  • Разница между хронидом и ntpd
  • Настройка клиента ntp со встроенным устройством
  • NTP не включен в соответствии с TimeDateCTL - CentOS 7
  • Инструмент NTP для отображения отклонения от определенного сервера
  • NTP синхронизируется правильно, но не обновляет время?
  • Замена sntp для аргумента -P (подсказка)
  • Выход из сервера имен не может быть использован: временный сбой при разрешении имени (-3) 3 июл 07:24:03 ntpdate
  • OpenBSD 6.0 ntpctl говорит «синхронизированный синхронизированный», но составляет ~ 26 секунд позади
  • Зачем отключать xntpd?
  • Interesting Posts

    Создание нового соединения на интерфейсе, не используемом до использования nmcli

    Загрузка изображения ядра

    grep, чтобы найти экземпляры «Foo», где «Bar» не отображается в пределах 10 строк

    GNU: Отложенные очереди заданий

    Как добавить несколько сетевых блоков в командной строке?

    Почему существует отдельный репозиторий пакетов для обновлений безопасности Debian?

    Заменить вхождения символов в имена файлов

    Как открыть неизвестный тип файловой системы с диска

    Найти или создать конфигурацию ядра двоичного кода ядра

    Что происходит, когда несколько процессов пытаются mv одни и те же файлы между двумя различными файловыми системами

    Как ядро ​​знает, какой файловый дескриптор записывать данные после fork () на параллельном сервере?

    Установить видимые каталоги для доступа SFTP?

    Что делает ТАБ (ничего не набирается)

    Переслать каждый порт в зависимости от домена.

    ssh из порта 80 в порт 22?

    Linux и Unix - лучшая ОС в мире.