Vine Linux 顛末記 - 時計合わせ

  1. マシン構成
  2. インストール
  3. インストール後のあれこれ(未稿)
  4. カーネルのアップデート
  5. 時計合わせ

    1. 概要
    2. 設定
    3. ntpd の起動と動作確認
    4. その他の設定
    5. 検証中事項

概要

コンピュータの時計はかなり狂いやすいものです(このマシン「そらち」では24時間で 2, 3秒ずれます)。ネットワークに繋がってなく他のマシンとのファイルのやり取りも全くない、「完全にスタンドアロン」なマシンなら多少ずれていても対して問題はありませんが、一般的にはある程度正確な時間に合わせておく必要があります。少なくとも、同じネットワーク内のマシンとは同じ時間にしておきたいものです。

ここでは ntpd を用いた時刻合わせの方法について記します。Vine Linux では標準でインストールされていると思います(未確認)。インストールされていない場合は CD か FTP サイトから入手してください。

例によって以下の作業は全て root で行います。

なお、この文書中では「らしい」とか「多分」という語が多用されていますが、これは単に筆者の自信のなさを表すものです。Google で linux ntpd を検索するなどするとより詳しいサイトが見つかるかと思います。

設定

ntpd の設定ファイルは /etc/ntp.conf です。

# vi /etc/ntp.conf
restrict default noquery notrust nomodify
restrict 127.0.0.1
restrict 192.168.10.0 mask 255.255.255.0
restrict 210.173.160.0 mask 255.255.255.0

fudge 127.127.1.0 stratum 3
#server 127.127.1.0
server 210.173.160.27
server 210.173.160.57
server 210.173.160.87

driftfile /etc/ntp.drift
logfile /var/log/ntp.log

恥ずかしながら、設定に関しては私はあまり理解していません。とりあえずここでは、同期させる NTP サーバとして Experimental NTP Servers (Public Stratum 2) の3台のサーバを server で指定しています。ISP によっては自前の NTP サーバを用意しているところもあるようですので、その場合はそのサーバを指定したほうがいいでしょう(ネットワーク的に近いでしょうから)。また、restrict で通信を許可する(あるいは拒否する)アドレスを指定します。

ntpd の起動と動作確認

設定ファイルを保存したのち、ntpd を起動します。

# /etc/rc.d/init.d/ntpd start

ntpd の動作状況を調べる(多分)には /usr/sbin/ntpq コマンドを使います。

# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp1.jst.mfeed. mf-isdn4.mfeed.  2 u   46   64  373  705.098  485.381 1345.00
 ntp2.jst.mfeed. mf-isdn1.mfeed.  2 u   49   64  377  863.873  404.544 1236.39
 ntp3.jst.mfeed. mf-isdn4.mfeed.  2 u   54   64  377  898.707  388.005 1224.06

しばらく(5-10 分くらい?)してから再び実行するとサーバ名の前に * や + などの印がつきます。

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp1.jst.mfeed. mf-isdn4.mfeed.  2 u   17   64  337  1506.35  152.329 339.900
*ntp2.jst.mfeed. mf-isdn1.mfeed.  2 u   20   64  377  1370.73  184.510 264.116
+ntp3.jst.mfeed. mf-isdn4.mfeed.  2 u   23   64  377  1157.47  261.851 160.605

* がついているサーバと同期しているらしいです。

# /usr/sbin/ntpq -c as
ind assID status  conf reach auth condition  last_event cnt
===========================================================
  1 61956  9054   yes   yes  none    reject   reachable  5
  2 61957  9654   yes   yes  none  sys.peer   reachable  5
  3 61958  9454   yes   yes  none  candidat   reachable  5

condition が reject でなければ問題ありません(ウチのネットワークは時間帯によってはアレなので‥‥)。

その他の設定

これで「システムクロック」は合わせることができたので、これを「ハードウェアクロック」(CMOS クロック)に設定します。

# hwclock --systohc

--systohc オプションは、システムクロックの時間をハードウェアクロックに設定します(余談ですが、jman hwclock には --systohc オプションの説明としてシステム・クロックをハードウェア・クロックに合わせる。と書かれているので微妙に混乱します‥‥)。

これは cron に設定しておくのが便利でしょう。

# crontab -u root -e
0 17 * * * (hwclock --adjust; hwclock --systohc)

これで毎日17時にハードウェアクロックが設定されます。--adjust オプションや、これを --systohc オプションで時計合わせをする前に行なう事については hwclock(8) を見てください‥‥。

ntpd をシステム起動時に開始するように設定するには Webmin を使うのが便利でしょう(「システム」>「起動及びシャットダウン」)。

検証中事項

システムを再起動すると ntp.conf が書き換えられてしまいます。おそらく起動時に開始されるデーモンのどれかのせいだと思うのですが未確認です(dhcpd が書き換えるという記述もありますが、私は dhcpd は開始させていません)。

というわけで、とりあえず ntp.conf.bak を作成して /etc/rc.d/rc.local に以下のスクリプトを追加して対応しています。

cat /etc/ntp.conf.bak > /etc/ntp.conf
/etc/rc.d/init.d/ntpd condrestart

もりば <rinrin@funifuni.net>

Valid XHTML 1.1! Valid CSS!