2010年1月14日木曜日

Inferno on Ubuntu on Beagleboard

さて、新年が始まったわけですが、いきなりインフルエンザに罹患し出遅れています。
とはいえ、自由時間が取れるようになってきたので開発を再開しました。

Inferno on Ubuntu on Beagleboardを試してみました。
BeagleboardというARMボードの上でUbuntu Linuxをまず動かします。
その上でHosted Infernoを動かしてみました。
結果はうまくいきました。
wmは無理ですが、シェルは動きました。
ネットワークも未検証です。

なお、すべてネットに転がっていたビルド済みバイナリを利用しました。
何一つ自力でコンパイルしていない・・・

Ubuntuのインストール

まずはUbuntuのインストールです。
http://pyohn.blog.so-net.ne.jp/2009-11-18
の通りです。
作業はdebianで行いました。古いマシンなので遅かった・・・

・ビルド済みデモイメージを持ってくる
・カーネルとルートファイルシステムが含まれている。
・カーネルをuImageに変換し、SDカードのfatパーティションにコピー
・ルートファイルシステムをSDカードのext3パーティションに展開
・SDカードをbeagleboardに取り付け、ブート。
・以下のコマンド

setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000'
setenv bootargs 'console=ttyS2,115200n8 console=tty0 root=/dev/mmcblk0p2 rootwait rootfstype=ext3 ro vram=12M omapfb.mode=dvi:1280x720MR-16@60'
boot

で、めでたくログインプロンプトが出る。
このデモイメージはubuntu/temppwdというアカウントでログインできるようだ。

ひとまずubuntuが立ち上がった。

Infernoのインストール

つづいてInfernoのインストールです。
ubuntuのext3パーティションのどこかにInfernoのシステムをおきます。
たとえば/Infernoとか。

必要なものはInfernoのバイナリ。
これは、
http://code.google.com/p/inferno-bin/
にあるものを使いました。
Downloadから
「emug Linux arm Google Android emulator」
を選択しました。ダウンロードしてemu-gなどという名前にしておきます。

これだけでは動作せず、いくつかdisファイルが必要なようです。
選ぶのも面倒なので、既存のdis一式を丸ごとコピーしました。
コピー元は
http://code.google.com/p/inferno-os/
のtrunkのdisディレクトリでよいかと。
※disはアーキテクチャに依存しないので、どれでも共通です。

これらをたとえば以下のようなディレクトリ構成に配置します。

dis/
Linux/arm/bin/emu-g

Ubuntuでログインし、
cd path.../Linux/arm/bin
とディレクトリを移動し、
emu-g -r ../../../
とすると見事シェルが立ち上がりました。
-rはルートディレクトリです。
プロンプトは;です。
lcとするとファイル一覧が表示されます。

今後

これにて組み込みボードでInfernoが動く感じが再現できました。
しかし、できればNativeで動かしたいので引き続きNative Infernoを動かす努力を
していきたいと思います。
また、Hosted Infernoも、ネットワークがまだ動かせていないなど、課題があるので
そちらもやっていこうかと。

1 件のコメント:

  1. ネットワークいきなり使えていました。
    パソコンとボードをUSBケーブルで接続すると、USB Ethernetとして動くようです。
    パソコン側ではUSB Ethernetを有効にしIPアドレス固定とする。
    ボード側のLinuxでifconfig usb0 [IPアドレス]でアドレスを振ると通信可能。

    Infernoでもネットワークが有効になる。

    返信削除