2011年2月27日日曜日

libinterp.aが見つからない

Native infernoをクロスビルドしようとすると、libinterp.aが見つからないと
言われることがある。
その対処法がなんとなくわかったのでメモ。

mkconfigを編集する。


SYSHOST=Linux
SYSTARG=Inferno
OBJTYPE=arm


などとする。
Linuxの上でarmのnative infernoをビルドする設定ね。


cd libinterp
mk install


とすると、Inferno/arm/libにライブラリがインストールされる。
なるほど。

2011年2月4日金曜日

Kuro-sheeva(sheevaplug)でInferno

どうしてもARMのNative Inferno環境が欲しくなったので、玄人志向のkuro sheevaを買ってしまいました。
コンパクトで非常にcoolです。

linuxにはそれほど興味はないので、いきなりinfernoを動かします。

○ビルド

過去の日記参照。
ビルド環境は、アットマークテクノで提供しているATDE3というVMware用のイメージを
つかわせてもらった。とても便利。

○シリアルの用意

windowsでつなぐことにした。
sheevaplugのサポートサイト?からドライバを持ってきてインストール。
kuro sheevaとUSBで接続すると、kurosheevaはUSBシリアルに見える。

なお、USBコントローラーはFTDIで、シリアルのブリッジをしている。
kuro sheevaがおかしくなったとしてもシリアルは無事の可能性が高い。
電源を切るとFTDIも落ちるのでちょっと不便だけど、こういった構成は今後も使われるであろう。

シリアルコンソールはteratermを使用した。
何でもいいんだけど。

○ubootでtftpブートの設定。

あらかじめPCではtftpを立ち上げておく。
poor tftp serverがとても良い感じ。
PCはIPアドレス192.168.12.12を割り当てておく。PCとkuro sheevaはEtherで直結。
ビルドでできたuisheeva.gzを持ってきて、
tftpのルートに置いておく。

kuro sheevaを立ち上げるとlinuxが立ち上がってしまう。
rootでログインし、shutdown -r nowでリブート。
hit any keyと言われるのでキー入力すると、ubootのコンソールに入れる。

そこで、

setenv ipaddr 192.168.12.11
setenv serverip 192.168.12.12
setenv bootfile uisheeva.gz
saveenv
tftpboot
bootm

とすると、一瞬でinfernoのシェルが現れる。


Inferno Fourth Edition (20101127)
Vita Nuova
conf sheeva (1293936724) jit 0

kirkwood 88F6281-A0

mvfeat 0x41410000
l2: on, ecc off, mode writethrough
icache on, 16kb, 4-way associative, 32 byte lines
dcache on, 16kb, 4-way associative, 32 byte lines
Initial Dis: "/osinit.dis"
sheevainit...
shell...
;


かっこ良すぎ。

○ネットワーク設定

はて、ネットワーク設定はどうやるのか?

/netrcというスクリプトを用意してくれていた。
dhcpもいけるようだが、今回は固定IPで試した。


sh /netrc


を実行するとstaticかdynamicか聞かれるので、staticと答える。
残念ながらIPは決め打ちになっていて、192.168.12.11が選ばれる。
このスクリプトをみると、ネットワーク設定の方法の参考になる。
マニュアルをみただけでは難しいのでありがたい。

設定を変えようにも、エディタがないので現時点では無理(不可能ではないけど面倒)。

○Telnetで接続

netrcに驚きの箇所が。


ndb/cs
listen -A net!*!telnet {sh -i >[2=1]} &


の一行でtelnetサーバーを立ち上げている。
listenの仕組みで即telnetができてしまうとは。
認証していないのでセキュリティ的にはアレですが。

○リモートファイルシステムをマウント

・kuro sheeva側


listen net!*!styx {export /&}


・PC側
Infernoを立ち上げる。


ndb/cs
mount -A net!192.168.12.11!styx /n/remote


これで設定をacmeで変えられる。

○今後

wikiサーバーでも立ち上げようかと思ったけど、HTTPdは入っていなかった。
その前に、ストレージはどこまで対応しているのだろうか。
wikifsを使った個人用wikiがほしい。
インターネットにさらすのは恐いが。