Программное обеспечение

Clock(8) и Hwclock(8)

Все дистрибутивы Linux содержат или старую clock(8), или новую hwclock(8), но не содержат величины коррекции. Так же обычно в них есть программа adjtimex(8), но она может быть включена в CD, как дополнительное приложение (или вы можете ее скачать по сети). Некоторые дистрибутивы включают в себя графическую программу корректировки часов, работающую под X-windows, но все они предназначены для интерактивного использования, и система все равно установит clock(8) или hwclock(8) для их использования при коррекции в процессе загрузки.

Clock(8) требует, чтобы вы вычислили величину коррекции сами, а hwclock(8) вычисляет ее автоматически (использование другой программы для коррекции часов повлечет за собой несовпадение величин, поэтому предпочтительно использование одной программы, если используется величина коррекции). Если у вас старая система, которая использует clock(8), и вы хотите ее заменить, то найдите hwclock(8) в архиве "util-linux" версии 2.7 или более поздней. Посмотрите инструкцию для получения более подробной информации.

Замечание

Инструкция к hwclock(8) может называться "clock" для обеспечения обратной совместимости, поэтому попробуйте оба имени. Hwclock(8) будет работать с командами для clock(8), но результаты могут различаться, потому что "hwclock -a" - это не совсем то же самое, что и "clock -a", поэтому я рекомендую при установке hwclock заменить все обращения и ссылки к "clock", в вашем загрузочном скрипте, на обращения к hwclock, используя ее команды.

Загрузочные скрипты различаются в разных дистрибутивах, поэтому вам придется поискать то место, где производится коррекция времени. Обычно это производится в /etc/rc.local, /etc/rc.d/rc.sysinit, /etc/rc.d/boot и т.п. Величина коррекции для ЧРВ находится в файле /etc/adjtime.

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

Если ваши ЧРВ ведут себя странно, то, возможно, у вас проблемы с оборудованием. Некоторые чипы ЧРВ содержат литиевую батарейку, которая могла разрядиться, и, поэтому, в некоторых материнских платах есть разъемы для внешнего источника питания (удостоверьтесь в том, что переключатель стоит в правильном положении). Эта же батарея питает CMOS RAM, но часы потребляют больше энергии, и быстрее выходят из строя. Так же странные результаты могут возникнуть из-за проблем с прерываниями.

Adjtimex(8)

Adjtimex(8) позволяет пользователю изменять в ядре переменные времени, и таким образом изменять скорость хода системных часов (для этого вы должны зайти в систему пользователем "root"). Очень удобно сравнивать системные часы с ЧРВ, используя величину коррекции, указанную в /etc/adjtime. Таким образом, очень легко корректировать системные часы, один раз установив величину коррекции ЧРВ. Найдя верное значение коррекции, вы можете добавить строку в ваш загрузочный скрипт, выставляющую правильные значения переменных ядра во время загрузки системы. Так как adjtimex(8) предназначен для работы с clock(8) или hwclock(8), то вам придется немного потрудится для того, чтобы устранить недостаток "каждых 11 минут".

После завершения установки adjtimex(8), вы можете почерпнуть больше информации, набрав команду "man 8 adjtimex" (так же есть инструкция к adjtimex(2), которая, к сожалению, не очень подробна). Можно прочитать файл README, расположенный в /usr/doc/adjtimex-1.3/README (где номер версии, в указанном пути, должен соответствовать версии adjtimex(8)).

Xntpd и ntpd: сетевой протокол времени (Network Time Protocol)

Xntpd (NTPv3) заменено на ntpd (NTPv4); более ранние версии не поддерживаются.

Ntpd является стандартной программой, при помощи которой синхронизируют время в сети. Она поставляется со списком серверов проверки времени. Ее сложнее установить, чем другие программы, описанные здесь, но если вам это интересно, то я бы советовал взглянуть на нее. Домашняя страница ntpd расположена по адресу http://www.eecis.udel.edu/~ntp/. Там есть ссылки на все виды интересующего вас программного обеспечения, связанного с точным временем (включая программы для других ОС). ntpd входит в состав некоторых дистрибутивов.

Сравнительно новая особенность ntpd - это "моментальный режим", спроектированный для машин с ограниченным dial-up доступом к сети .

Ntpd включает в себя драйвера к нескольким видом радио-часов. Большинство радио-часов предназначены для коммерческого использования и стоят тысячи долларов, но есть и несколько дешевых видов (о них мы поговорим позже). NIST поддерживает PDF-файл, в котором находится список производителей радио-часов. Он находится по адресу http://www.boulder.nist.gov/timefreq/links.htm (в самом конце страницы). Так же на сайтах http://www.eecis.udel.edu/ntp/hardware.htm и http://www.eecis.udel.edu/~mills/ntp/refclock.htm можно найти ссылки на этих производителей. Любой из этих списков может устареть :-). Список драйверов ntpd находится на http://www.eecis.udel.edu/ntp/ntp_spool/html/refclock.htm..

В состав Ntpd входят несколько драйверов некоторых служб точного времени для работы через dial-up. Это все - очень дальние (скорее всего, международные) звонки, поэтому сначала подсчитайте во сколько вам это обойдется :-).

Chrony

Xntpd изначально был написан для машин с постоянным соединением с сетевыми радио-часами. Теоретически, она может быть использована машинами, которые соединяются на короткое время, но Richard Curnow не смог заставить программу работать так, как он того хотел, поэтому он написал "chrony" как выход для тех из нас, кто соединяется с сетью при помощи dial-up (для решения этой проблемы существует "моментальное соединение" в ntpd). Текущая версия chrony включает в себя величину коррекции ЧРВ для машин, отключенных от сети на долгое время.

Вы можете получить больше информации, посетив страницу Richard Curnow на http://www.rrbcurnow.freenet.co.uk/chrony/index.html.. Вы можете получить исходные тексты программы не только там, но и на других Linux-сайтах.