Chrony устанавливает системное время, но не синхронизирует RTC
Я настроил Chrony с флагом rtcsync, который ДОЛЖЕН "Включить синхронизацию ядра аппаратных часов реального времени (RTC)", но это не так.
Chrony правильно устанавливает системное время с помощью ntp, но RTC остается неизменным, и я не могу понять, почему это так. Я предполагаю, что ядро не распознает запрос Chrony на синхронизацию RTC, но это только предположение.
Версии
Ядро: 4.19
Хроны: 3.5
ОБНОВИТЬ:
Похоже, что внешний RTC регистрируется после того, как ядро пытается получить к нему доступ, и это предотвращает синхронизацию RTC с синхронизированным системным временем NTP. изdmesg
:
...
[ 6.317060] hctosys: unable to open rtc device (rtc)
...
[ 14.303503] rtc-ds1307 9-0068: registered as rtc0
...
Я сделал временный обходной путь, добавив задание cron, которое обновляет hwclock каждые 10 минут.
1 ответ
Получить rtcsync
работает, вы должны установить RTC_SYSTOHC
а также RTC_SYSTOHC_DEVICE
Ядро правильно, так как это просто просит ядро синхронизировать системное время с RTC. Это происходит примерно каждые 11 минут.
Однако лучший способ сделать это - использовать rtcfile
(а также rtcdevice
) в этом случае хрони будет обрабатывать RTC. Он даже вычислит дрейф RTC, который затем можно исправить, если RTC поддерживает механизм подстройки.