Firefox OS カスタマイズ – 起動ロゴを変えてみる

Firefox OSのカスタマイズをやってみなさいと天の声があったので、調べていると簡単に起動ロゴを変えられるとのこと。
勉強会で発表されていたsolaさんのブログに書いてありました。こちら

Firefox OSのロゴを利用するのは基本的にフリーっぽいんですが、改変したらダメだよー、並べるときは火狐→文字の順だよー、など規約があるようで、そのへんは守りつつ・・・NexusSの画面サイズの480×800の起動ロゴ画像を作成して差し替えてみます。
ロゴの規約と素材が公式サイトにあります。こちら

で、作成した画像がこちら!
logo2

さて、画像の差し替え方法ですが、solaさんのブログによると、ファイルを環境に置いてビルドすればいいだけという簡単仕様のようです。

前回のビルド手順で作成した、ビルド環境のB2Gディレクトリに移動します。
ここに、gaiaというディレクトリが出来ていると思います。

Firefox OSは3つのレイヤーで構成されていて、gaiaはUIの描画を行う最上位レイヤーです。

差し替え手順
作成画像がホームディレクトリに置いてあると仮定しています。

$ cd B2G
$ mkdir -p gaia/apps/system/resources/power
$ cp -p ~/logo.png gaia/apps/system/resources/power/carrier_power_on.png
$ ./build.sh
$ sudo ./flash.sh

キャリアごとのブートアニメーションなんかが簡単に設定できるようになっているんですねー
次回はホームスクリーンを変更する方法について書こうと思います。

Share

Firefox OS ビルド for NexusS

先日、TizenとFirefoxOSの合同勉強会に参加して以来、FirefoxOSに盛り上がりを感じている今日このごろです。

今回はNexusSが手元にあったので、FirefoxOSを焼いてみることにしました。
NexusSは公式にサポートされているので、簡単に焼くことができました。
前回、石原が挑戦した環境はUbuntu12.04でしたが、自分の環境はUbuntu12.10 64bitなので、ちょっとつまづいた部分もあり、その辺りも交えて手順を書いて行こうと思います。

環境構築
Ubuntu12.10に必要なツールをインストールします。
環境構築に関しては、こちらを参考に。

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

gccとg++がバージョン4.7だと、ビルドエラーが出てしまいます。
gccは4.6に変えて大丈夫!と思っていたらg++も4.6にしないといけなくて、数時間無駄にしましたorz
ちなみに既知のエラーとして、公式サイトにも記載されています。こちら

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 110
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 100
$ sudo update-alternatives --config gcc
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.7 110
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 100
$ sudo update-alternatives --config g++

自分の環境は64bitなので、上記に加えてライブラリの参照先も変えないといけません。

$ 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

取得できたら、B2Gディレクトリが作成されているので、中に入ります!

$ cd B2G

ビルド
まずは、ターゲットに併せてコンフィギュレーションを行います。コンフィギュレーションで必要なパッケージがダウンロードされるようです。基本的に全てシェルを実行するだけです。
今回はNexusS向けのビルドを行うので、nexus-sを指定。

$ ./config.sh nexus-s

毎日なにかしらリポジトリが更新されているようです。タイミングによってはパッケージが見つからずエラーになったりしました・・・
そんな時は、コーヒーでも飲みながら少し時間を起きましょう。日を改めるという忍耐力も必要です:P
大抵はエラーも無く終わるはずです。

では、ビルドを開始しましょう。

$ ./build.sh

./build.sh -j1で並列ビルドをしないようにすることを推奨しているみたいですが、指定無しでも大丈夫でした。

焼き込み
NexusSを音量大+電源ボタンでFASTBOOTモードで起動し、USB接続します。
焼き込みもシェルが用意されているので、実行します。焼き込みだけは管理者権限が必要です。

$ sudo ./flash.sh

自動でBootLoaderのUnlockからRebootまで行なってくれます。

気づいたときにはFirefoxOSが起動しているはずです。

Share

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