Синхронизация времени 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 и что я хочу, чтобы мои аппаратные часы были синхронизированы?

  • как настроить клиент linux для использования информации ntp, предоставляемой через dhcp?
  • Отображение наиболее точного времени
  • Выход из сервера имен не может быть использован: временный сбой при разрешении имени (-3) 3 июл 07:24:03 ntpdate
  • Использовать шлюз по умолчанию как ntp-сервер
  • NTP симметричный режим
  • Синхронизация NTP ждет некоторое время после загрузки
  • Chrony 506 Не могу поговорить с демоном
  • Сервер RedHat обновляет свое время каждую минуту
  • 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 .

    Interesting Posts

    Уменьшить время обнаружения USB в Linux?

    fdisk зависает на «Синхронизация диска» при изменении размера исходного изображения QEMU

    фиксация / dev / ttyUSB

    Как планировать работу, которая зависит от доступности сети?

    Запуск входа в Telnet очень медленный на статическом IP-адресе, возможно ли rDNS?

    Определение максимального использования памяти для чрезвычайно короткого процесса

    Как сделать процесс невидимым для других пользователей?

    Удаленный ls на нескольких машинах

    Символическая ссылка на папку на другом устройстве

    Скопируйте текст в byobu, когда мышь отключена,

    понять варианты «уведомлять-отправить»,

    Firefox заменяет неправильный запасной шрифт с нормальным весом

    Сетевой ввод-вывод и дисковый ввод-вывод без установки каких-либо или использования сторонних библиотек

    как прикасаться к файлам, таким как report-07/05/13

    Можно ли использовать идентификатор ssh-copy-id, как только пароль на основе пароля отключен?

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