【nexus】UbuntuでFirefox OSをビルドしnexusことSC-04Dにインストールする一連の流れ

firefox osイメージ

Firefox OSを愉しむ夕べ


個人的にかなり気になっている携帯向けOS、「Firefox OS」。
遂に日本でもリファレンスモデルであるFlameという端末が発売され、一部界隈で話題を呼んでいるかも知れない・・!
自由度の高さを売りにしているが果たしてどんなOSなのか。

このFirefox OS、いくつかのAndroid端末にインストールすることができるんだ。日本で手に入りやすい端末としては、ドコモのGALAXY nexusことSC-04Dがインストール可能な端末だ。
そこで、今回はFirefox OSをUbuntu環境でビルドしGALAXY nexusにインストールする手順をそれとなく紹介したいんだ。

Firefox OSビルドの環境作りと準備

新しい技術。
どうせなら自分自身で色々試したいじゃない・・。

Firefox OSのビルドを実現するための環境を用意しなければならない・・。
OSとしては使っている人も多いであろうUbuntuがベストだろう。windowsでもがんばればビルド環境を構築できなくもなさそうだが、いかにもめんどくさいのでおとなしくUbuntuでやるのがシンプルだ。
私の環境は下記の通りだ。

・Android端末:GALAXY nexus(SC-04D)
・PC:Ubuntu13.10 64bit

今回の記事はMozilla公式サイトを見ながら行った作業を自分の環境向けにまとめたもの。かなり省略しているところもある。
もし詳しい情報が知りたいとか、上手く進められない箇所があれば公式サイトをチェックしてみよう。

  • Mozilla「Firefox OS」
  •  Firefox OS ビルドの必要条件
  •  初回 B2G ビルドの準備
  •  Boot to Gecko のビルド
  • 準備、特にUbuntuへのツールインストールなど

    まずはUbuntu環境の構築が必要だ。
    公式サイトではPCの必要要件は下記のとおりとなっている。

    ・インストール済みの 64 ビット版 GNU/Linux ディストリビューション ( Ubuntu 12.04 推奨 )
    ・最低 4 GB の RAM 及び スワップ空間 //訳注:2GBのVPSで実績あり
    ・最低 20 GB のハードディスク空間

    つまりメモリが必要なんだ・・
    超ハイスペックPCならばVirtual Boxなどの仮想PC上でUbuntuを動かすという方法もあるかも知れないが、Firefox OSのビルドはなかなか重たい作業。なので仮想PCでは厳しいだろう。
    私の場合はIntel Core i3のwindows8 PCにパーティションを切りUbuntu 13.10をデュアルブートで使えるようにした。それによってPCのスペックを丸々使うことができる。
    Ubuntuセットアップは前回の記事で紹介しているのでやってみたい人は参考にしてみてくれ・・

  • windows8のPCにUbuntuをインストールしデュアルブート環境で使う
  • さぁ、Ubuntuの「端末」もしくは「ターミナル」を起動しコマンドを実行していこう!
    今回は基本、Ubuntuのsudo(ほぼ管理者権限)で作業するんだ!

    Ubuntu13.10の場合は64bit PCで32bitのツールを使えるようにするために下記コマンドを実行する。その後必要なツールをインストールする。

    sudo dpkg –add-architecture i386
    sudo apt-get update

    続いてビルドに必要なツールたちをインストールする。下記コマンドは複数のツールをスペースで区切ってまとめてインストールするコマンドだが、上手くインストールできなければひとつずつインストールしてみよう。ちなみに改行せずに一行で実行しよう。

    sudo apt-get install –no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip libxml2-utils

    さらにgcc、g++も設定する。

    sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.6 1
    sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.8 2
    sudo update-alternatives –install /usr/bin/g++ g++ /usr/bin/g++-4.6 1
    sudo update-alternatives –install /usr/bin/g++ g++ /usr/bin/g++-4.8 2
    sudo update-alternatives –set gcc “/usr/bin/gcc-4.6”
    sudo update-alternatives –set g++ “/usr/bin/g++-4.6”

    次はやっぱり必要なjavaをインストールする。Oracleのサイトからダウンロードしてインストールする方法もあるが、要会員登録で勤務先の電話番号必須とかめんどくさいことになっているので私はopenjdkを使った。

    sudo apt-get install openjdk-6-jre-headless

    Android SDKもインストールしておく必要があるが、Ubuntu向けインストール方法はまた今度紹介するよ。

    ccacheを3GBに設定。余計なことは考えず、ここは公式サイトの指示に従う。

    ccache –max-size 3GB

    作業中に高確率でエラーが出るのであらかじめandroid.rules(udevルール)を作成しておこうね。adb用に「android.rules」、そしてfastboot用に「51-android.rules」を作成。これを作っておくことで「waiting for device」で処理が止まったりGALAXY nexusが認識されないトラブルが減る。ファイルを作成したらそれぞれの属性も設定する。

    sudo touch /etc/udev/rules.d/android.rules
    sudo touch /etc/udev/rules.d/51-android.rules
    sudo chmod a+r /etc/udev/rules.d/android.rules
    sudo chmod a+r /etc/udev/rules.d/51-android.rules

    android.rulesと51-android.rulesはviコマンドなどを駆使し、GALAXY nexus向けにそれぞれ下記の内容を追記して保存する。

    SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, MODE=”0666″, GROUP=”plugdev”

    udevを再起動。

    sudo service udev restart

    ゴタゴタして非常にややこしいが、ここまで準備できればビルド、インストールまでもう少しだ!!

    GALAXY nexusのバックアップ、そしてUbuntuへ接続

    作業の前に必ずGALAXY nexusのバックアップを取っておこう。
    CWMをインストールしてあるならCWMで保存し、バックアップしたデータをPCにコピーしておくのが一番手っ取り早い。
    Firefox OSをインストールしてもリカバリまでは変更されない(はず)なので失敗しても復旧できる可能性が高まる。

    言わずもがな当然のことだが、GALAXY nexusのUSBデバッグをオンにしておく。
    そしてさらに言わずもがな当然だがGALAXY nexus自体のブートローダーアンロックしておく必要がある。
    手順は以前の記事を参考にしてくれ。

  • 【nexus】Android4.2なSC-04Dのブートローダーアンロック手順
  • そしてGALAXY nexusをUSBケーブルで接続する。adb devicesコマンドでGALAXY nexusが認識されているかテストしてみよう。

    adb devices

    端末が表示されなければAndroid SDKとGALAXY nexusの設定を見直そう。

    ソースコード取得からビルドへ

    GITコマンドでデータを準備。揃うまでに時間がかかる。

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

    B2Gディレクトリへ移動し、config.shを実行すると標準で対応している端末を確認できる。
    まぁ今回はGALAXY nexus(SC-04D)を使うので「galaxy-nexus」を指定しconfigを実行する。またまた時間がかかるぞ!

    cd B2G
    ./config.sh galaxy-nexus

    途中でネットワークが切断されると失敗したりする可能性があるので、PCのスリープなどに要注意だ。

    念の為gitとrepoを更新する。

    git pull
    ./repo sync

    さぁいよいよビルドだ。
    ビルドの際に並列処理をどれだけ使うかを指定できる。私のPCはcore i3なのでとりあえずj2で実行してみた。

    ./build.sh -j2

    これまた時間がかかるでこりゃあぁぁ・・。公式サイトではコーヒータイムを推奨しているが、ディナータイムくらいは時間がかかるぞ。静かにその時を待とう・・。

    無事にビルドが完了したら、いよいよnexusにflashするぞ・・
    GALAXY nexusの電源を一度オフにし、fastbootモードで起動しPCと接続。Firefox OSをインストールすると当然のことながらAndroidのデータは全て消え去る。バックアップは忘れずに!

    準備ができたら遂にflashだ・・ッ!

    ./flash.sh

    無事にflashできれば、しばらくしてFirefox OSが起動するはずだ。

    Firefox OSの雰囲気

    これがFirefox OS起動の瞬間だ・・

    Firefox OS

    初っ端からMozillaの文字が・・

    ロック画面はこんな感じ。

    Firefox OS

    画面下部が乱れとるやないかッ!

    そしてメイン画面。

    Firefox OS

    アイコンは何気に3列サイズと4列サイズで選ぶことができる

    Marketplaceからアプリを追加できる・・はず。

    Firefox OS

    否が応にも期待は高まる!!

    いつもの一言

    今回初めてビルドとかをやってみたけど、もうちょっとがんばったらカスタムROMなんかを作れるようになるのだろうか。

    さて、インストールしたFirefox OSは「Boot2Gecko 2.1.0.0-prerelease」、現状最新のバージョンだ。
    ブラウザとかアプリとか使ってみようかともおもったけど、WiFiはなぜかWPA2非対応。ルーターの設定を変えるのがめんどくさくて諦めちゃった。だがテザリングはWPA2で飛ばせる。
    正直快適動作ではない。でもマルチタスクで動作しているっぽいが、画面の左端/右端スワイプでタスクを切り替えられるのは地味に便利だと思った。

    ちなみに起動は激速だった・・!

    普段使用しているドコモSIMカードも挿してみたが、残念ながら電波を掴まなかった。この辺はOSビルド時の何かしらで何とかなるかも知れない。
    nexus4やnexus5なら動作はさくさく快適なのかな?
    もしくはFlameなどの元々Firefox OSのために作られている端末はいいかも知れない。
    Flame気になるなぁ。

    全体的には、最新のAndroidと比較するとはっきり言って相当な遅れを感じる完成度だ。
    つまり製品化に期待だ!!
    頼むぜau・・

    最近の記事