最終更新: 2006-08-06 (日) 10:11:50
このページをDeliciousに追加 このページをはてなブックマークに追加 このページをlivedoor クリップに追加 このページをYahoo!ブックマークに追加

玄箱の時計合わせの設定

目次

玄箱の内蔵時計について

玄箱の内蔵時計はかなり不正確で、 場合によっては1日に10分近くのズレが生じる。 時計の精度がこれほどまでに良くないのは、以下の2つが原因である。

  • クロック周りの回路の設計ミス
  • カーネルが行うクロックの補正のミス

回路のミスは 1ヶ所ハンダづけすれば直る らしいが、カーネルもそれに併せて修正しなければならず、 手間の面からいってあまりオススメしない。 代わりに以下のような作業を行うことで、時計の精度を改善させる。

  • カーネルのクロック補正の処理を修正
  • adjtimex コマンドを用いてカーネルクロックを微調整
  • NTP クライアントを定期的に実行 *1

カーネルの修正

Genbako kernel collection さんが配布しているカーネルは、クロック補正の処理が修正されている。 そのため、 カーネルのバージョンアップ を行うことで時計の精度はかなり良くなり、 1日の時計のズレが 1〜2 秒というレベルにまで改善される。

adjtimex のインストール

以下のパッケージをインストール。

# aptitude install adjtimex
# aptitude install ntpdate

adjtimex のインストール時の質問には、以下のように答える。

Should adjtimex be run at installation and at every startup?
Yes
Should adjtimexconfig be run at installation time?
No

adjtimex のパラメータの設定を、以下のような手順で行う。

  1. 以下のコマンドを実行して1時間放置する。 2回目に表示される offset の値が、1時間で時計がズレた分の補正値を示している。
    # ntpdate -b ntp1.jst.mfeed.ad.jp; sleep 3600; ntpdate -b ntp1.jst.mfeed.ad.jp
  2. これを3回ほど繰り返し、offset の平均値を求める *2
  3. 以下の計算式により、FREQ の適正値を求める *3
    FREQ = 6553600 × (offset の平均値) × 24 ÷ 8.64
  4. 求めた FREQ の値を /etc/default/adjtimex に設定。

以下のコマンドを実行し、設定を有効にする。

# /etc/init.d/adjtimex restart

クロックの周波数は温度によっても変化するようなので、調整にも限界はあるが、 それでも1日の時計のズレを 0.1 秒以内くらいにはできる。

NTP クライアントの設定

/etc/default/ntpdate の NTPSERVERS の設定を以下のように変更し、 起動時に /etc/init.d/ntpdate スクリプトで用いられる NTP サーバを指定。

NTPSERVERS="ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp"

以下のような /etc/cron.daily/ntpdate を作成。

#!/bin/sh

test -x /usr/sbin/ntpdate || exit 0
/usr/sbin/ntpdate -s ntp.jst.mfeed.ad.jp

/etc/cron.daily/ntpdate に実行属性を与える。

# chmod 755 /etc/cron.daily/ntpdate

参考ページ

*1 玄箱を常時稼動させるのなら、NTP サーバを動かす方が良いかもしれない。
*2 1時間の測定だと値が結構ブレるので、正確さを求めるのなら、cron で ntpdate を毎日実行した時の offset を計算に用いる方が良い。
*3 FREQ の値を 6553600 増やすと、時計が 8.64 秒/日 早く進む、という関係がある。

(Counter:1, Today:1, Yesterday:0)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   最終更新のRSS