JCROMのビルド

@androidsolaさんが作成されたJCROMを仮想環境でビルドしてみました。

JCROMはある種の特化がされたカスタムROMです。5/5現在Galaxy Nexus(GN)及びGalaxyS用が公開されています。私が今回行ったのは、Galaxy Nexusの国内版、SC-04D向けのビルドとROM焼きです。

結論から先に書きますと、今までOSのビルドは尻込みしていた口でしたが、ビルドだけなら難しいものではないなということがわかりました。「テーマ」というハードルが低い遊び心(というか本命)もありますし、初めて試すカスタムROMとしては敷居が低いのではないかと思います。

半分は自分用の備忘です。
詳細な手順はJCROM Projectのページを確認いただくと確認できます。
ただ、最低限のLinux(Ubuntu)の使い方を把握していないと、単語レベルで理解できないかもです。

・仮想環境のプラットフォーム:WinXP SP3の上にVirtual Boxの最新版を入れて、その上に作りました。
・仮想環境:CPU 1コアないし2コア、実メモリ1GB→メモリ不足になることがわかったので2GBに。プラスUbuntuのswapが1GBで計3GB分のメモリ空間を用意。HDDは50GB。(で、最新の今の使用率が60%弱なので、30GBだとギリギリきつい)
・OS:Ubuntu 12.04 Server

手順は基本的に、https://sites.google.com/site/jcromproject/home/jcrom_build/galaxynexus/for_sc04dをなぞる形です。
ただ、この手順の中で嵌まる箇所があるのでそこだけ追記します。

・以下の理由から、adb及びfastbootの2コマンドを事前に作成する必要があります。
  ・adb及びfastbootは、Android SDKそのものには含まれていない。(追加で「platform-tools」を入れないとダメ)
  ・platform-toolsを入れるためには、GUIで指定しなければならない
  ・Ubuntu Serverでは、追加でX等を入れない限りGUIが使用できない
 で対処法ですが、2つ。

 ・対処方法1
  Android SDK(これはhttp://developer.android.com/sdk/index.htmlからダウンロードできる)の中にある「android」コマンドを実行し、GUIなしでSDKを起動する。コマンドは「android update sdk –no-ui」。(参考:Is there a way to automate the android sdk installation? – Stack Overflow
  (@3rddoorさん&@zaki50さん、どうもありがとうございます)
    →欠点:目的のもの以外の諸々もインストールされる。platform-toolsのインストール処理は序盤にあるので、それが終わった段階でkillするのも可。

    →(2013/02/16追記)次のコマンドで、platform-toolをピンポイントでダウンロードできます。(https://github.com/ruboto/ruboto/wiki/Environment-setup-for-ubuntu等を参照)

android update sdk -u -t platform-tool


 ・対処方法2
  事前に別の(Ubuntuの)環境でビルド済みのadbとfastbootをコピる。
    →ものが用意できるのであれば、こっちが楽。

効率を別にすれば、1つ目は前提環境が不要な分、確実です。ただ最後まで完走させると時間と容量は食います。

他に嵌まったこととしまして、手順の中に「make -j8」とあって、これはつまり8並列でプロセスを起動してビルドするって意味の指定なんですが、上記で用意した仮想環境だとメモリ不足で死にます。
2並列で実メモリ1GB+swap1GB(つまり計2GB)では、ある程度まで進んだところでメモリ不足でmakeが強制終了しました。これを実メモリ2GB+swap1GBにしたら、落ちずに完走できました。
この体験上からは、Ubuntu Serverで2並列でビルドするときは3GBあれば足ります。(物理1GB+swap2GBでもいけるとは思いますが、I/O waitがひどいことになると思います)

あと、伝え聞く他の方の環境に比べると、CPUもメモリも貧弱なのでかなり遅いです。自分が使った環境ではだいたい8時間〜9時間コースです。ただ、1度ビルドしたあとにJCROMの更新があって再ビルドする場合は差分のビルドで済むので、割と現実的な時間で終わります(シャワーに入って出てきたら終わっていたので30分ぐらい?)。

他に注意点として、SC-04Dからファイルを吸い出すときやROMをSC-04Dへ焼き込むときにadbやfastbootを使うのですが、これでちと嵌まった箇所をば。
 ・USBのつなぎ方は、WinXPにUSBケーブルでSC-04Dを接続して(Win用の)ドライバの対応(ドライバが見つからなくてもいいです)。そのあと、仮想マシンのデバイスからUSB欄の「Android関係」を有効にします。
 ・Ubuntuから見えていることを確認するためには、起動中であれば「adb devices」を、リカバリモードであれば「fastboot devices」で死活確認を行ってください。うまく見えなかったら、ケーブルの抜き差しやadb kill-server→start-serverが有効かも。
 ・自分の環境ではビルドで何かしくったのかroot権限でしかfastbootが実行できませんでした。ですので上記のコマンドは「sudo [fastbootのパス]/fastboot devices」になります。

他、よくわからないところがあればコメントかTwitterで@rkisatoまで投げていただくか、完璧を求めるなら@androidsolaさんにお問い合わせするとよいと思います。
なかなか面白いものなので、GNかGSをお持ちの諸氏はお試しを!

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください