vsntp/README.zh-tw
2021-02-06 08:59:23 +08:00

83 lines
4.6 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

vsntp 讀我說明
請參閱 INSTALL 檔案,以取得安裝執行的相關說明。
想知道 vsntp 的最新消息,下載最新版本,請參閱:
http://vsntp.sourceforge.net/
http://sourceforge.net/projects/vsntp
http://www.imacat.idv.tw/tech/vsntp.html
ftp://ftp.imacat.idv.tw/pub/vsntp/
作者的 PGP Public Key 可在下列網址下載:
http://www.imacat.idv.tw/me/pgpkey.txt
簡介:
vsntp 是 SNTP 客戶端服務程式,專為時間不正常的系統設計。 vsntp
的意思是 SNTP for Virtual PC ,原先是我為了在 Connectix Virtual PC
上跑 GNU/Linux 系統而寫。 vsntp 依 RFC 1769 SNTP 標準,連線到 SNTP 伺
服器上的 UDP 埠 123 以校時。
若沒有裝 Virtual PC Additions Virtual PC 的時間很亂。 Virtual
PC 的 RTC Real Time Clock, 或稱 CMOS 時鐘、硬體時鐘)是用軟體模擬
出來的,往往根本沒有在跑。 GNU/Linux 核心勉強維持一個大概的時間。正常
情況下,平均一分鐘會快四秒,一天快一個半小時。這實在是太誇張了,用眼
睛都分辨得出時鐘速度有問題。
David L. Mills 的 ntp 校時伺服器在此完全失靈。 ntp 先測出系統時間
速度偏移,用 adjtimex() 來調整系統時鐘速度,用這個方法漸近式調整,系
統本身和相關應用程式比較不會出問題。這個方法有一個前提:時間速度本身
恆定不變。可是 Virtual PC 不講這一套。 Virtual PC 的時間純粹是軟體模
擬出來的,受主電腦負荷與其它因素影響,時快時慢。沒有固定的時間速度,
也就沒有時間速度偏移值。怎麼測都是枉然。
David L. Mills 的 ntp 程式裏,附了一 sntp 客戶端程式,可以放在
crontab 裏定期對時,對時完結束程式。問題是, crontab 最小單位為分,
頂多一分鐘跑一次,可是 Virtual PC 的時間一分鐘慢四秒。一分鐘退回四秒
,大多數應用程式都受不了。一分鐘跑一次,對系統的負荷也很大。
vsntp 是為此而寫的。它以 daemon 來執行,以免每次對時都對系統造成
嚴重負荷。它用 settimeofday() 來調整時間,校時頻率可任意設定,儘可能
把系統時鐘誤差,維持在一秒以內。
vsntp 的做法有下列缺陷:頻繁校時時,網路流量很大,頻寬的負荷不小
,對對方 NTP 伺服器也會造成很大的負擔。妳最好自己在區網內,架一台自
己的 NTP 伺服器。同時因 settimeofday() 強制時間設定太頻繁了,系統的
高精度計時功能會出問題。
  vsntp 用 sleep() 呼叫來定時校時。在某些系統上 sleep() 可能不大正
常。若 vsntp 校時一段時間後就不動了,系統上的 sleep() 呼叫不正常時,
可以改用 -a 選項換成 alarm() 計時器試看看。
  若碰到任何問題,請參閱妳系統的上的 syslog 記錄。 vsntp 把詳細偵錯
訊息,都以 LOG_DEBUG 層次, LOG_DAEMON 類別記錄到 syslog 中。妳可以在
/etc/syslog.conf 中加上這一行,寫入偵錯訊息:
daemon.debug /var/log/debug
並查閱 /var/log/debug 中的偵錯訊息。記得在偵錯結束後關閉。偵錯訊息流
量很大,很快就會塞爆硬碟。就算沒塞爆,大量資料寫入硬碟,對系統效能的
影響也很大。
   vsntp 原是為 GNU/Linux 系統上執行而寫。 vsntp 用的都是 POSIX 相
容的系統呼叫,在 POSIX 相容系統上應該都可以執行。不過目前為止我只有
Cygwin ,只在 Cygwin 上測試過。 Cygwin 上可以執行。若妳可以成功在其它
系統上執行,請來信告知。若需要任何原始程式的修正,亦請一併附給我。我
知道因為 PID 檔路徑處理方式,所以無法在 MSWin32 上執行。
  vsntp 只在 GNU/Linux 系統上測試執行過。 vsntp 用的都是 POSIX 相容
的系統呼叫,在 POSIX 相容系統上應該都可以執行。不過我沒有其它系統,無
從測試起。若妳可以成功在其它系統上執行,請來信告知。若需要任何原始程式
的修正,亦請一併附給我。我知道因為 PID 檔路徑處理方式,所以無法在
MSWin32 上執行。但在 Cygwin 上說不定可以執行。
  若妳可以在其它虛擬機器上執行 vsntp ,例如 VMWare ,請來信告知。
  基本上,若妳在用 vsntp ,請一定要來信告訴我。我很想知道 vsntp 是
不是真的有人在用,對世界和平有幫助 *^_^* 或只是自己寫好玩的而已。 :p
vsntp 是我寫的第一個 daemon ,我寫的第一個 socket 程式,也是我第
一個公開發行的 C 程式。請多多指教~ ^_*'