[Comm] [JT] синхронизация времени

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вс Ноя 24 17:11:33 MSK 2002


On Sun, 24 Nov 2002 19:21:39 +0600
"Andrei A. Lomov" <lomov на math.nsc.ru> wrote:

> Значит, оно (ntpd) само разберётся, какой у меня пояс и подкрутит пружинки... в BIOS'е?
> Что бывает, скажем, когда я кручу настройки у каких-нибудь X-часов, 
> часы запоминают сдвиг относительно BIOS'а?

В файле /etc/sysconfig/clock содержится, среди прочего, настройка,
определяющая, как хранится время в микросхеме RTC. Если написано
UTC=true - время хранится в GMT (и тогда не надо переводить часы при
переходе на летнее/зимнее время, но Window так работать не умеет). Если
UTC=false - в RTC хранится локальное время. Там же рядом лежит и
настройка часового пояса, но на самом деле пояс берется не оттуда, а из
/etc/localtime (это должна быть копия соответствующего файла из
/usr/share/zoneinfo).

При загрузке системы выполняется /etc/rc.d/init.d/clock start; при этом
читается время из RTС и устанавливаются часы ядра; здесь учитывается
установка переменной UTC в файле /etc/sysconfig/clock. При выключении
выполняется /etc/rc.d/init.c/clock stop; при этом время из часов ядра
переписывается в RTC (кстати, это не всегда правильно - пойду вешать
багу).

Кроме того, если ntpd постоянно работает и часы синхронизированы с
внешним источником, ядро приблизительно каждые 11 минут корректирует
время в RTC по часам ядра. При этом временная зона не используется -
меняются только поля секунд и, возможно, минут; предполагается, что
смещение временной зоны относительно UTC кратно 30 минутам. Т.е. этот
режим справляется с погрешностями до нескольких минут - грубые
несоответствия надо устранять вручную (на самом деле при подобных
ошибках даже ntpd не запустится).

Команда date --set устанавливает только часы ядра и не влияет на
состояние RTC (но с текущей версией initscripts при перезагрузке время
все равно перепишется в RTC). Команда hwclock работает с RTC, а также
может устанавливать часы ядра по RTC (--hctosys) или наоборот, RTC по
часам ядра (--systohc); подробнее см. man hwclock.

Еще нужно обратить внимание на файл /etc/adjtime (описан в том же man
hwclock). В этот файл записываются коэффициенты коррекции для RTC,
причем он обновляется при каждой установке времени в RTC через hwclock.
Иногда бывает, что в нем оказываются какие-то странные значения (после
кручения времени туда-сюда) - в результате часы либо дико спешат, либо
столь же дико отстают. В таком случае проще всего удалить этот файл (он
автоматически создастся заново с нулевыми значениями).



Подробная информация о списке рассылки community