玄箱プロにDebian

2007-03-03 22:16:12 | 開発人生
※ これはご同業さん向けのとても専門的な話です。
※ Google閣下を介して、情報を探しておられる方に
※ 伝わればいいなと思って書いた簡単なメモです。
※ コメントは書けません。


【1】 Debianのインストール
玄人志向の玄箱プロ(KURO-BOX/PRO)にDebian etchをインストールしました。結論から先に言うと、これといった工夫もせずにセルフ環境からすんなり入りました。

まず付属CD-ROMの「製品仕様書.pdf」30ページに載っている方法でHDからブートするように設定を変えました。この時点でgccが使えるようになるので、wgetとdebootstrapを最新版ソースからビルドしました。

次に この手順 に従って/home直下に基本システムを構築しました。できあがったDebianはsda4の上にあります。標準状態ではsda2からブートする設定になっているので、単純にファイルをまるごと移動させました。試していませんが、シリアルコンソールやフラッシュメモリをいじるツールでブートパラメータを変えれば直接sda4から起動させることもできると思います。

いったんDebianが起動してしまえば、あとはもう好き放題カスタマイズするのみです。私はsda4を削除して論理パーティションに分割し、/usrと/homeにマウントしています。/usrが大きくなったのでaptitude猿と化してパッケージ入れまくりです。


【2】 miconaplは不要かも?
前評判ではmiconaplというアプリを使って制御用のマイコンにコマンドを送ってやらないと自動で電源が切れないと聞いていたのですが、どうもこれは必須ではないようです。

/etc/default/haltの内容をHALT=haltに書き換えておけば、特にコマンドを送らなくてもshutdown -h nowするだけで電源が切れます。ブート時のメッセージに
Buffalo Platform Linux Driver(Light) 0.01 installed.________
MICON ctrl (C) BUFFALO INC. V.1.00 installed.
Kernel event proc (C) BUFFALO INC. V.1.00 installed.
MICON V2 (C) BUFFALO INC. V.1.00 installed.

というのが見えるので、このあたりのカーネル埋め込みドライバがうまくやってくれてるのでしょうか。さすがこれまでのようなNAS+αではなくて「Linux Box」として売ってるだけのことはあります。当たり前の使い方をするぶんにはハックらしいハックは不要ということですね。


【3】 miconaplの実行方法
とはいえmiconaplを使いたい場合もあります。ためしに実行してみたらライブラリまわりのエラーで終了してしまいました。objdumpで調べてみると
# objdump -p miconapl_______________________________________

miconapl: ファイル形式 elf32-littlearm
...
private フラグ = 4000002: [Version4 EABI] [エントリポイント
を持っています]

現行のDebianとはちがってEABIでビルドされています(というかそのほうが普通でしょう)。だったら依存してるライブラリをコピーしてLD_LIBRARY_PATHを指定すれば動きそうです。

付属CD-ROMのhddrootfs.tar.gzを展開。
# mkdir kurocd______________________________________________
# tar -xvzf hddrootfs.tar.gz -C kurocd

EABI版ライブラリを格納するディレクトリを作成。
# mkdir /usr/lib/eabi_______________________________________

ローダをコピーして/lib下にリンクを置く。
# cp -a kurocd/lib/ld-2.3.6.so /usr/lib/eabi________________
# ln -s /usr/lib/eabi/ld-2.3.6.so /lib/ld-linux.so.3

libcをコピー
# cp -a kurocd/lib/libc.so.6 /usr/lib/eabi__________________
# cp -a kurocd/lib/libc-2.3.6.so /usr/lib/eabi

libgcc_sをコピー。
# cp -a kurocd/lib/libgcc_s.so.1 /usr/lib/eabi______________

libbuffalo_binをコピー。
# cp -a kurocd/usr/local/lib/libbuffalo_bin.so /usr/lib/eabi

これで動きます。ためしに温度を取得してみました。
# LD_LIBRARY_PATH=/usr/lib/eabi ./miconapl -b -a temp_get___
#[miconapl.temp_get]
temp=33

nvramも同じ方法で動きました。
# LD_LIBRARY_PATH=/usr/lib/eabi ./nvram -c printenv_________
1: [baudrate=115200]
2: [loads_echo=0]
3: [ipaddr=192.168.11.150]
4: [serverip=192.168.11.1]
5: [rootpath=/nfs/arm]
6: [cpuName=926]
...

LD_LIBRARY_PATH付きで実行するスクリプトを元のコマンドと同名で作って、パスをそちらに通しておけば便利でしょう。


【4】 miconaplのコマンドラインオプション
OS起動後に初めてmiconaplを実行する場合のみ、-bを付けてポートを初期化してやらないと正しく動作しません。二回目以降は付けても付けなくてもどちらでもよいようです。-bの有無によるデバッグ出力の差は次の通りです。

-bあり
# LD_LIBRARY_PATH=/usr/lib/eabi ./miconapl -d1 -b___________
>SetDeviceName
>InitDevicePort: output_speed:15, input_speed:15
>Initialize:/dev/ttyS1
...

-bなし
# LD_LIBRARY_PATH=/usr/lib/eabi ./miconapl -d1______________
>SetDeviceName
>Initialize:/dev/ttyS1
...

最新の画像もっと見る