Articles tagged with: Firefox OS

Firefox OS ビルド for Panda board

こんにちは。アスカ・クリエイションの石原です。

今回はPanda board向けにFirefox OSをビルドすることに挑戦したいと思います。

前回のエミュレータビルドで開発環境が構築できていることを前提に進めたいと思います。

まず、Panda boardを開発マシンにUSBで接続するためにudevルールを追加します。これはAndroidのソースビルドで追加した手順と同じです。

/etc/udev/rules.d/に51-android.rulesを作成し、以下の内容を書き込みます。OWNERは開発マシンにログインしているユーザー名で良いようです。

# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="ishihara"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="ishihara"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="ishihara"
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="ishihara"

 

さらに、Panda board向けにビルドするには以下のパッケージをビルドマシンに導入する必要がありますのでインストールしておきます。

$ sudo apt-get install libnspr4-dev

 

次にビルドターゲットをPanda boardに設定します。前回取得したソースツリーに移動し、以下を実行します。

$ cd B2G
$ ./config.sh pandaboard

 

これが初期のソース取得でなければ、以下のコマンドでソースツリー全体を更新できます。

git pull
./repo sync

 

ソースツリーが更新されるまでしばらく待ちます。無事完了したらビルドを実行します。

$ ./build.sh -j4

 

しかし、ここでエラーになりました。imgtec-panda-imm76i-67545da7.tgzというファイルのチェックサムエラーのようです。これはプロプライエタリなグラフィックスドライバのファイルで、Androidのソースビルド時にも手動で追加していましたので見覚えがあります。ですが、現在Googleのサイト上(https://developers.google.com/android/nexus/drivers#panda)で公開されているこのドライバファイルはファイル名が変わっていますので、修正します。

~/B2G/device/ti/panda/download-blobs.shの「PANDA_BLOBS=”imgtec-panda-imm76i-67545da7.tgz”」をコメントアウトし以下の様に書き換えます。

#PANDA_BLOBS=”imgtec-panda-imm76i-67545da7.tgz”
PANDA_BLOBS=”imgtec-panda-20120430-67545da7.tgz”

ファイル名を変更しただけではチェックサムがえらーになるので、~/B2G/device/ti/panda/blob-shasums のファイル名も書き換えます。なお、書式はsha-1チェックサム、スペース、?、ファイル名ですので、前述のGoogleのドライバサイトより別のドライバファイルを使用したいときは、download-blobs.shとblob-shasumsのファイル名及び、チェックサムの値を書き換えることで対応できるようです。

* 2013/4/26現在の最新ソースコードでは上記の不具合は修正済みとなっておりました。

さて、ビルドが無事通りましたら、いよいよPanda boardに焼き込んでみます。

焼き込む手順はAndroidをソースビルドして焼いたときと同じような手順を踏みます。

まず、fastbootをビルドします。

$ source build/envsetup.sh
$ lunch full_panda-userdebug
$ make fastboot

 

Panda boardに電源ケーブルやマウス、キーボード、ディスプレイ、miniUSBケーブルで開発PCと接続し、SDカードを外した状態で以下を実行します。

$ device/ti/panda/usbboot device/ti/panda/bootloader.bin

 

次に、SDカードを挿入し、以下を実行します。

$ fastboot oem format
$ fastboot flash xloader device/ti/panda/xloader.bin
$ fastboot flash bootloader device/ti/panda/bootloader.bin
ここまで正常に完了したら以下のコマンドで実際に焼き込みます。
$ ./flash.sh

 

書き込みが無事終わったら電源を入れ直して再起動します。

2013-04-26_12-15-51_787

 

起動しましたが、画面の向きが縦になっており、キーボードやマウスが効かないようです。少し調整が必要そうですね。

今回はここまでです。

 

Share

Firefox OS ビルド

こんにちは。アスカ・クリエイション 石原繁彦です。

今回は最近、巷を賑わせているFirefox OSのビルドに挑戦したいと思います。

オフィシャルな開発者向けのドキュメントはMDN(Mozilla Developer Network)のページにまとまっていますので、これを参考にやってみようと思います。

https://developer.mozilla.org/ja/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites

まずは、開発環境を確認します。

サポートされているターゲットデバイスは以下の物のようです。

  • Unagi(開発用スマホ)      - Firefox OSの開発者の多くが使用
  • Otoro(開発者用スマホ)   - Firefox OSの開発者の多くが使用
  • Panda Board
  • エミュレータ(x86/ARM)
  • デスクトップ(PC上でのアプリ実行環境)
  • Samsung Nexus S          - 大抵の機能が動作
  • Samsung Nexus S 4G    - 大抵の機能が動作
  • Samsung Galaxy S2       – あまり活発に開発されてない
  • Samsung Galaxy Nexus – あまり活発に開発されてない

まずは第一段階としてARMエミュレータをビルドしてみようと思います。

ビルド環境はLinuxの場合、以下が推奨されています。また、Mac OS Xでもビルドできる様です。Windowsはサポートされていません。

  • Ubuntu 12.04 64bit版
  • 4GB RAM
  • 20GB以上のHDD空き容量

今回はUbuntu 12.04 64bitで作業します。

必要なツール群をインストールします。

$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make

 

オフィシャルなドキュメントによれば場合によって以下のシンボリックリンクを作成するとなっていますが、私の環境では以前にAndroidをビルドできる環境にしたためか、すでにシンボリックリンクがありましたので、今回はこの手順を省いて進んでみました。

$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

 

ソースを取得します。

$ git clone git://github.com/mozilla-b2g/B2G.git
$ cd B2G

 

ビルド構成を設定します。今回はARMのエミュレータをビルドするのでemulatorを指定します。なお、引数を指定しなければサポートされるデバイスの一覧が表示されます。

$ ./config.sh 
Usage: ./config.sh (device name)

Valid devices to configure are:
- galaxy-s2
- galaxy-nexus
- nexus-s
- nexus-s-4g
- otoro
- unagi
- inari
- keon
- pandaboard
- emulator
- emulator-x86
$ ./config.sh emulator

 

オフィシャルのドキュメントには書いてありませんでしたが、inariやkeonといったデバイスもサポートしているようです。

ここでソースが取得されます。かなり時間がかかりますので、しばらく待ちます。

ソースの取得が完了したら、ビルドします。なお、-jオプションで並列ビルド可能です。

$ ./build.sh -j4

 

無事ビルドが終わったらエミュレータを起動してみます。

$ ./run-emulator.sh

Screenshot_from_2013-03-22 19:13:03

Screenshot_from_2013-03-22 19:15:25

思ったよりすんなりいきました。数ヶ月前に行ったときはビルドが通りませんでしたが、開発が進んでいるようです。

今回はここまでにします。次回はPanda Boardで動かすことに挑戦しようと思います。

Share