2011-11-18 改訂 バイナリファイルの更新(0.4ブランチのみ)
2011-05-09 改訂 バイナリファイルの更新(0.4ブランチのみ)
2010-12-28 改訂 内容の更新。バイナリファイルの更新(0.4ブランチのみ)
2010-11-10 改訂 メーリングリストの立ち上げ。バイナリファイルの更新(0.4ブランチのみ)
2010-07-21 改訂 バイナリファイルの更新(0.4ブランチのみ)
2010-06-13 改訂 バイナリファイルの更新(0.4ブランチのみ)
2009-06-11 改訂 バイナリファイルの更新(0.4ブランチのみ)。内容の更新
2009-02-20 改訂 内容と参考資料の更新
2008-10-25 改訂 tip集の追加。内容と参考資料の更新
2008-10-01 改訂 バイナリファイルの更新(0.4ブランチのみ)
2007-10-11 改訂 0.4 ブランチのバイナリファイルの配布開始。内容の改訂
2007-08-26 改訂 crontab と winrawsrvd のセクションを追加。
2005-06-25 改訂 バイナリファイルのアップデート。これ以前の物は重大な不具合があるので使用しないこと。
2005-02-08 改訂 バイナリファイルの配布開始。
2004-09-23 初版
ここでは、ぷらっとホーム株式会社で開発された手のひらサイズのマイクロサーバ、OepnBlockS266 に WIN SystemをインストールしてWINを動かす方法を述べています。
WINを動かすといっても、OpenBlockS266 にはXは入っていませんので、所謂win(1W)で地震の読み取りなどは行えません。では、何に使うかというと、relay(1W)やsendt_raw(1W)といったプロセスを動かし地震データのルータとして機能させたり、地震データをオプションの CF カードやハードディスクに収録させたりするのに使います。例えば、インターネットの使える環境のある地震観測点では、その観測点のデータを OpenBlockS266 にバッファリングさせておき、いざというときのバックアップにすることが出来ます。
なお、本サイトの内容や公開しているバイナリファイルを利用した結果については、たとえそれが予測されることであっても一切の責任を負いません。またサポートに関しての義務を負いません。
本サイトの内容と公開しているバイナリファイルは、学術研究目的に限り、かつ、本サイトの文章を参照して作ったシステムについて、また、そのシステムで取得したデータを使って発表や報告を行う場合に参考資料を引用する限り、自由に利用することが出来ます。
自分で WIN パッケージをコンパイルしない人は、このセクションを飛ばしてもらってかまいません。
NEW! こちらに、コンパイル済みのバイナリファイルを公開しました。ここに含まれない独自のプログラムをコンパイルする必要がある場合はこの章を参考にして下さい。OBSS_winbin-20050625.tar.gz より古いものは重大な不具合があります。古いバージョンをお使いの方は最新のものに更新して下さい。
コンパイル環境は、クロス開発環境とセルフ開発環境があります。
クロス開発環境は、i386マシンにSSD/Linuxをインストールすることによって整備します。ただ、クロス開発環境の整備に関してはぷらっとホームの方では質問すら受け付けておりませんので、SSD/Linuxのホームページを見ながら独力で行う必要があります。私は根性が無かったので少し試行錯誤した挙げ句、セルフ開発環境で行うことにしました。最近は、SSD/Linux の開発キットを販売しておりますので、そちらを試してみるのもいいかもしれません。
セルフ開発環境は、OpenBlockS266本体にハードディスクを付けることが必要です。ハードディスクには24時間対応とそうでないものがありますが、観測点など無人の場所に置かないのであればどちらでもいいでしょう。実際の開発環境の整備は、Plat'Home Open Laboratory のOpenBlockS266の「開発環境ガイド」等のドキュメントを参照してください。この機器ではコンパイラが動けばよいので、Source 等の SSD/Linux そのものの開発に必要なものは入れなくてもいいです。
2007年7月、SSD/Linux に 0.4 という新たなブランチがリリースされました。0.4 ブランチではカーネルが 2.6 になり、また glibc のバージョンも 0.3 ブランチ (Kernel: 2.4.26) と 0.2 ブランチ (Kernel: 2.4.20) とでは異なります。0.4 でコンパイルしたバイナリと、 0.3 または 0.2 でコンパイルしたバイナリは互換性の無いと思った方が良いそうなので、運用機器で使用する環境をインストールして下さい。ちなみに 0.3 と 0.2 はバイナリファイルの互換性があります。
コンパイル環境が整ったら、WIN をコンパイルします。WIN のホームページよりパッケージをダウンロードしてもいいし、Anonymous CVS Server からソースを所得してもかまいません。どちらでもコンパイル可能です。具体的な方法はそれぞれのドキュメントを参照してください。
OpenBlockS266 のセルフ開発環境上では、char 型は符号無し、つまり、unsigned char 型と同じです。WIN の中には char 型は符号ありを仮定しているコードがありますので、コンパイルの時、-fsigned-char オプションを指定する必要があります。例えば、
% CFLAGS="-fsigned-char -O" ./configure
などとしてコンパイルして下さい。
また、少なくとも SSD/Linux 0.3-20050914 では、コンパイル時に -O オプションを付けると shmdump などが core dump すること分かっています。このような場合は、
% CFLAGS="-fsigned-char" ./configure
のように最適化オプションを外してコンパイルして下さい。
ここでは運用機器の設定について、具体的に書いていきます。
まず、機器の構成は、
本体+コンパクトフラッシュ(CF)
を想定しています。CF はストレージデバイスとしてのみで使用します。
地震データをOpenBlockS266に収録する場合は、CFもしくは24時間運用可能なハードッディスクの装着が必須です。2008年からは2.5インチSSD(Solid State Drive)の使用も可能になりました。ハードディスクを装着する場合は、放熱対策をしっかりしておかなければいけないようなので、ぷらっとホームのWebページにある注意事項を良く読んで下さい。個人的な使用感では、ハードディスクが回るとかなりの表面温度になりますので、観測点ではCFカードを使う方がいいように思いました(可動部分が無いし)。SSDについては2009年1月現在試験中です。SSDやハードディスクを使う場合も基本的な流れはCFの場合と変わらないので、下の方法がそのまま役に立つと思います。
設定の方法は、WEBセットアップツール、シリアルセットアップツール、ログインして直接設定する、があります。一般的に行うような設定、つまり、ネットワークやユーザの設定などはどの方法を使っても設定可能ですが、方法を決めたら必ず決めた方法で設定を行うのが重要です。下の説明では、WEBセットアップツールで設定出来るものはすべてWEBセットアップツールを使い、それ以外はログインして直接設定する方法を取っています。
本体の横4カ所のネジを外し、CFカードを装着します。上下を間違わないように。どちらかしか入らないので、向きは分かります。
OpenBlockS266 にログイン出来る環境を整えます。ネットワーク越しでもシリアルケーブル経由でもいいでしょう。一長一短あるので、私は両方できるようにしています。
rootでログインしたら、ストレージのモードが何に対応しているか調べます。
# hdparm -I /dev/hda
PIOモードにしか対応していない場合、もしくはPIOモードで動かしたい場合はこのまま進みます。ただし、SSDの場合DMAモードでしか動かないようです(2008年10月25日現在の情報)。DMAモードに対応しておりDMAモードで動かしたい場合は、5-2節を参考にして最適なモードに設定します。設定したモードでエラーが出ないかどうか確認します。
# hdparm -t /dev/hda
次に、CFカードに不良ブロックが無いかどうか確認したい時は、5-1節を参照にしてbadblocksコマンドを実行します。もし、これまで使用していて、CF内に必要なデータが入っている場合は、必要に応じて予めバックアップを取って下さい。実行には数10分から数時間かかります。
装着したCFカードをフォーマットしてファイルシステムとして認識させます。ここに「コンパクトフラッシュの初期化」という非常にいいドキュメントがあるので参照してください。ハードディスクの初期化の方法も載っています。
以下、複数のパーティションを切らないで、CF カードを1パーティションで使用する例で説明します。
フォーマットしたら、/mnt にマウントします。
# mount /dev/hda1 /mnt
OpenBlockS266 のファームをアップデートします。「コンパイル機器の設定」でも書きましたが、2007年7月に新たなブランチである 0.4 系列のファームウェアがリリースされています。0.3、0.2 系列で使用していたバイナリは動かなくなるので、すでに運用機器をお持ちの方は御注意下さい。これから書く内容はここの「各種ガイド/仕様書」ある「ユーザーズガイド」の Ver.1.04 と Ver.2.00を基にしています。必ずこの文章も一読して下さい。
ファイルシステムは、ext2 より ext3 の方が良さそうなので、特別な理由が無い限りは 0.4 系列をインストールする方がいいでしょう。
最新のファームを Plat'Home Open Laboratory -> OpenBlockS266から入手します。普通は、外部に接続して ftp などで入手すると思いますので、WEB セットアップツールでネットワークの設定を行い、外部接続出来るようにしておきます。ファームウェアはフォーマットした CF にセーブします。つまり /mnt にセーブしておきます。
以下の作業は、これまで設定した内容を読み込まないモードで立ち上げるため、シリアルケーブル経由で作業します。
# flashcfg -d
# flashcfg -c initrd
# reboot
アップデートしたファームウェアで、装着したCFカードを再フォーマットします。0.4 ブランチからは、ext2 に加えて ext3 でもフォーマット出来るようになりました。ext2 の方にはバグがありそうだという情報がありますので、特別な理由が無い限りは ext3 を使います。
fdisk(8) の後、ext2 の場合は、
# mke2fs /dev/hda1
を実行し、ext3 の場合(0.4ブランチ以上のみ)は、
# mke2fs -j /dev/hda1
を実行します。
註:0.4 ブランチから、DMA モードで設定可能になりましたが、2007年10月現在では、使わない方が良さそうです。
CF カードをブート時にマウントするために、/etc/fstab に以下の1行を書き加えます。
/dev/hda1 /mnt ext2 defaults 1 1
0.4 ブランチのファームウェアを使用していて、ext3 を使う場合は、
/dev/hda1 /mnt ext3 defaults 1 1
にして下さい。
変更内容保存のために、flashcfg コマンドを実行して下さい。
# flashcfg -s /etc/flashcfg
起動時に時刻を合わせるため、WEB セットアップツールの NTP サーバの欄に、NTP サーバの IP アドレスを記述し、セーブします。
運用開始後に定期的に時刻合わせをするには、crontab を使用します。ただ、crontab コマンドは SSD/Linux 0.3-20050914 以上でないと入っていませんので、必要に応じてアップデートして下さい。
root でログインします。
NTP サーバが動いているかどうか確認する場合は、手動で ntpdate を起動します。ただし、一般には、運用する場所のネットワーク環境でないと確認は出来ないかもしれません。
# ntpdate [IP address of NTP server]
以下により、crontab の設定を行います。
# crontab -e
下記を書き込みます。毎時59分に起動させる例です。起動回数や起動時刻は、各自の環境に合わせて下さい。
59 * * * * sleep 30; /usr/sbin/ntpdate -s [IP address of NTP server]
変更内容を保存するために下記を実行します。
# echo /var/cron/tabs/root >> /etc/flashcfg (0.4 系列では必要なし)
# flashcfg -s /etc/flashcfg
設定が保存されているかどうかは、OpenBlockS266 を一度再起動をし、root でログインして、
# crontab -l
として下さい。
WEB セットアップツールにより auto を作成します。user1 は遠隔地からの保守の時に役に立つので削除しないほうがいいです。作成したらセーブします。
ホームディレクトリは /mnt/auto にします。シリアルケーブル経由、もしくは telnet により root ユーザでログインします。telnet の場合は、一度 user1 でログインして su で root になる必要があります。
ログインした後、/etc/passwd のホームディレクトリの情報を書き換ます。
# vi /etc/passwd
/home/auto の部分を、/mnt/auto に置き換えます。
また、su で root にスイッチしたい場合は /etc/group の wheel に auto を付け加えます(0.4-20090330 以降?)。
その後、内容を保存します。
# flashcfg -s /etc/flashcfg
ディレクトリの作成と、所有者・グループ名・パーミッションの変更をします。
# cd /mnt
# mkdir auto bin lib libexec raw log
# chown auto:users auto bin lib libexec raw log
設定が保存されているかどうかは、一度、OpenBlockS266 を再起動後、auto でログイン出来るかどうか見て下さい。
auto でログインし、コンパイル済みのバイナリファイルを、こちらからダウンロードします。ファームウェアのブランチに応じたファイルを取得します。2007年10月11日現在、0.4 の環境ではテストを始めたばかりで、長期的な動作確認は行っておりませんので、それを念頭に置いて使って下さい。何か不具合を見つけましたら御一報いただけると今後の役に立てると思います。
ダウンロードしたファイルを展開します。
# cd /mnt
# tar zxvf [ダウンロードしたファイル名]
起動時に走らせるWINのプロセスのスタートアップファイル /mnt/auto/rc.d/winctl.sh を作成し、実行許可を与えます。以下の例では、7000番ポートからデータを受け取り、/mnt/raw に書き込む傍ら、192.168.1.13 の 7020番ポートにデータを転送しています。
# vi /mnt/auto/rc.d/winctl.sh # chmod a+x /mnt/auto/rc.d/winctl.sh # cat /mnt/auto/rc.d/winctl.sh
#! /bin/sh
#
# winctl.sh
#
BINDIR=/mnt/bin
RAWDIR=/mnt/raw
RAWFREE=10
# set parameter
RECV_PORT=7000
SEND_HOST=192.168.1.13
SEND_PORT=7020
# Lets begin
case $1 in
start)
echo "Starting win:"
echo " recvtd ..."
${BINDIR}/recvtd ${RECV_PORT} 11 1000 -
sleep 3
echo " sendt_rawd ..."
${BINDIR}/sendt_rawd -1 11 ${SEND_HOST} ${SEND_PORT} -
sleep 1
echo " orderd ..."
${BINDIR}/orderd 11 12 500 10
sleep 3
echo " wdiskd ..."
${BINDIR}/wdiskd -s 12 ${RAWDIR} ${RAWFREE}
;;
stop)
;;
*)
echo "Usage: winctl.sh {start|stop}"
exit 1
esac
exit 0
起動時に実行させたいコマンドを/etc/rc.local に記述するのですが、このファイルはデフォルト設定では flashcfg -s /etc/flashcfg コマンドでは保存されません(0.4 系列ではデフォルトで入っている)。/etc/flashcfg ファイルを編集し、このファイルを保存対象とする必要があります。/etc/flashcfg で列挙されているファイルリストに、 /etc/rc.local を追加してください。必要な操作は下記の通りです。
# start win process if [ -x /mnt/auto/rc.d/winctl.sh ]; then su - auto -c "/mnt/auto/rc.d/winctl.sh start" fi
以上により、ブート後に OpenBlockS266 で WIN システムのプロセスが走るようになりました。
winrawsrvd を使わない場合は、このセクションを飛ばして下さい。
winrawservd のサービスを行うためには、inetd の設定が必要です。そのためには、/etc/inetd.conf にサービスの登録を行い、/etc/services にポート番号の登録を行う必要があります。
0.4 ブランチ用と、0.3 及び 0.2 ブランチ用ではバイナリファイルの互換性がありません。自分の環境に合ったファイルを取得して下さい。
badblocks コマンドで行います。必要なファイルがある場合は、読み出しテストのみの場合でもコマンド実行前に必ずバックアップを取って下さい。
読み出しテストだけの場合は、
# badblocks -sv /dev/hda
とします。数10分程度時間がかかります。
実際に書き込みを行ってチェックする場合は、
# badblocks -wv /dev/hda
とします。こちらは数時間程度かかり、CFの中身は当然としてファイルシステムも消えてしまいます。これを行った後は再フォーマットしましょう。
これらのテストでエラーが出た場合は使用を停止して、CFカードを交換することになります。
DMAモードがサポートされている場合、下記のようにしてDMAモードを選びます。
なお、2008年10月25日現在、SSD は udma5 では動かず、udma2 で使用するのが無難です。PIOモードもうまく動きませんでした。CF はDMAモードがサポートされていてもPIO モードも動くようです。いずれにしても、hdparm -t /dev/hda でエラーが出ないかどうかで判断するのが良いようです。
このページの文章を参照して作ったシステムについて、また、そのシステムで取得したデータを使って発表や報告を行う場合は、下記の論文を引用するようお願いします。また、これらの別刷を希望する方は御連絡下さい。
マイクロサーバで WIN システムを動かす人達の中で情報交換するためのメーリングリストを立ち上げました。こちらから登録して下さい。