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

By 酔漢 - Last updated: 水曜日, 9月 23, 2015 - Save & Share - Leave a Comment

少し前に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サービスが一般向けに提供していますのでこれを利用します。

これを、/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サーバーへのアクセスが行われます。

Posted in SAMA5D3 Xplained • • Top Of Page

Write a comment