CHIRIMENボード用B2Gをビルドします。

この記事は『CHRIMEN Open Hardware Advent Calendar 2016』 8日目の記事です。
CHIRIMEN ボード「Echigo Rev.1」のB2G のビルド作業をまとめてみました。

実施環境

 
今回のビルドマシンのスペックは下記の通り。

  • メーカー : マウスコンピュータ LuvBook S210X
  • OS : Ubuntu 16.10 64bit
  • CPU : インテル(R) Core(TM) i7-2640M プロセッサー (2コア/2.80GHz/TB時最大3.50GHz/4MBキャッシュ/HT対応)
  • メモリ : 16GB メモリ [ 8GB×2 (DDR3 SO-DIMM PC3-10600) ]
  • SSD : 500GB SATA 2.5inch
  • マザーボード : インテル(R) HM65 Express チップセット
  • VGA : インテル(R) HD グラフィックス 3000
  • 3.5ドライブベイ : 4メディア対応マルチカードリーダー(内蔵)
  • SOUND : [オンボード] ハイ・ディフィニション(HD)オーディオ
  • スピーカー : スピーカー内蔵
  • 液晶 : 11.6型ワイド (1366×768) 光沢液晶ディスプレイ
  • LAN : [オンボード] 10/100/1000BASE-T GigaBit-Ethernet LAN
  • 拡張カード1 : IEEE802.11 b/g/n対応 & Bluetooth(R) V3.0 + HS 準拠モジュール


上記マシンにViruaboxにゲスト OS : Ubuntu 14.04 LTS を構築しました。
Ubuntu 上に何故わざわざ仮想環境の Ubuntu を?と云う疑問は後程説明します。

事前準備

 
自分の PC の環境は、手前味噌で恐縮ですが下記リポジトリにまとめました。
gurezo/ubuntu_setup_dev

ホストOS : Ubuntu 16.10 64bit は、上記手順で構築しています。

ゲストOS : Ubuntu 14.04 LTS 64bit の環境に関する情報は、下記の通りです。
ここでポイントなのが仮想環境のディスク容量を 80GB にする事です。

ビルドの際にハードディスク空き領域が、最低 40GB とありますが、実際にやってみて
80GB で、無事にビルドが終了しました。


ゲストOS : Ubuntu 14.04 LTS 64bit は、B2G OS ビルドの必要条件 の手順で構築しています。

上記手順に加え、下記手順を行っています。
ubuntu_setup_dev/setup-adb.md
この手順は、CHIRIMEN ボード「Echigo Rev.1」を OS に認識させる為の手順です。

このバージョンにした理由は、個人的に環境構築での手間が少ない事や
確実性が一番高いと考えたからです。

ビルド

 
CHIRIMEN 用 B2G をクローンします。

 $ git clone https://github.com/chirimen-oh/B2G.git


B2G へ移動し、”config.sh デバイス名” を実行します。

 $ cd ~/B2G
 $ ./config.sh chirimen


ここからPCの環境にもよりますが、かなりの時間を要します。
参考値で、この PC では、4時間38分かかりました。
config.sh が終了し、いよいよビルドを行います。
“build.sh” を実行します。

 $ ./build.sh -j1

ビルドオプションに関しては、下記手順で確認して下さい。

 $ ./build.sh -h
 使い方: make [オプション] [ターゲット] …
 オプション:
   -b, -m                      互換性のためのもので, 無視される.
   -B, –always-make           無条件に全ターゲットを make する.
   -C DIRECTORY, –directory=DIRECTORY
                               make 開始前にディレクトリ DIRECTORY へ移動する.
   -d                          デバッグ情報を大量に表示する.
   –debug[=FLAGS]             様々なタイプのデバッグ情報を表示する.
   -e, –environment-overrides
                               環境変数が makefile 中の記述に優先する
   -f FILE, –file=FILE, –makefile=FILE
                               FILE を makefile として読み込む
   -h, –help                  このメッセージを表示して終了する.
   -i, –ignore-errors         コマンドから返されたエラーを無視する.
   -I DIRECTORY, –include-dir=DIRECTORY
                               Search DIRECTORY for included makefiles.
                               インクルードする makefile を探索する DIRECTORY.
   -j [N], –jobs[=N]          一度に N 個までのジョブを許可; 無引数だとジョブ数制限なし.
   -k, –keep-going            あるターゲットが make できなくても実行を続ける.
   -l [N], –load-average[=N], –max-load[=N]
                               負荷 が N 未満でない限り複数のジョブを開始しない.
   -L, –check-symlink-times   シンボリックリンクとターゲットの中で一番新しい mtime を使う.
   -n, –just-print, –dry-run, –recon
                               コマンドを実際に実行しない; 表示するのみ.
   -o FILE, –old-file=FILE, –assume-old=FILE
                               FILE をとても古いものと見なして, 再 make しない.
   -p, –print-data-base       make の内部データベースを表示する.
   -q, –question              コマンドを実行しない; 更新済であるかどうかを終了ステータスで通知.
   -r, –no-builtin-rules      ビルトインの暗黙ルールを無効にする.
   -R, –no-builtin-variables  ビルトインの変数設定を無効にする.
   -s, –silent, –quiet       コマンド表示をエコーしない.
   -S, –no-keep-going, –stop
                               -k オプションをオフにする.
   -t, –touch                 ターゲットを再 make する代わりにタッチする.
   -v, –version               make のバージョン番号を表示して終了する.
   -w, –print-directory       カレントディレクトリを表示する.
   –no-print-directory        -w をオフにする. 暗黙に有効な場合でもオフにする.
   -W FILE, –what-if=FILE, –new-file=FILE, –assume-new=FILE
                               FILE をいつでも最新として見なす.
   –warn-undefined-variables  未定義の変数が参照されたときに警告を発する.
 
 このプログラムは x86_64-pc-linux-gnu 用にビルドされました
 バグレポートは まで.
 
 real    0m0.012s
 user    0m0.000s
 sys    0m0.002s
 Run |./flash.sh| to flash all partitions of your device
 chirimen@chirimen-s210x:~/B2G$

config.sh 同様にここからPCの環境にもよりますが、かなりの時間を要します。
参考値で、この PC では、6時間4分かかりました。

ビルドが正常終了すると下図のようになります。

~/B2G/out/target/product/chirimen/配下にビルドされたイメージが出来ます。

イメージをまとめる

 
ビルドされたイメージをまとめる作業を行います。
最初に kernel.img を生成します。

 $ cd ~/B2G
 $ ./flash.sh chirimen
 TARGET_PRODUCT=chirimen
 TARGET_HARDWARE=rk30board
 system filesysystem is ext4
 create boot.img without kernel… done.
 create recovery.img with kernel… done.
 create misc.img…. done.
 create system.img… done.
 CRC32=0xA93A8523
 OK
 $ cd rockdev/Image/

次にCHIRIMEN-tools をクローンし、「rockdev-rk3066」へ移動します。

 $ git clone https://github.com/chirimen-oh/CHIRIMEN-tools.git
 $ cd ~/CHIRIMEN-tools/rockdev-rk3066

~/B2G/rockdev/Image/の以下のファイルを~/CHIRIMEN-tools/rockdev-rk3066/image/へコピーします。
イメージファイル:boot.img,kernel.img,recovery.img,system.img

mkupdate.sh を実行し、イメージをまとめます

 $ cd ~/CHIRIMEN-tools/rockdev-rk3066/
 $ ./mkupdate.sh

「update.img」ファイルが上図のように~/CHIRIMEN-tools/rockdev-rk3066/に生成されます。
以上で、手順は終了です。

まとめ

 
今回ビルド環境のバージョンで仮想環境に構築したのは確実な手順にしたかったのと仮想環境であれば、
何らかの形で仮想環境ファイル(vdi ファイル)を配布出来るのではないかと考えた次第です。

仮想環境のファイルサイズが 80GB となってしまった為に配布に関しては
現時点は見送りになっています。

ご覧になった皆さんがビルド挑戦の手助けになれば幸いです。

今年のAdvent Calendar

去年のAdvent Calendar

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です