你的系统实际上有二个时钟-- 一个是当系统关机继续使用电池电力维持计时功能的 ``real time clock'' (也就是所谓的 ``CMOS 时钟'', ``硬件时钟'', 或 ``RTC'') 而另一个是 ``kernel clock'' (有时称为 ``软件时钟'' 或 ``系统时钟'') 系统时钟的跳动是以计时器的中断信号为基准并在开机时从CMOS 时钟处载入初始值. 这二个时钟有不同的时间偏差率, 所以二个时钟上的时间会逐渐地产生偏差, 而且也会与 ``真正的''时间产生偏差.
在 xntpd
文件中所述及的 ``the clock'' 就是指 ``kernel clock''.
当你执行 xntpd
或 timed
程序时
(或是其他使用到 adjtimex
系统呼叫的程序)
linux 作业系统会假定系统时钟比 CMOS 时钟准确,
而且会在开机后每隔 11 分钟重新设定一次 CMOS 时间 (一直到重开机为止).
这意味著 ``clock
'' 程序不再知道上一次重新设定 CMOS 时钟的正确时间,
所以你不可以使用文档 /etc/adjtime
中的校正因子.
你可以在开机执行档上使用 ntpdate
程序
以便在初次执行 xntpd
程序之前与校时伺服器对时.
如果你在开机的时候一直无法连上准确的校时源, 这可能会让你面临到一些困境--
实际上 xntpd
不是被设计来在那种情况之下使用的.
Xntpd
包含了许多无线电时钟的驱动程序,
并且也可以被设定在一定的周期内拨电话至 NIST 的电话拨接电脑校时服务
(当你设定好电话拨接的周期之后最好先计算一下电话帐单的花费).
在与其他的校时源失去联络一段时间之后这个方式也能提供系统时钟一个校正因子.
大部分的无线电时钟大约要花费 $3-4K,
不过你可以采用较便宜的 ``gadget box
'' 方案
(实际上是一个 300 baud 的数据机) 他被放在你的电脑与一台短波无线电接收器之间
频道调至 Canada 的 CHU 校时无线电台
(参见网址
ftp://ftp.udel.edu/pub/ntp/gadget.tar.Z).
而Heathkit WWV 接收器 (``最准确的时钟'')
仍然买的到 (但不是一组套件), 大约要花费 $4-500.
目前GPS 的信号里仍然包含有校时的信息,
而且部分的 GPS 接收器可以接上电脑的串列埠.
在最近的未来这可能会成为低价位的解决方案.
理论上, 一般人可以自己写程序来使用 NIST 的电话拨接电脑校时服务以便自动
计算 CMOS 时钟与系统时钟的偏差率.
虽然我不知道是否有单独的程序能够达到这个目的,
但是大部分的程序码应该可以借用自 xntpd
程序集.