Archives

July 2007 の記事

W-ZERO3[es] で Linux が動き出しました。以前こちら
W-ZERO3[es] Linux
W-ZERO3[es] Linux (2) mini SD
でも書きましたが、詳しくは
Linux on W-ZERO3
に書かれています。

まめに更新されていて、今では es でない W-ZERO3 (WS003SH) 等でも動作
するようになっています。

EM・ONE での動作にも期待がかかるのですが、、今のところはまだ動作対象外
のようです。EM・ONE はグラフィックアクセラレータ GoForce5500 が乗って
いるため、万が一動いても画面は見えないだろうしもしくは描画アクセスで
止まってしまう可能性があります。

無印対応以外にも、キーボードの刻印どおりに入力できるようになっていたり、
sd 周りを簡単に扱えるコマンドが入ったり、
開発者向けにクロス開発環境の作り方などがこちらで解説されています。
FrontPage - 開発room

実際にクロス環境の構築を試してみました。



(1) 仮想PC に Fedora7 を install

先日 PS3 に install したばかりなので、同じように Fedora 7 を使ってみます。

当初 VirtualPC2007 を使おうとしたのですが うまく動きませんでした。
今のカーネルと VirtualPC のエミュレーション対象との相性で問題があるようです。
(ubuntu 7.04 でもマウスが動きませんでした)

そこで、USB が使えたり、RemoteDesktop で仮想 PC へ接続が可能だという
VirtualBox を使ってみました。
WindowsVista に VirtualBox を install し、仮想マシンを作って
Fedora 7 の DVD image ( F-7-i386-DVD.iso ) から install します。
iso を直接マウントできるため物理的にメディアに焼きこむ必要はありません。

マウスのキャプチャ状態は 右の Ctrl キーで Host PC に戻ります。
(Virtual PC だと 右 Alt でした)

仮想マシン作成時に聞かれる設定はこんな感じです。

 ・OS の種類は Linux 2.6
 ・RAM は 512M (host PC はRAM 2G)

仮想 HDD のサイズは 20GB にしています。
Fedora 7 の Install オプションは下記の 3つ全部チェックしました。

  ・オフィスプロダクティビティ
  ・ソフトウエア開発
  ・webサーバー

使うインストーラの画面も手順も PS3 と全く一緒。
インストール後、ネットワークにつながることを確認したらおしまいです。
しばらくすると更新を催促されるのでそのまま更新しておきます。



(2) クロス開発環境の構築 buildroot

とりあえず W-ZERO3 用の開発環境を作ってみます。
開発メモ クロス開発環境の構築
を参考に進めました。


まず buildroot を入手します。下記から Download → Daily Snapshots
BUILDROOT

今回は buildroot-20070709 を使いました。
buildroot-20070709.tar.bz2 をダウンロードして PC に保存します。
共有フォルダを使って VirtualBox 上の Fedora7 にコピーします。

Fedora7 上の Firefox から直接ダウンロードしたほうが早かったかもしれません。

ターミナルを開いて、以後全部コマンドラインから作業します。
 アプリケーション→システムツール→端末

適当な作業フォルダを作って、先ほどダウンロードした
 buildroot-20070709.tar.bz2
を入れます。


 $ cd
 $ mkdir zero3
 $ mv Desktop/buildroot-20070709.tar.bz2 zero3

  (作業フォルダとして home に zero3 を作成し、Desktop にダウンロード
  した ~.bz2 を zero3 に移動する。)

tar を展開します。

 $ cd zero3
 $ bzcat buildroot-20070709.tar.bz2 | tar -xvf -

buildroot フォルダができるので、その中で config 設定します。

 $ cd buildroot
 $ make menuconfig

Menu 上で設定を行います。

 Target Architecture → arm に変更
 Target Architecture Variant → xscale に変更
 Target Options → cpio the root filesystem にチェック追加

[→] で <Exit> を選択して save 画面で <Yes>。

この後 make で build が始まります。
build 中必要に応じてパッケージを buildroot/dl フォルダにダウンロードして
くるようです。ダウンロードされたファイルは下記の通りです。
Wiki にあるように、可能なら先に任意のサイトからダウンロードして、
あらかじめ dl に置いておくと良いかもしれません。

  binutils-2.17.tar.bz2
  busybox-1.6.1.tar.bz2
  fakeroot_1.7.1.tar.gz
  gcc-4.2.0.tar.bz2
  genext2fs-1.4.tar.gz
  gmp-4.2.1.tar.bz2
  linux-2.6.21.5.tar.bz2
  mpfr-2.2.1.patch
  mpfr-2.2.1.tar.bz2
  uClibc-0.9.29.tar.bz2

make します。

 $ make

途中で config の追加設定を 2回きかれます。

 ◎Target Processor Type
   15. Intel Xscale (CONFIG_ARM_XSCALE)

  15 の XScale を選択

 ◎Use BX in function return (USE_BX)

  Wiki の解説どおり default の「Y」を選択


完了したら、arm 向けの各種コマンド類が下記の場所にできます。

 zero3/buildroot/build_arm/staging_dir/usr/bin

パスを通します。HOME に armenv というファイルを作って

 $ cd
 $ vi armenv

次の 1行を書き込んでおきます。

-----------------------------------------------------------------------
export PATH="$PATH:$HOME/zero3/buildroot/build_arm/staging_dir/usr/bin"
-----------------------------------------------------------------------

 $ . ./armenv

これで path が追加されます。



(3) 手抜きテスト

適当なプログラムを作ります。

 $ vi main.c

-----------------------------------------------------------------------
#include <stdio.h>
int main()
{
 printf( "HELLO, ZERO3\n" ); /* 適当 */
 return 0;
}
-----------------------------------------------------------------------

 $ arm-linux-gcc main.c
 $ file a.out

a.out: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), not stripped

なんとなくできたっぽいです。



(4) 実行テスト

(3) で作った a.out を miniSD に書き込んでおいてから、W-ZERO3[es] の
Linux を起動します。

最新版(20070707)では勝手に root で login するし、sd コマンドですぐに
miniSD をマウントできるしで、ものすごい楽です。

 # cd /mnt/sd1
 # ./a.out

HELLO, ZERO3

とりあえずうごいたっぽいです。
こんないい加減なものでは動作確認にならないかもしれないし、手順とか構築
とかもミスやおかしな点とかあるかもしれないです。
が、とりあえず今日はここまでにします。


ちなみに、本当は、PS3 上の Fedora7 で W-ZERO3 Linux 用の開発環境を構築
してみたかったのですが、やっぱり通りませんでした。
(PS3 Linux Fedora7 install はそれが目的だった)


Readme-ja.txt を参考に miniSD を mount してみました。
内蔵キーボードで長いデバイス名を打つのは大変なので省略しています。

$ mknod /dev/sd b 254 1
$ mkdir /mnt/sd
$ mount /dev/sd /mnt/sd
$ df

Filesystem Size Used Available Use% Mounted on
/dev/sd 1.9G 256.0k 1.9G 0% /mnt/sd

SD にリダイレクトして書き込み → umount → PCで読み出し
等も普通にできました。

$ dmesg

» Read More



2007/07/01
W-ZERO3[es] Linux

W-ZERO3[es] (WS007SH) で動作する Linux が話題になっていたので
起動してみました。驚くほどあっさりと立ち上がりました。
Linux on W-ZERO3

まだカーネルが立ち上がるだけで、Linux が起動したからといって特に何か
できるわけではありません。ファイルシステムもなく、イメージに埋め込まれた
ミニルートで起動しているだけのようです。

ところがそれ故にインストールなど面倒な手順も一切なく、WindowsMobile
側のファイルシステムにも一切手を加えることなく Linux が立ち上がって
しまいます。このお手軽感はちょっとした驚きです。

2007/07/01 現在、起動までの手順は

 ・アーカイブをダウンロードし、カーネルイメージとローダーを \My Documents
  に入れる。
 ・ローダーを起動する。

これだけあっという間に Linux の login: プロンプトが現れます。
WindowsMobile 用のローダーがカーネルイメージを読み込んで、システムの
起動を行っているようです。(起動はあくまで自己責任で)
どのような仕組みで起動しているのかわかりませんが、WindowsMobile
(WindowsCE) 下でエミュレーションで動いているわけではないようです。

root で login すると組み込まれているコマンドの実行が可能です。

キー入力は内蔵のキーボードで行いますが、ASCII (英語) キーボードとして
認識しているようで、一部の記号がキーボード刻印と異なっています。
英語キーボードと日本語キーボードの配列の違いを考えて打てば記号入力も
できます。

例えばよく使うパイプ "|" は [\] の Shift なので、
[SHIFT] を押しながら [Fn]+[-=] (\) で打てます。

コロン ":" は英語キーボードだと [;] の Shift なので
[SHIFT] を押しながら [Fn]+[;,] です。

reboot すると ROM 側 (WindowsCE) が起動し元に戻ります。
時計がリセットされていますが PC とシンクロすれば再設定してくれます。

SDカードにはアクセスできるそうなので、フォーマットして
環境構築したりなども、もしかしたらできるのかもしれません。