少し前に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サーバーへのアクセスが行われます。