OpenBlocks200+ssdlinux+NTP(タイムサーバ)

関連サイト:http://www.ntp.org/
       :http://www.jst.mfeed.ad.jp/
       :http://directory.fsf.org/adjtimex.html


###ソースをダウンロード###
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.0.tar.gz
###展開###
tar zxfv ntp-4.2.0.tar.gz
###移動###
cd ntp-4.2.0
###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/ntp-4.2.0
###コンパイル###
make
###インストール###
make install

###すでにntpが入っている場合はリネーム###
mv /usr/sbin/ntpd /usr/sbin/ntpd.org
mv /usr/sbin/ntpq /usr/sbin/ntpq.org
mv /usr/sbin/ntpdc /usr/sbin/ntpdc.org
mv /usr/sbin/ntpdate /usr/sbin/ntpdate.org
mv /usr/sbin/ntpwait /usr/sbin/ntp-wait.org
mv /usr/sbin/ntptime /usr/sbin/ntp-time.org
mv /usr/sbin/ntp-wait /usr/sbin/ntp-wait.org
mv /usr/sbin/ntptrace /usr/sbin/ntptrace.org
mv /usr/sbin/tickadj /usr/sbin/tickadj.org

###新しいバージョンをシンボリックリンク###
ln -s /usr/local/ntp-4.2.0/bin/ntpd /usr/sbin/
ln -s /usr/local/ntp-4.2.0/bin/ntpq /usr/sbin/
ln -s /usr/local/ntp-4.2.0/bin/ntpdc /usr/sbin/
ln -s /usr/local/ntp-4.2.0/bin/ntptime /usr/sbin/
ln -s /usr/local/ntp-4.2.0/bin/ntptrace /usr/sbin/
ln -s /usr/local/ntp-4.2.0/bin/ntpdate /usr/sbin/
ln -s /usr/local/ntp-4.2.0/bin/ntp-wait /usr/sbin/
ln -s /usr/local/ntp-4.2.0/bin/ntp-keygen /usr/sbin/
ln -s /usr/local/ntp-4.2.0/bin/tickadj /usr/sbin/

###【/etc/ntp.conf】を作成###

#プロセスIDの保存先
pidfile /var/run/ntpd.pid
#driftfileの保存先
driftfile /var/log/ntp/ntp.drift
#ログファイルの保存先
logfile /var/log/ntp/ntp.log

#上位サーバ,自プロバイダー・インターネットマルチフィード・リングサーバ
server ntp.excite.co.jp
server ntp.jst.mfeed.ad.jp
server ntp.ring.gr.jp


###空のntp.driftファイルを作成###

touch /var/log/ntp/ntp.drift

現在の時刻とサーバの時刻がかけ離れていると同期ntpdがうまく動かないのでまずntpdateで同期
ntpdate ntp.jst.mfeed.ad.jp

実行してみます。

ntpd

確認してみます。

ntpq -p

remote       refid    st t when poll reach delay offset  jitter
==============================================================================
+ntp00.cdn-japan 202.232.0.1   4 u 245 512  37  0.122 -475.26 289.212
*ntp2.jst.mfeed. 210.173.160.56 2 u 107 512  37  18.215 -200.05 224.231
+ring.nict.go.jp 133.243.230.51 2 u 107 512  37  20.374 -68.522 307.635


remote 同期しようとしているサーバ
refid  remoteが参照しているサーバ
st   層、remoteが何層目のサーバかを示している
t    type (u = unicast, m = multicast, l = local, - = don't know)
when  最後に確認しに行ってから何秒たったか
poll  何秒ごとに確認しに行くか
reach  確認到達回数(なぜか最大255を8進数表記)
ここからなぜかドキュメントがないので感で^^;
delay  ?
offset remoteとlocalhostとの差
jitter 調整のぶれ

再起動後、再び同期されるまではBIOSの時間をセットしてしまいますので
1日1回BIOSの時間を再設定します。

crontab -e

0 4 * * * /sbin/hwclock --systohc


毎朝4時にBIOS時間を再設定。

hwclockが無い人は「clock -w」を試してみてください。

簡単な起動スクリプトを作っておく
【/usr/sbin/ntp】
#!/bin/sh

ARGV="$@"

if [ $ARGV = "start" ] ; then
  ntpd
echo "ntp start"
fi

if [ $ARGV = "stop" ] ; then
  kill `cat /var/run/ntpd.pid`
echo "ntp stop"
fi

if [ $ARGV = "restart" ] ; then
  kill `cat /var/run/ntpd.pid`
  ntpd
echo "ntp restart"
fi


うまくいったと思いきや、ログを見てみると30分に1回ずれが大きくなって

3 Jun 20:34:47 ntpd[300]: synchronisation lost
3 Jun 21:04:56 ntpd[300]: time reset -0.743344 s
3 Jun 21:04:56 ntpd[300]: synchronisation lost
3 Jun 21:35:07 ntpd[300]: time reset -0.766974 s
3 Jun 21:35:07 ntpd[300]: synchronisation lost
3 Jun 22:05:26 ntpd[300]: time reset -0.800932 s
3 Jun 22:05:26 ntpd[300]: synchronisation lost

これだけきっちりずれていると言うことは、OpenBlockS/R自体のクロックがずれているんでしょう^^;

adjtimexと言うソフトでクロックの設定をいぢれるようです。
###ソースをダウンロード###
wget http://www.ibiblio.org/pub/linux/system/admin/time/adjtimex-1.21.tar.gz
###展開###
tar zxfv adjtimex-1.21.tar.gz
###移動###
cd adjtimex-1.21
###Makefile作成###
./configure
###コンパイル###
make
###インストール###
make install

/usr/bin/ginstall -c -g bin -m 755 -o root adjtimex /sbin/adjtimex
/usr/bin/ginstall -c -d -g root -m 755 -o root /usr/local/share/man/man8
/usr/bin/ginstall: invalid group `root'
make: *** [install] Error 1

エラーです、ssdlinuxはBSD系なのでgroopはwheelです。
Makefileを修正します。

vi Makefile
$(INSTALL) -d -g wheel-m 755 -o root $(mandir)
-$(INSTALL) -g wheel -m 644 -o root $(srcdir)/adjtimex.8 \

###もっかいインストール###
make install


###今の状態を調べる###
adjtimex -p
mode: 0
offset: -59551
frequency: -18790294
maxerror: 106985
esterror: 11368
status: 1
time_constant: 2
precision: 1
tolerance: 33554432
tick: 20000
raw time: 1149871588s 284122us = 1149871588.284122
return value = 5

###感で設定###
adjtimex -tick 10000

###offsetが7万から13万というとんでもない値になった###
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp00.cdn-japan NTP.IIJ.Net 4 u 70 64 377 12.585 79033.6 60952.7
ring.nict.go.jp ntp1.jst.mfeed. 3 u 8 64 377 22.136 130348. 58516.7
ntp1.jst.mfeed. ote-ntp1.jpnap. 2 u 67 64 377 16.233 81727.5 59653.0
ntp2.jst.mfeed. fs-monntp2.mfee 2 u 2 64 377 16.975 134828. 57601.3
ntp3.jst.mfeed. ote-ntp1.jpnap. 2 u 66 64 377 17.038 82628.2 61553.3

###急いで戻す###
adjtimex -tick 20000
adjtimex: Invalid argument
for this kernel:
USER_HZ = 100 (nominally 100 ticks per second)
9000 <= tick <= 11000
-33554432 <= frequency <= 33554432

なんと、最大11000までしか設定できません><



上へ
 トップページへ