"Новые" версии ядра (начиная с Linux 2.6.26) поддерживают часы TAI, но systemd реализация на Ubuntu (18.04 LTS в моем случае), кажется, игнорирует его.
Как я могу настроить systemd NTP для поддержания смещения TAI, обновленного и корректного?
Разница между UTC и TAI заключается в том, что файл содержит високосные секунды. Смотрите содержание /usr/share/zoneinfo/leap-seconds.list
. systemd не имеет (/ не должен иметь) никакого влияния на это.
Вам необходимо настроить NTP, чтобы включить его (примечание: NTP v4.2.6 изменил способ использования файла скачка). См. Ubuntu NTP manual section 5 и параметр «leapfile». Со страницы руководства для NTP:
leapfile
leapfile
Эта команда загружает файл NIST в течение leapseconds и инициализирует значения leapsecond для следующего времени lepssecond, времени истечения и смещения TAI. Файл можно получить непосредственно с национальных серверов времени NIST, используя ftp в качестве файла ASCII
pub/leap-seconds.list
.Файл leapfile сканируется, когда ntpd обрабатывает директиву leapfile или когда ntp обнаруживает, что файл leapfile изменился. ntpd проверяет один раз в день, чтобы увидеть, изменился ли скачанный файл.
blockquote>Так что это может добавить к
/etc/ntpd.conf
что-то вроде этого:leapfile /usr/share/zoneinfo/leap-seconds.list
См. также справочную страницу для update-leap .
update-leap проверит файл, находящийся в данный момент в локальной системе, и при необходимости обновит файл определения в секунду. Обычно файл находится с помощью директивы leapfile в ntp.conf (5). Однако в командной строке можно указать альтернативное местоположение.
blockquote>Имейте в виду, что это нарушает соответствие POSIX, поскольку вводит времена, подобные "23:59:60".