你的系統實際上有二個時鐘-- 一個是當系統關機繼續使用電池電力維持計時功能的 ``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
程式集.