最終更新: 2006-08-19 (土) 23:06:58
このページをDeliciousに追加 このページをはてなブックマークに追加 このページをlivedoor クリップに追加 このページをYahoo!ブックマークに追加

玄箱の標準カーネルでの運用

目次

標準カーネルの制限について

玄箱は、バージョン 2.4.17 のカーネルが FLASH ROM に焼きこまれており、 常にそのカーネルから起動するようになっている。 カーネルのバージョンアップ をせずに、 この標準カーネルのまま使用する場合、以下のような制限がある。

  • 玄箱の時計がかなり狂う
  • カーネルモードの NFS サーバがまともに動かない
  • その他、カーネル 2.4 の持つ制限

これらの制限を回避するための方法を載せておく *1

adjtimex のインストール

adjtimex のパッケージをインストール。

# aptitude install adjtimex

インストール時の質問には、以下のように答える。

Should adjtimex be run at installation and at every startup?
Yes
Should adjtimexconfig be run at installation time?
No

decrementer frequency の適正値を、以下のような手順で求める *2

  1. 以下のコマンドを実行し、現在の decrementer frequency の値を調べる。
    # dmesg | grep "decrementer frequency"
  2. 以下のコマンドを実行して1時間放置する。 2回目に表示される offset の値が、1時間で時計がズレた分の補正値を示している。
    # ntpdate -b ntp1.jst.mfeed.ad.jp; sleep 3600; ntpdate -b ntp1.jst.mfeed.ad.jp
  3. 以下の計算式により、decrementer frequency の適正値を求める。
    適正値 = (decrementer frequency) × 3600 ÷ (3600 + offset)
  4. 玄箱を再起動。
  5. 以上の作業を3回ほど繰り返し、適正値の平均を求める。

/etc/init.d/adjtimex を以下のように書き換える。 base_freq の部分は、上で調べた decrementer frequency の適正値に置き換える。

#!/bin/sh
#
# Run ADJTIMEX at startup.

test -x /sbin/adjtimex  || exit 0

base_freq=32.522240
base_tick=10000

real_freq=`dmesg | grep "decrementer frequency" | awk '{print $4}'`

tick_freq=`awk "BEGIN { \
    real_tick = $base_tick * $real_freq / $base_freq; \
    tick = int(real_tick); \
    freq = int((real_tick - tick) * 6553600 + 0.5); \
    print tick, freq; \
}"`

TICK=${tick_freq% *}
FREQ=${tick_freq#* }

case "$1" in
  start|restart|force-reload)
    echo -n "Regulating system clock..."
    /sbin/adjtimex -tick "$TICK" -frequency "$FREQ"
    echo "done."
    ;;
  stop)
    ;;
  *)
    echo "/etc/init.d/adjtimex: unknown command $1" >&2
    echo "Usage: /etc/init.d/adjtimex {start|stop|restart|force-reload}" >&2
    exit 3
    ;;
esac

exit 0

NFS サーバのインストール

NFS サーバのパッケージをインストール。 玄箱うぉううぉう♪ さんの Debian 化キットを玄箱/HG で使っている場合は、 カーネルモジュールのインストール も忘れずに行っておく。

# aptitude install nfs-user-server

/etc/exports に以下の設定を追加 *3

/home          192.168.0.0/24(rw)
/home/data     192.168.0.0/24(rw,anongid=100)
/home/www      192.168.0.0/24(rw,all_squash,anonuid=33,anongid=100)
/cdrom         192.168.0.0/24(ro)

以下のコマンドを実行し、NFS デーモンを再起動。

# /etc/init.d/nfs-user-server restart
*1 というか、標準カーネルのまま動かしていた頃の記録を、せっかくなので載せてみた。
*2 調べるのが面倒ならば、玄箱の場合は 24.391680 MHz、玄箱/HG の場合は 32.522240 MHz という値を用いてもよい。
*3 /home/www の設定は anongid=33 にしたいが、それだとなぜかうまくいかない。

(Counter:1, Today:1, Yesterday:0)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   最終更新のRSS