外部のタイムサーバー( NTP サーバー)を見に行かなくてもローカルで時刻が合わせられるように、 NAS の QNAP にタイムサーバーをたてることにしました。初心者にはめちゃくちゃ大変だったので、備忘録として書き残しておきます。 QNAP の NAS の機種は TS-212 でファームウェアは 3.8.3 です。
目次
Optware IPKG のインストール
QNAP の NAS に Optware IPKG をインストールすることで、 Linux とだいたい同じようにいろいろなパッケージを追加することができます。
→ uittie::blog : QNAP を使い倒すなら Optware IPKG をインストールしようという話
管理画面のアプリケーションの QPKG Center (App Center) からインストール。「利用可能」のタブのところにありました。
QNAP に接続
ここからはコマンドでの操作です。まず Telnet で QNAP に接続します。ローカルの除かれない環境からなので Telnet でつないでいますが、普通は SSH でつないでくださいね。
$ telnet 192.168.xx.x 13131
Trying 192.168.xx.x...
Connected to 192.168.xx.x.
Escape character is '^]'.
XXXXX login: 管理者名
Password: パスワード
NTP サーバーのパッケージをインストール
NTP サーバーのパッケージをインストールします。
→ discypus : PC/QNAP TurboNAS
パッケージを探す
# ipkg list | grep ntp
nget - 0.27.1-5 - nget is a command line nntp file grabber.
ntp - 4.2.6.2-2 - A time synchronization daemon
ntpclient - 2007_365-1 - Using RFC1305 (NTP), retrieves a remote date and time
パッケージをインストールする
# ipkg install ntp
Installing ntp (4.2.6.2-2) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/ntp_4.2.6.2-2_arm.ipk
Installing psmisc (22.17-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/psmisc_22.17-1_arm.ipk
Configuring ntp
/opt/etc/init.d/S77ntp: line 3: /opt/bin/pidof: No such file or directory
Configuring psmisc
update-alternatives: Linking //opt/bin/killall to /opt/bin/psmisc-killall
update-alternatives: Linking //opt/bin/pidof to /opt/bin/psmisc-killall
Successfully terminated.
インストールしたパッケージのファイル調べる
# ipkg files ntp
Package ntp (4.2.6.2-2) is installed on root and has the following files:
/opt/bin/tickadj
/opt/bin/ntptime
/opt/bin/ntpdc
/opt/etc/ntp/ntp.conf
/opt/bin/ntpdate
/opt/bin/ntpd
/opt/bin/ntpq
/opt/etc/init.d/S77ntp
# cat /opt/etc/init.d/S77ntp
#!/bin/sh
if [ -n "`/opt/bin/pidof ntpd`" ]; then
/opt/bin/killall ntpd 2>/dev/null
fi
if [ ! -d /var/spool/ntp ] ; then
mkdir -p /var/spool/ntp
fi
/opt/bin/ntpd -c /opt/etc/ntp/ntp.conf -f /var/spool/ntp/ntp.drift -s /var/spool/ntp -k /opt/etc/ntp -l /var/spool/ntp/ntp.log
ログファイル
# ls -l /var/spool/ntp/ntp.log
-rw-r--r-- 1 admin administ 471 Apr 15 13:08 /var/spool/ntp/ntp.log
NTP サーバーの設定
インストールしたファイルで一覧にあった「 /opt/etc/ntp/ntp.conf 」が初期設定ファイルなので、これを vi エディタで開いて編集します。
→ Linux 講座:自前でタイムサーバを立ち上げる
vi エディタの使い方は下記を参照。
→UNIXコマンド概説:viエディタの使い方
タイムサーバーは下記から選びました。
→ Yoshi ’ s Memo : NTP サーバ一覧
# vi /opt/etc/ntp/ntp.conf
vi エディタでタイムサーバーを設定する
#Default conf file for ntpd
driftfile /var/spool/ntp/ntp.drift
server ntp.tut.ac.jp
server eagle.center.osakafu-u.ac.jp
server ntp.nict.jp
これを保存して終了。
タイムサーバーの起動
設定ファイルを作成したら、 ntpd を起動する。
# /opt/bin/ntpd
これで NTP サーバーが起動しました。
同期のチェック
# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*felixx.tsn.or.j 133.243.238.163 2 u 75 256 377 24.370 -12.268 3.955
+sylph.white-voi 203.178.138.38 3 u 43 256 377 20.351 -7.430 3.986
+v157-7-152-213. 210.173.160.87 3 u 57 256 377 15.323 -8.152 1.007
これで各マシンにて「 192.168.xx.x 」をタイムサーバーに設定すれば、わざわざ外に見に行かずとも LAN 内で完結します。
QNAP 再起動時に NTP サーバーを自動起動する
これまでやってきた設定では、 QNAP を再起動させたときに、 NTP サーバーが起動しません。 QPKG Center (App Center) にダミーのパッケージを追加することで、自動起動させます。( 3.8.2 以降のやり方です。)
→ QNAPedia Community Wiki : http://wiki.qnap.com/wiki/Running_Your_Own_Application_at_Startup
ダミーパッケージを追加
QPKG Center (App Center) にダミーパッケージを追加するため、 vi エディタで開いて qpkg.conf に書き加えます。
# vi /etc/config/qpkg.conf
以下を「 qpkg.conf 」の最後に追加します。
[autorun]
Name = autorun
Version = 0.1
Author = admin
Date = 2014-04-16
Shell = /share/MD0_DATA/.qpkg/autorun/autorun.sh
Install_Path = /share/MD0_DATA/.qpkg/autorun
QPKG_File = autorun.qpkg
Enable = TRUE
この状態で QPKG Center (App Center) を読み込み直すと「 autorun 」というダミーパッケージが追加されています。
ダミーパッケージの中身に Shell スクリプトを書いて実行権限をつける
ダミーパッケージのディレクトリを作成します。
# mkdir /share/HDA_DATA/.qpkg/autorun
RAID を組んでいない単一ドライブ 2 つなので「 HDA_DATA 」ですが、普通は「 MD0_DATA 」のようです。
「 autorun.sh 」にスクリプトを書きます。必ず「 #!/bin/sh 」で始めること。
# vi /share/HDA_DATA/.qpkg/autorun/autorun.sh
#!/bin/sh
/opt/bin/ntpd > /dev/console
実行権限をつけます。
# chmod +x /share/HDA_DATA/.qpkg/autorun/autorun.sh
QNAP を再起動させて NTP サーバーが自動起動したか確認
QNAP を管理画面から再起動させて、プロセスを確認します。管理画面にログインできるようになってから Telnet や SSH で接続して行うこと。
# ps -ax
以下のように「 /opt/bin/ntpd 」がプロセスにあれば自動起動は成功しています。
6261 admin 1028 S /opt/bin/ntpd
以上で NTP サーバーのインストールは完了しました。
E437: terminal capability “ cm ” required
vi エディタを使っていて「 E437: terminal capability “ cm ” required 」というエラーが出る場合は $TERM の値を確認して、「 xterm 」と設定すれば、エラーが出なくなるようです。
→ QNAP NAS Community Forum : E437: terminal capability “ cm ” required
値を確認する
# echo $TERM
vt102
値を設定する
# export TERM=xterm