ネットワークによる時計補正

少し前にSAMA5D3 Xplainedの設定を変えてWiFiにアクセスできるようにしました。そうなるといろいろとネットでの利用が広がります。特にこのボードは時計用のバッテリ・バックアップを持っていないため、ネットワークによる時間補正ができると便利です。ということで、ntpdを使った時計の設定をおこないました。

ntpdのインストール

SAMA5D3 Xplained (以下SAX)で私が使っているイメージは atmel-demo-imageです。これにはntpdが入っていません。そこで、conf/local.confに次の一行を追加してntp機能を取り込みました。

IMAGE_INSTALL_append = "  ntp"

毎度毎度機能追加の度にbitbakeでイメージを作り直すのも面倒ですので、そろそろパッケージ管理機能を覚えるべきですが、今のところはこれでしのいでいます。

さて、ntpを追加したイメージを作ってSAXに焼き終わると、起動時にntpdが動作している状態になります。しかしながら、デフォルトの状態ではntpdは時刻サーバーとして自分自身を参照しているため、正しい時刻を得ることはできません。

時刻サーバーの登録

時刻修正用のNTPサーバーは、MFEEDサービスが一般向けに提供していますのでこれを利用します。

  • ntp1.jst.mfeed.ad.jp (210.173.160.27)
  • ntp2.jst.mfeed.ad.jp (210.173.160.57)
  • ntp3.jst.mfeed.ad.jp (210.173.160.87)

これを、/etc/ntp.confに記述します。

# This is the most basic ntp configuration file
# The driftfile must remain in a place specific to this
# machine – it records the machine specific clock error
driftfile /var/lib/ntp/drift
# This should be a server that is close (in IP terms)
# to the machine.  Add other servers as required.
# Unless you un-comment the line below ntpd will sync
# only against the local system clock.
#

server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp

#
# Using local hardware clock as fallback
# Disable this when using ntpd -q -g -x as ntpdate or it will sync to itself

# Defining a default security setting
restrict default

元からある設定は削ってしまいましたが、unixの作法的にはコメントアウトして残すもののようです。

タイムゾーンの設定

SAXにインストールしているatmel-demo-imageのタイムゾーンはデフォルトではUTCです。そこでタイムゾーンをJSTに変更するために以下のコマンドを実行してください。

ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

タイムゾーンの設定に関しては異説が多く、この方法はダメだとする意見もあります。正直はっきりとした正しくて簡単な方法は無いように思えます。

次にTZ環境変数を設定します。/etc/login.defs ファイルを開いて、コメントアウトされているENV_TZを以下のように設定してください。

ENV_TZ          TZ=JST-9
#ENV_TZ         /etc/tzname

JST-9は、UTCから9時間早いJST時間帯を宣言しています。これで再度ログインしたときにTZ環境変数が正しく設定されます。

ファイルを保存したら以下のコマンドを実行してください。

/etc/init.d/ntpd restart

ntpdが再起動して設定が読み込まれ、ntpサーバーへのアクセスが行われます。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください