http://www.flu-card.com/jp/
というSDカードがあります。
これ自身が無線APとなり、デジタルカメラに入れっぱなしでもネットワーク経由で
画像を取り出せるという便利グッヅです。
なお、中身はlinuxであり、telnetでアクセスできたりと
いろいろできるようで、ちょっと前に話題になっていました。
ものすごい熱を発するのでカメラに入れるのはちょっと躊躇してしまいますが、
最小のLinuxマシンとして興味が湧いたので購入しました。
Telnetでログインできることを確認できたので、本題です。
arm-linuxあるところにinfernoあり、ということで、
infernoのポーティングです。
文鎮化が怖いので、 native infernoのポーティングは出来ませんが、
hosted infernoなら行けそう。
目標は、flucardでinfernoを動かし、styxでマウントして
画像を取り出すことです。
・ビルド環境構築
Qemu上のarm-linuxでセルフビルド(あるいみクロスビルド?)を行いました。
Qemuの環境構築については
http://inferno-hell.blogspot.jp/2011/10/qemuarm.html
http://inferno-hell.blogspot.jp/2012/04/lenny-no.html
あたりを参照。
特に変更は無いはず。
infernoビルドに必要なソフトウェアをapt-getでインストールし、
infernoのソースツリーを持ってきます。
詳細は
http://inferno-hell.blogspot.jp/2011/10/wm.html
このへん。
ーーーこっから嘘情報ーーー
ただし、ソースツリーはtrunkではなく2009年あたりのIPv6対応前のものとします。
hg clone https://inferno-os.googlecode.com/hg/
hg update a682517fc1ec
IPv6対応にすると、host osがv6に対応していないためか、ネットワークアクセス時にエラーとなるようです。
このリビジョンの根拠は、infernoのipv6対応に関するissueが193にあり、日付から、
これより前のリビジョンで当たりをつけました。
最新のツリーとは若干ビルド方法が異なり、
mkconfig編集
パス通す
Linux/arm/bin,lib ディレクトリをそれぞれ作成(無いとエラーになる)
./makemk.sh実行
mk CONF=emu-g install (mk mkdirsはしない)
といった感じでした。
ーーーここまでーーー
ーーー追加ーーー
mkの前に、ipv6のOFFのための作業がいります。
emu/Linux/emu-gを編集し、
ipif6-posixをipif-posixに変更します。
で、./makemk.sh; mk mkdirs; mk CONF=emu-g install
としてビルド。
ーーーここまでーーー
Linux/arm/bin/emu-gが出来上がります。
ldd emu-gでこのプログラムが必要としているライブラリを確認し、
/lib以下の該当ファイルをとっておきます。
・flucardにinferno環境構築
flucardをパソコンに取り付け、infernoのファイルを配置します。
/sd/
emu-g ... inferno本体
lib/ ... ライブラリをおいておく
inferno/ ... infernoのルート。qemuからもってくのが面倒だったのでOSXから持っていった
mkln.sh ... ライブラリのリンクを貼るスクリプトを作成
こんな感じで配置をします。
mkln.shの中身は
#!/bin/sh
ln -s /mnt/sd/lib/ld-linux.so.3 /lib/
ln -s /mnt/sd/lib/libgcc_s.so.1 /lib/
ln -s /mnt/sd/lib/libpthread.so.0 /lib/
ln -s /mnt/sd/lib/libc.so.6 /lib/
ln -s /mnt/sd/lib/libm.so.6 /lib/
といったところ。sd/lib以下のファイルのリンクを/libに張ります。
・flucard上でinferno 起動
flucardをカードリーダーにさして電源を投入するとAPになります。
パソコンでそのAPに接続し、
192.168.1.1にtelnetログインします。
/mnt/sdにSDカードの内容が見えます。
cd /mnt/sd
./mkln.sh
./emu-g -r inferno
でinfernoが立ち上がります。
infernoのシェルで、
bind -c '#U*' /n/local
listen -A tcp!*!1024 {export /&}
と実行します。1024はとりあえずのポート番号で値はなんでもいいです。
これでflucardのSDの中身がstyxで公開されました。
・パソコン側のinfernoの操作
flucardのAPにつながっているパソコンでinfernoを立ち上げます。
絵を扱うのでwm/wmを起動しておきます。
シェルにて
mount -A tcp!192.168.1.1!1024 /mnt
とすると/mntにflucardがマウントされます。
/mnt/n/local/mnt/sd/
にSDカードが見えます。
この中の画像ファイルを探し、
wm/view ファイル名(小文字に直す)
としてやると、画像が表示できます。lsするとファイル名は大文字ですが、そのままだとviewが画像と思ってくれないので、小文字で指定します。
styxで無線経由で画像を取り出せるとは、胸が熱くなります。
ところで、flucardにはウェブインターフェースがあるから、
ウェブ経由で画像を取り出せばいいじゃん、という意見もあるかと思いますが、
まったくそのとおりなのです。
flucardにinfernoいらないじゃん。
charonで192.168.1.1に接続。
残念ながらcharonでは直接画像は表示できませんでしたが、
画像のダウンロードは可能でした。
ところで、画像の縮小表示ってどうやるんだろうね。
なにも古いバージョンを使わなくても、IPv6を抑制する方法がありました。
返信削除修正します。
情報源
http://comments.gmane.org/gmane.os.inferno.general/5203
どうでもいいが、気づくとVMを4段重ねにしていた。
返信削除MAC OSX -> VMWARE Linux -> Qemu arm Linux -> inferno arm emu
うーむ。