ブログネタ
FirefoxOS に参加中!
4/23 に Keon と Peak と注文したが、
未だに発送連絡が来ないので Nexus S を Firefox OS 端末にしてみた。
内容としては過去の Firefox OS 関連のネタを整理して、
HVGA 以上の解像度の端末向けにビルドする設定を追加したもの。

Firefox OS のビルド環境作成
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
    $ 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
  • JDK のインストール
  • oracle のサイトに行く。
    http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html
    jdk-6u45-linux-x64.bin をダウンロードする。
    (Update 45 より新しいバージョンがあれば、それを使用して下さい。その場合、以降の 45 の部分を変更して下さい。)
    ここではホームディレクトリ直下にダウンロード&展開するものとして扱う。
    $ cd ~/
    $ chmod a+x jdk-6u45-linux-x64.bin
    $ ./jdk-6u45-linux-x64.bin
  • 環境変数の設定
  • ~/.bashrc に以下を追加する。
    export JAVA_HOME=~/jdk1.6.0_45
    export PATH=$PATH:$JAVA_HOME/bin
    export ANDROID_JAVA_HOME=$JAVA_HOME
    export PATH=$PATH:~/bin
    追加後、読み直すか再起動する。
    読み直す場合は以下のコマンドを実行する。
    $ source ~/.bashrc
  • Android SDK のインストール(adb と fastboot コマンドを使うため)
  • $ cd ~/
    $ wget http://dl.google.com/android/android-sdk_r21-linux.tgz
    $ tar zxvf android-sdk_r21-linux.tgz
    $ ./android-sdk-linux/tools/android update sdk -u -t tool,platform-tool
    ~/.bashrc に以下の1行を追加する。
    export PATH=$PATH:~/android-sdk-linux/platform-tools
    これは platform-tools へのパスを設定するために行う。
    追加後、読み直す。
    $ source ~/.bashrc
  • USB の設定
  • Android 端末と PC を繋ぐための設定
    /etc/udev/rules.d/51-android.rules を作成して、以下の2行を書く。
    SUBSYSTEM=="usb", ATTRS{idVendor}=="####:####", SYMLINK+="android_adb", MODE="0666" GROUP="plugdev"
    TEST=="/var/run/ConsoleKit/database", RUN+="udev-acl --action=$env{action} --device=$env{DEVNAME}"
    追記後、次のコマンドを実行する。
    $ sudo /etc/init.d/udev restart
    USB ケーブルを接続してる場合、一度抜き差しする。

Firefox OS のソースコードをダウンロード
  • 作業用のフォルダを作成する(場所はホーム直下でなくて良い)
  • $ mkdir ~/b2g_work
    $ export B2G_WORK=~/b2g_work
  • ソースコードの取得
  • $ cd $B2G_WORK
    $ git clone git://github.com/mozilla-b2g/B2G.git
    $ cd B2G
    $ ./config.sh nexus-s
高解像度のディスプレイ(HVGAよりも大きなもの)に対応する
  • gaia を master ブランチに変更
  • $ cd $B2G_WORK/B2G/gaia
    $ git checkout -b master mozillaorg/master
  • 高解像度用にビルドするために環境変数を設定する
  • export HIDPI=1
日本語データの取得と設定
  • mercurial のインストール
  • $ sudo apt-get install mercurial
  • 日本語データの取得と設定
  • $ cd $B2G_WORK
    $ hg clone http://hg.mozilla.org/gaia-l10n/ja gaia-l10n/ja
    $ export LOCALE_BASEDIR=$PWD/gaia-l10n
    $ wget http://sola-dolphin-1.net/data/B2G/source/languages-japan.json -O $PWD/B2G/gaia/shared/resources/languages-japan.json
    ※languages-japan.json は英語と日本語のみを定義したファイル。
    $ export LOCALES_FILE=$PWD/B2G/gaia/shared/resources/languages-japan.json
    $ hg clone http://hg.mozilla.org/l10n-central/ja gecko-l10n/ja
    $ export L10NBASEDIR=$PWD/gecko-l10n
    $ export MOZ_CHROME_MULTILOCALE="ja"
    ※MOZ_CHROME_MULTILOCALE には追加するものを記述する。
    今回追加するのは日本語のみなので、ja だけを記述した。
    $ hg clone http://hg.mozilla.org/build/compare-locales
    $ export PATH="$PATH:$PWD/compare-locales/scripts"
    $ export PYTHONPATH="$PWD/compare-locales/lib"
スクリーンキャプチャの修正、official ビルドへの変更、日本語フォントの追加、日本語辞書の設定
  • スクリーンキャプチャの修正
  • DDMSでスクリーンキャプチャを撮ると色が狂っているので修正する。
    $ cd $B2G_WORK/B2G/external/screencap-gonk
    $ wget http://sola-dolphin-1.net/data/B2G/patch/0001-fix-screencap.patch
    $ git apply 0001-fix-screencap.patch
  • official ビルドへの変更
  • gaia/Makefile に MOZILLA_OFFICIAL=1 を追加する。
    ※MOZILLA_OFFICIAL を参照してる箇所の前に書く事。
    $ cd $B2G_WORK/B2G/gaia
    $ wget http://sola-dolphin-1.net/data/B2G/patch/0001-change-official-build.patch
    $ git apply 0001-change-official-build.patch
  • 日本語フォントを追加する
  • 標準だと中華フォントしかないので、Android(AOSP)にあるフォントを使う。
    $ cd $B2G_WORK/B2G/build
    $ wget http://sola-dolphin-1.net/data/B2G/patch/0001-build_Add-Japanese-font.patch
    $ git apply 0001-build_Add-Japanese-font.patch
    $ cd $B2G_WORK/B2G/external/moztt
    $ wget http://sola-dolphin-1.net/data/B2G/patch/0001-moztt_Add-Japanese-font.patch
    $ git apply 0001-moztt_Add-Japanese-font.patch
  • 日本語辞書の設定
  • 辞書を http://sourceforge.jp/projects/naist-jdic/releases/ からダウンロードする。
    ダウンロードするファイルは naist-jdic-0.4.3.tar.gz とする。
    ダウンロード先は $B2G_WORK とする。ダウンロード後、以下を実行。
    $ cd $B2G_WORK
    $ tar zxvf naist-jdic-0.4.3.tar.gz
    $ cd $B2G_WORK/B2G/gaia/apps/keyboard/js/imes/jskanji/dict
    $ mkdir ipadic
    $ cp $B2G_WORK/naist-jdic-0.4.3/naist-jdic.dic ipadic/
    $ make json
FirefoxOS のビルドと Nexus S への書き込み
  • Firefox OS のビルド
  • $ cd $B2G_WORK/B2G
    $ ./build.sh
  • Nexus S への書き込み&起動
  • $ cd $B2G_WORK/B2G
    $ fastboot flash boot out/target/product/crespo/boot.img
    $ fastboot flash system out/target/product/crespo/system.img
    $ fastboot flash userdata out/target/product/crespo/userdata.img
    $ fastboot reboot
Nexus S で Firefox OS が動作してる様子
device-2013-05-08-011750device-2013-05-08-005635device-2013-05-08-005654device-2013-05-08-005708device-2013-05-08-005723device-2013-05-08-005729device-2013-05-08-005804device-2013-05-08-010129
WiFi、BT、カメラ、音楽・動画再生は出来ている。
日本語も使えます。

Firefox OS for Nexus S のイメージ
今回作成したイメージを置いておくので、
試したい人はダウンロードして fastboot コマンドを使用して書き込んでください。
$ wget http://sola-dolphin-1.net/data/B2G/image/nexus-s/boot.img
$ wget http://sola-dolphin-1.net/data/B2G/image/nexus-s/system.img
$ wget http://sola-dolphin-1.net/data/B2G/image/nexus-s/userdata.img
$ adb reboot bootloader
$ fastboot flash boot boot.img
$ fastboot flash system system.img
$ fastboot flash userdata userdata.img
$ fastboot reboot
ネットワークに接続するとアップデート通知が来るが、
mozilla からのものなので適用しない。(このブログで変更してる内容は全て消える)

最後に
Keon と Peak が発送されないのは多分代引にしたせいな気がしている。
代引は負け組だった...