ntpd+adjtimex

Linuxっていうか、パソコンにとって時間って言うのは重要なものらしいです。
Winだけ使ってると実感無いけど、2000年問題とかあったじゃん?
まぁ、やっぱりよくわかんないけど・・・

さらに、問題になるのが玄箱の貧弱な時計。
噂によるとHDLANの時計が規定以上狂う奴を叩き売りにしたのが玄箱とも・・・
まぁ、単にntpdを入れただけじゃ、同期してくれないこともあります。
そのくらい貧弱なんです・・・玄箱の時計(つД;)
「貧弱な時計」
本気で使えないくらい貧弱な時計です。
1日に数分ずれるなんてのは当たり前、室温の違いでずれ方が変わるくらい貧弱です。
まぁ、いろいろ考えてくれる人は居るものでして・・・

やること一覧
	・adjtimexのインストールスクリプトの作成【No.2090】のスレッドすべての記事ntpdのインストール設定ファイル作成NTP/プロバイダ・機関別 - wiki@nothingパソコン側から玄箱NTPを利用する



adjtimexのインストール

まずは、adjtimexのインストール。
adjtimex-1.21.tar.gzを探してくる。
adjtimex.html
で、ユーザーのホームディレクトリにFFFTPで送る。
例のあれ

	$ tar xvfz adjtimex-1.21.tar.gz
	$ cd adjtimex-1.21
	$ ./configure --prefix=/usr
	$ make
	# make install
おまじない
	# strip -p /sbin/adjtimex
「adjtimex」
これ。何するソフトなのかはっきりと理解していないんですよね。
なんか、Linuxの起動時にシステム時計の動作周波数だかなんだか・・・まぁ、時計を微調整するもの・・・
みたいですけど。

スクリプトの作成

で、参考サイトを元にadjtimex用のスクリプトを純正玄箱用に作成/修正する。

	# vi /usr/sbin/adjtick.sh
		...ってviで書くよりも、Winで書いてFFFTPでアップしたほうが楽(を
			修正済みadjtick.sh(adjtick.tar.gz) md5sum crc32:441157D9
			一応置いておきますけど。

	# chmod 700 /usr/sbin/adjtick.sh
「純正玄箱用」
参考サイトのスクリプトはDebian/Vine化した玄箱を対象にしているので、
指定ログファイル(と参照部分)やadjtimexの場所などが違っています。

でも、玄箱用に書かれたスクリプトを純正玄箱用に修正するって、なんか変?

ntpdのインストール

本命のntpdのインストール
ntp-4.2.4p0.tar.gzを探してくる。
ntp.org: Home of the Network Time Protocol
で、ユーザーのホームディレクトリにFFFTPで送る。
例のあれ

	$ tar xvfz ntp-4.2.4p0.tar.gz
	$ cd ntp-4.2.4p0
	$ ./configure --prefix=/usr/local/ntp --enable-kernel-fll-bug
		

option説明など
--enable-kernel-fll-bugよくわからないけど、これをつけないとログにエラーを吐き出す
まぁ、実害は無いけど・・・

$ make $ make check # make install
インストールされるもの
	/usr/local/ntp/bin/
		ntpd ntpdate sntp ntptime tickadj ntp-keygen ntp-wait
		ntpdc ntpq ntptrace
	/usr/local/ntp/man/man1/sntp.1
おまじない
	# cd /usr/local/ntp/bin
	# strip -p *
バイナリの移動
/usr/sbin に ntpd ntpdate sntp ntptime tickadj ntp-keygen ntp-wait を
	# cp -pf ntpd ntpdate sntp ntptime tickadj ntp-keygen ntp-wait /usr/sbin
/usr/bin に ntpdc ntpq ntptrace を
	# cp -pf ntpdc ntpq ntptrace /usr/bin
		

option説明など
-pアクセス権などの情報を保持したままコピーする
-f強制的にコピーを実行する
元ファイルがあった場合、上書きする

後片付け(/usr/localの中を空に戻す)
	# cd
	# rm -r /usr/local/ntp
		

option説明など
-rrm(ファイルの削除)を再帰的に処理する
結果、ファイルの入ったディレクトリも削除可能になる

「ntpd」
玄箱のbinaryにもntpdはついてきているけど、、、
バージョンが古い上に、起動スクリプトによるコントロールがうまくいかないという。だめっぷり。
なんで、binaryのを入れたか?
起動スクリプトが必要だったからで〜す(を

設定ファイル作成

最後の絞め(誤字)、設定ファイル作成です。

ntp.confを作る

	# vi /etc/ntp.conf
		...ってviで書くよりも、Winで書いてFFFTPでアップしたほうが楽(を
		一般的なntp.conf(推奨値)(ntp.tar.gz) md5sum crc32:FA4DB8AE
ntp.driftを作る
	# touch /etc/ntp.drift
起動スクリプトを弄る
	# vi /etc/init.d/ntp
		(追加および変更)
		┃FLAGS="defaults 23"
		┃ntp_server=ntp.jst.mfeed.ad.jp
		┃
		┃test -f /usr/sbin/ntpd || exit 0
		(中略)
		┃	start)
		┃		echo -n "Starting NTP server: ntpd"
		┃		/usr/sbin/adjtick.sh KURO > /dev/nullntpdate -s -b -u $ntp_server > /dev/nullsleep 2
		┃		start-stop-daemon --start --quiet --exec /usr/sbin/ntpd
		(中略)
		┃	restart|force-reload)
		┃		echo -n "Restarting NTP server: ntpd... "
		┃		start-stop-daemon --stop --quiet --exec /usr/sbin/ntpd
		┃		sleep 1ntpdate -s -b -u $ntp_server > /dev/null
		┃		sleep 2
		┃		start-stop-daemon --start --quiet --exec /usr/sbin/ntpd
			注:HG(HGX)の場合はKUROのところをHGにする
			注:ntp_serverには自分から近いNTPサーバーを指定する
			  わからなければ例のまま記入すれば大丈夫(゚ω゚)b
ntpdのテスト(開始|再起動|停止)
	# /etc/init.d/ntp start
	# /etc/init.d/ntp restart
	# /etc/init.d/ntp stop
システム起動時に自動起動するように設定
	# ln -s /etc/init.d/ntp /etc/rc.d/rc2.d/S80ntp
	# ln -s /etc/init.d/ntp /etc/rc.d/rc0.d/K80ntp
	# ln -s /etc/init.d/ntp /etc/rc.d/rc6.d/K80ntp
		注:下の2つはシステムの終了時と再起動時に明示的に終了するための設定
自動起動テスト
	# shutdown -r now
		

option説明など
-r再起動する。停止の場合は -h
now今すぐ実行する。任意の整数を入力することでx分後の再起動を指定

再起動後、psにてntpdが動いているかntpq -pで動作確認
	$ ps ax
		デーモンの稼動状態を知る呪文
	$ ntpq -p
		ntpdの状態を知る呪文
		サーバー名の左側に*とか+が出たら同期した証拠
「一般的な設定」
ntpの参照サーバーに関してはネットワーク的(地図上の距離とは異なることがある)に近いところを指定するほうがいいようです。
第一候補はプロバイダのntp鯖、次にmfeedのntp鯖(今回利用)・・・となります。
stratumが少ないから正確・・・とは限らないのが、なかなか(苦笑)
要は、近くて混んでいない鯖にアクセスしたほうが正確な時間を同期できるってこと。らしい・・・
なので、自分の環境に合わせて書き直してくださいってこと。

まぁ、あまりアクセスするとネットワークの無駄遣いになりますので、
玄箱が同期したら他のPCとかは玄箱を参照するようにしましょう。
玄箱〜PC間はほとんどロス無いだろうし・・・

あぁ、あと、システム起動関係のコマンド(shutdownとかreboot)を実行するには su - の権限(rootの環境変数)が必要になります。
コマンド頭の記号( # )が一緒だから間違えないでね♪

パソコン側から玄箱NTPを利用する(追記)

桜時計などを利用するのが一般的ですが、一つ問題が発生することがあります。
環境によるんですが、桜時計がDNSの順引きができなくて同期できなくなることがあります。

そんなときは、あわてず、

WinNT系(XP以降)なら	C:\WINDOWS\system32\drivers\etc\hosts
WinNT系(2000以前)なら	C:\WINNT\system32\drivers\etc\hosts
Win9x系なら		C:\WINDOWS\hosts
にあるhostsファイルをテキストエディタで開き、以下のように編集します。
	hostsの編集
		(追加)
		┃[玄箱のIP] [任意の文字(ドメインでもIPでも)]
			注:半角スペース区切り
			注:玄箱のIPはローカルのIP(グローバルじゃないよ)
で、桜時計に[任意の文字(ドメインでもIPでも)]を入力すれば問題は回避できます。

まぁ、こんなに深く潜るのは面倒なのでHostsEditなどを使用するといいでしょう。
「hostsファイル」
このファイルに書かれた[任意の文字(ドメインでもIPでも)]でDNSの問い合わせをする場合、無条件に指定されたIPを参照する。
というものです(多分)
ウイルスなんかで使われたので知ってる人は知ってると思いますが・・・
でも、このhostsファイル。応用性がないんです。
192.168.0.222 hogehoge.jp
と記入した場合、ブラウザなどに
hogehoge.jpと入力するとDNSに問い合わせることなく192.168.0.222を参照しますが、
www.hogehoge.jpと入力するとhogehoge.jpとは違うものと判断してDNSにwww.hogehoge.jpのIPの問い合わせを行います。
なので、複数のホストを参照する場合は利用する全てを列記する必要があります(半角スペース区切り)
192.168.0.222 hogehoge.jp www.hogehoge.jp ftp.hogehoge.jp www2.hogehoge.jp ntp.hogehoge.jp
192.168.0.222 hoehoe.jp www.hoehoe.jp web.hogehoge.jp 192.168.0.222 orz
とか。
まぁ、面倒なんですけどね(^^A"


戻るなら押せ!