時計合わせ
コンピュータの時計はかなり狂いやすいものです(このマシン「そらち」では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 を起動します。
# /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