Есть комп с embedded версией debian - voyage linux.
Стал замечать, что сильно спешат часы, по ntp выставляю время, записываю в железку (hwclock -w) и начинаю следить.
Через час системное время (date) на десяток секунд спешит по сравнению с железным (hwclock). Как заставить время по date соответствовать железному времени??
Удаление /etc/adjtime не помогло.
Время спешит
Примерно так:
Устанавливаем ntpdate
[console]aptitude install ntpdate[/console]
Переходим в /etc/cron.hourly
[console]cd /etc/cron.hourly[/console]
">имяфайла" - команда для создания пустого файла
[console]>setdate [/console]
Делаем исполняемым
[console]chmod 755 setdate[/console]
Открываем файл с помощью nano (или другого редактора) и пишем:
#!/bin/sh
ntpdate-debian
Сохраняем файл.
Теперь каждый час компьютер будет синхронизироваться с серверами точного времени. Список серверов лежит в /etc/default/ntpdate.
Так то я уже давно сделал, но это костыль! надо устранить причину из-за которой время спешит.
Для устранения причины нужно брать в руки паяльник и перепаивать на материнской плате кварцевый генератор, от которого системные часы и пляшут.
hwclock показывает нормальное время, date - ускоренное.
ядро корректирует системное время по всей видимости.
root@voyage:~# hwclock ; date
Thu Nov 17 16:45:43 2011 -1.004000 seconds
Thu Nov 17 16:46:48 MSK 2011Для корректировки хода системных часов предназначена adjtimex.
Пётр.
И как с его помощью синхронизировать железные и системные часы?
И как с его помощью синхронизировать железные и системные часы?
man читать пробовали?
-t val, --tick val
Set the number of microseconds that should be added to the system time for each kernel tick interrupt. For a kernel with USER_HZ=100, there
are supposed to be 100 ticks per second, so val should be close to 10000. Increasing val by 1 speeds up the system clock by about 100 ppm, or
8.64 sec/day. tick must be in the range 900000/USER_HZ...1100000/USER_HZ. If val is rejected by the kernel, adjtimex will determine the
acceptable range through trial and error and print it. (After completing the search, it will restore the original value.)
-f newfreq, --frequency newfreq
Set the system clock frequency offset to newfreq. newfreq can be negative or positive, and gives a much finer adjustment than the --tick
switch. When USER_HZ=100, the value is scaled such that newfreq = 65536 speeds up the system clock by about 1 ppm, or .0864 sec/day. Thus,
all of these are about the same:
--tick 9995 --frequency 32768000
--tick 10000 --frequency 6553600
--tick 10001 --frequency 0
--tick 10002 --frequency -6553600
--tick 10005 --frequency -32768000
To see the acceptable range for newfreq, use --print and look at "tolerance", or try an illegal value (e.g. --tick 0).
это что-бы системные часы не спешили. А вот с железными так не получится. Команда hwclock служит для записи системного времени в железное, и обратно.