2009年4月25日土曜日

そして玄箱へ… LV3

miconapl と nvram が動かなかった件ですが、
結論から言いますと、玄箱標準の Linux から
必要な実行ファイルとライブラリを持ってきて、
ライブラリ・パスを指定して実行すると動いた。

ここをぱくった
ttp://aerocats.blog100.fc2.com/blog-category-9.html
エレキジャックさんと AEROCATS さんに感謝、感謝!

以下手順ですが、「玄箱 PRO で遊ぼう!!」についてくる
Debian (武将2)上で作業している。



■ 標準 Linux をバックアップも兼ねて、Tarで固める。

・ 標準 Linux が入っているフラッシュメモリをマウントする。
# mkdir -p /mnt/flash
# mount /dev/mtdblock2 /mnt/flash/

・ tar で固める
# cd /mnt/flash/
# tar czvf /root/mtdblock2-bkup.tar.gz *

・ フラッシュ・メモリをアンマウント
# umount /mnt/flash/
# rmdir /mnt/flash/

・ 解凍
# cd /root
# mkdir mtdblock2
# cd mtdblock2
# tar zxf ../mtdblock2-bkup.tar.gz

■ 必要なライブラリなどを標準 Linux から拝借してくる。
# mkdir /usr/local/kurobox
# mkdir /usr/local/kurobox/bin
# mkdir /usr/local/kurobox/ilb
# cp -p /root/mtdblock2/lib/ld-2.3.6.so /usr/local/kurobox/lib/
# ln -s /usr/local/kurobox/lib/ld-2.3.6.so /lib/ld-linux.so.3
# cp -p /root/mtdblock2/lib/libc-2.3.6.so /usr/local/kurobox/lib/
# cp -p /root/mtdblock2/lib/libgcc_s.so.1 /usr/local/kurobox/lib/
# ln -s /usr/local/kurobox/lib/libc-2.3.6.so /usr/local/kurobox/lib/libc.so.6
# cp -a /root/mtdblock2/usr/local/lib/libbuffalo_bin.so /usr/local/kurobox/lib/
# cp -p /root/mtdblock2/usr/local/sbin/nvram /usr/local/kurobox/bin/
# cp -p /root/mtdblock2/usr/local/sbin/miconapl /usr/local/kurobox/bin/

・ 動作確認
miconapl を動かしてみる

# LD_LIBRARY_PATH=/usr/local/kurobox/lib /usr/local/kurobox/bin/miconapl -b -a temp_get
#[miconapl.temp_get]
temp=41

おっしゃ!うごいた!
ついでに nvram も

# LD_LIBRARY_PATH=/usr/local/kurobox/lib /usr/local/kurobox/bin/nvram -help
nvram Ver.1.00
nvram -c

よしよし
でも、毎回こうやって実行するのは、長くて嫌なので

■ コマンド作成

代理コマンド(って言うの?)を作成
呼び出す時のコマンド名が異なると違う動作をするやつで、
シンボリック・リンクを別名で作成して利用する
# vi /usr/local/kurobox/bin/kuroboxcmd

・ 以下の3行を記述する。
#!/bin/sh
CMD=/usr/local/kurobox/bin/`basename $0`
LD_LIBRARY_PATH=/usr/local/kurobox/lib $CMD "$@"

・ 実行属性をつけて
# chmod 755 /usr/local/kurobox/bin/kuroboxcmd

・ シンボリック・リンクを作成
この時に、リンク元は一緒で、シンボリック・リンク名が異なるのがミソ
# ln -s /usr/local/kurobox/bin/kuroboxcmd /usr/local/sbin/miconapl
# ln -s /usr/local/kurobox/bin/kuroboxcmd /usr/local/sbin/nvram

・ 実行確認
作ったやつが呼び出されるか確認
# whereis miconapl
miconapl: /usr/local/sbin/miconapl

実行してみる
# miconapl -b -a temp_get
#[miconapl.temp_get]
temp=41

作ったやつが呼び出されるか確認
# whereis nvram
nvram: /usr/local/sbin/nvram

実行してみる
# nvram -help
nvram Ver.1.00
nvram -c

うんうん、うごいた
ようやくこれで、標準 Linuxに切り替える下準備ができた。