[[bc10]]

[[bc10/ソフトウェア]]

- 目次
#contents

* bc10用 android-2.3.2_r1 の概要 [#pa31d611]
bc10 向けに修正を加えた android-2.3.2_r1 の作成について記述します。~

作業の流れは以下のとおりです。~

 android-2.3.2_r1 のビルド環境作成 -> ソースコード取得 -> bc10用変更の追加 -> SGX SDK のインストール

COLOR(red){現在調整中: センサーなど一部デバイスに調整中の箇所がありますため、予告無く更新することがあります。予めご了承ください。}~

* ビルド環境 [#w4edb4d1]
今回の環境は以下のようになります。~
-OS: Ubuntu 10.04(64bit版)~
-JAVA:  java 1.6x ~
-Android Version: android-2.3.2_r1

COLOR(red){Android 2.3(codename Gingerbread)以降をビルドするには 64bit 環境が必要です。}~

環境の構築は、[[Android Open Source Project の "Getting the Source" のページ:http://source.android.com/source/download.html]] の "Setting up your machine" の手順に従って行います。



** java6 [#g91d799b]
以下のコマンドで ubuntu のリポジトリから sun java6 のパッケージを取得してインストールします。~

 $ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
 $ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
 $ sudo apt-get update
 $ sudo apt-get install sun-java6-jdk
 $ sudo update-java-alternatives -s java-6-sun

** パッケージインストール [#t10e0e6c]
以下のコマンドで ubuntu のリポジトリから必要なパッケージを取得してインストールします。~
(実際は一行ですが、shell の改行バックスラッシュで途中で改行して表示しています。)

 $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev \
   gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev


* ソース取得 [#nea0dd19]
** repo 設定 [#o0b0c850]
android のソースコードを取得するため repo の設定を行います。

 $ cd ~
 $ mkdir bin
 $ curl http://android.git.kernel.org/repo >~/bin/repo
 $ chmod a+x ~/bin/repo

ubuntu を使っている場合は一旦ログアウトしてログインし直せば ~/bin への PATH は通っています。~
ログアウトせずそのまま作業したい場合は、以下のようにして ~/bin を環境変数の PATH に追加します。

 $ export PATH=~/bin:$PATH

** repo 初期化 [#y1d65e4e]
bc10 という作業用ディレクトリを作成し、android-2.3.2_r1 tag を取得するため repo init を実行します。~
(このディレクトリ名は任意です。android-2.3.2_r1 などといった名前でもかまいません。変更した場合には以降の記述の PATH を自分の設定で読み替えてください。)

 $ cd ~/
 $ mkdir bc10 
 $ cd bc10
 $ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.3.2_r1

** repo sync [#i804a5a7]
repo init の実行後、 repo sync を実行し android のソースコードを取得します。~

 $ repo sync

約5GB のファイルをダウンロードしますので回線速度に応じて時間がかかります。


* bc10 用追加ファイルの取得 [#nc942ebf]

android-2.3.2_r1 を bc10 向けにビルドするための追加ファイルを~
github のリポジトリから git clone で取得します。~

** alsa_sound [#jfebc9c0]
以下のコマンドで alsa_sound を android-2.3.2_r1 に追加します。

 $ cd ~bc10/hardware/
 $ git clone git://github.com/bc-dev/2.3-hardware-alsa_sound.git alsa_sound

** alsa-lib, alsa-utils [#q0cf6dda]
以下のコマンドで alsa-lib, alsa-utils を android-2.3.2_r1 に追加します。

 $ cd ~/bc10/external/
 $ git clone git://github.com/bc-dev/2.3-external-alsa-lib.git alsa-lib
 $ git clone git://github.com/bc-dev/2.3-external-alsa-lib.git alsa-utils

** bc10 device build files [#s89fea9d]
以下のコマンドで android-2.3.2_r1 を bc10 向けにビルドするビルド設定ファイル類を android-2.3.2_r1 に追加します。

 $ cd ~/bc10/device
 $ git clone git://github.com/bc-dev/2.3-device-beatcraft.git beatcraft


* patch の適用 [#wc12ddba]

ファイルの追加でなく、android-2.3.2_r1 のソースコードに直接 bc10 向けの修正を加える patch を適用します。~

** patch の取得 [#jab036a0]
まず以下のコマンドで patch ファイルを取得します。

 $ cd ~/
 $ git clone git://github.com/bc-dev/2.3-patches.git

** wpa_supplicant_6 [#k04581c1]

USB wifi を接続し Android の UI から設定できるよう wpa_supplicant_6 に patch をあてます。

 $ cd ~/bc10/external/wpa_supplicant_6
 $ cp ~/2.3-patches/external-wpa_supplicant_6.diff .
 $ patch -p1 < external-wpa_supplicant_6.diff 

** ti omap3 [#tf639b0b]
bc10 は OMAP3530 を搭載しているためビルド設定ファイル内で TARGET_BOARD_PLATFORM=omap3 と設定しています。~
この設定が有効になっていると android-2.3.2_r1/hadware/ti/omap3/ の下のコードもビルドされますが~
ここにあるコードは Gingerbread 向けのメンテナンスも行われておらず
そのままでは OMAP3530 で使用できないので、ビルドされないようにします。

 $ cd ~/bc10/hardware/ti/omap3
 $ cd ~/2.3-patches/hardware-ti-omap3.diff .
 $ patch -p1 < hardware-ti-omap3.diff

以上でビルドするソースコードの準備が整いました。

* Android ビルド [#abc9999a]
android ビルドのため bc10の環境設定をします。~

 $ cd ~/bc10
 $ source build/envsetup.sh
 including device/beatcraft/bc10/vendorsetup.sh
 including device/htc/passion/vendorsetup.sh
 including device/samsung/crespo/vendorsetup.sh
 $ lunch
 
 You're building on Linux
 
 Lunch menu... pick a combo:
      1. generic-eng
      2. simulator
      3. full_bc10-eng
      4. full_passion-userdebug
      5. full_crespo-userdebug
 
 Which would you like? [generic-eng] [3] ← 3 を入力し enter
 
 ============================================
 PLATFORM_VERSION_CODENAME=REL
 PLATFORM_VERSION=2.3.2
 TARGET_PRODUCT=full_bc10
 TARGET_BUILD_VARIANT=eng
 TARGET_SIMULATOR=false
 TARGET_BUILD_TYPE=release
 TARGET_BUILD_APPS=
 TARGET_ARCH=arm
 HOST_ARCH=x86
 HOST_OS=linux
 HOST_BUILD_TYPE=release
 BUILD_ID=GRH78C
 ============================================

上記の設定確認後 make を実行します。~

 $ make

make を実行する際はビルドの環境(CPU のコア数)に応じて -j2 など並列実行を指定すると所要時間を減らすことができます。~
make 中に出力される情報を増やしたい場合は showcommands を付加して実行すると~
make 中に実行されているコマンドのログを詳細に出力します。~
~
例:
 $ time make showcommands -j2 2>&1 | tee make.log-20110201-01

** 追加ビルド [#mf6179a6]
上記のビルド完了後、同じ環境変数が設定されたままの状態で以下のコマンドを実行し、~
GPS用とセンサー用の HAL ライブラリモジュールを追加ビルドします。
 $ cd ~/bc10/device/beatcraft/bc10/libgps
 $ mm
 $ cd ~/bc10/device/beatcraft/bc10/libsensors
 $ mm

* イメージ作成 [#j4b9ee56]
ビルド完了後のビルド済みファイルは out/target/product/bc10/ にあり、以下のような内容になっています。~

 $ cd ~/bc10/out/target/product/bc10
 $ ls -al
 drwxr-xr-x  8 beat beat      4096 2011-02-01 20:29 .
 drwxr-xr-x  3 beat beat      4096 2011-02-01 19:47 ..
 -rw-r--r--  1 beat beat        11 2011-02-01 19:47 android-info.txt
 drwxrwxrwx  8 root root      4096 2011-02-01 20:32 bc10-image
 -rw-r--r--  1 beat beat      3727 2011-02-01 20:23 clean_steps.mk
 drwxr-xr-x  3 beat beat      4096 2011-02-01 19:53 data
 -rw-r--r--  1 beat beat     22633 2011-02-01 20:02 installed-files.txt
 drwxr-xr-x 14 beat beat      4096 2011-02-01 20:02 obj
 -rw-r--r--  1 beat beat       230 2011-02-01 20:23 previous_build_config.mk
 -rw-r--r--  1 beat beat    142336 2011-02-01 19:57 ramdisk.img
 drwxr-xr-x  8 beat beat      4096 2011-02-01 19:57 root
 drwxr-xr-x  5 beat beat      4096 2011-02-01 19:57 symbols
 drwxr-xr-x 12 beat beat      4096 2011-02-01 19:58 system
 -rw-------  1 beat beat 104951616 2011-02-01 20:02 system.img
 -rw-------  1 beat beat   1482624 2011-02-01 19:53 userdata.img

以下のコマンドでビルドされた userland のバイナリを起動可能な配置に整えます。~

 $ mkdir bc10-image
 $ cp -afr root/* bc10-image/
 $ cp -afr system/* 
 $ sudo chown -R root.root bc10-image/
 $ sudo chmod -R 777 bc10-image/

起動可能な配置の userland は以下のような内容になります。

 $ cd bc10-image
 $ ls -al
 drwxrwxrwx  8 root root  4096 2011-02-01 20:32 .
 drwxr-xr-x  8 beat beat  4096 2011-02-01 20:29 ..
 drwxrwxrwx  2 root root  4096 2011-02-01 19:47 data
 -rwxrwxrwx  1 root root   118 2011-02-01 19:47 default.prop
 drwxrwxrwx  2 root root  4096 2011-02-01 19:47 dev
 -rwxrwxrwx  1 root root   904 2011-02-01 15:35 gps_init.sh
 -rwxrwxrwx  1 root root 90084 2011-02-01 19:57 init
 -rwxrwxrwx  1 root root  1677 2011-02-01 14:27 init.goldfish.rc
 -rwxrwxrwx  1 root root   917 2011-02-01 15:08 init.omap3.rc
 -rwxrwxrwx  1 root root 15018 2011-02-01 17:15 init.rc
 drwxrwxrwx  2 root root  4096 2011-02-01 19:47 proc
 drwxrwxrwx  2 root root  4096 2011-02-01 19:57 sbin
 drwxrwxrwx  2 root root  4096 2011-02-01 19:47 sys
 drwxrwxrwx 12 root root  4096 2011-02-01 20:30 system
 -rwxrwxrwx  1 root root     0 2011-02-01 14:27 ueventd.goldfish.rc
 -rwxrwxrwx  1 root root   231 2011-02-01 15:08 ueventd.omap3.rc
 -rwxrwxrwx  1 root root  3764 2011-02-01 14:27 ueventd.rc



* SGX SDK のインストール [#g555a2b6]
[[bc10/froyo]]と同じ手順でTI Android SGX SDKを取得します。~
~
(注):~
- 取得完了までに時間がかかることがあります。~
- [[bc10/froyo]]にてOMAP35x_Android_Graphics_SDK_3_01_00_03をインストール済みの場合は~
同じファイルなので転用しても問題ありません、Rules.makeのディレクトリ位置の変更には~
注意してください。再度ダウンロードの際は任意にバックアップもしくは削除などをしてください。~
- kernelもしくはAndroid userlandの入れ替えを行う際はkernel、Android全体のリビルドが必要になります。~

 $ cd ~
 $ git clone git://gitorious.org/rowboat/ti_android_sgx_sdk.git
 $ cd ti_android_sgx_sdk/
 $ ./OMAP35x_Android_Graphics_SDK_setuplinux_3_01_00_03.bin

インストールディレクトリ位置を聞かれるので今回はデフォルトインストールディレクトリ~
の${HOME}/OMAP35x_Android_Graphics_SDK_3_01_00_03 を指定します。~
${HOME}は、ホームディレクトリーの意味で、/home/beatを指します。~
(以降、ホームディレクトリーは、/home/beatを指します。)~
~
[[To download TI's Android SGX SDK>http://code.google.com/p/rowboat/wiki/Source#To_download_TI%27s_Android_SGX_SDK]] ~
~
** Rules.make の変更 [#ke48d729]
Rules.make のHOME、GRAPHICS_INSTALL_DIR、ANDROID_ROOT、CSTOOL_DIR、~
KERNEL_INSTALL_DIRをそれぞれのファイルPATHに合うよう修正してください。~
以下のRules.makeは上記ビルド時の設定にあわせています。~
ANDROID_ROOTは作成したbc10-imageのディレクトリ位置~
にあわせています。~

 $ cd ~/OMAP35x_Android_Graphics_SDK_3_01_00_03

 --- Rules.make  2011-01-05 14:20:43.863788943 +0900
 +++ Rules.make-orig     2011-01-05 14:17:04.661291128 +0900
 @@ -4,24 +4,20 @@ PLATFORM=LinuxOMAP3 
 
  ################# FIELDS MODIFIABLE BY THE USER ###############################
  #set home area HOME (relative location for all SDK operations)
 -#HOME=INVALIDVAL
 -HOME=/home/beat/prebuilt-20101227
 +HOME=INVALIDVAL
  #Current Directory where Graphics SDK is installed
  GRAPHICS_INSTALL_DIR=$(HOME)/OMAP35x_Android_Graphics_SDK_3_01_00_03
  #Android Specific
  #Path of Android Root FS
 -#ANDROID_ROOT=$(HOME)/INVALIDVAL
 -ANDROID_ROOT=$(HOME)/bc10/out/target/product/bc10/bc10-image
 +ANDROID_ROOT=$(HOME)/INVALIDVAL
  #set toolchain root path for arm-eabi
 -#CSTOOL_DIR=INVALIDVAL
 -CSTOOL_DIR=$(HOME)/bc10/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3
 +CSTOOL_DIR=INVALIDVAL
  CSTOOL_PREFIX=arm-eabi-
  CSTOOL_PATH=$(CSTOOL_DIR)/bin
  CSTOOL_LIBSTDC++_PATH=$(CSTOOL_DIR)/arm-none-linux-gnueabi/libc/usr/lib 
 
  #set the kernel installation path
 -#KERNEL_INSTALL_DIR=$(HOME)/INVALIDVAL
 -KERNEL_INSTALL_DIR=$(HOME)/bc10-rowboat-kernel
 +KERNEL_INSTALL_DIR=$(HOME)/INVALIDVAL
  TARGETFS_INSTALL_DIR=$(ANDROID_ROOT)
 
  GFX_TARGETFS_KERMOD_PATH=$(TARGETFS_INSTALL_DIR)/lib/modules/2.6.32

RULEs.make変更完了後make、make installを実行します。~

 $ make 
 $ make OMAPES=3.x install

これで bc10 向けの Android 2.3.2_r1 の起動イメージの作成は完了です。~
~
~
このイメージは USB Wifi を Android の UI から設定できるよう、ビルド済みの Wifi 用 kernel module を~
Android のビルド時に userland 内 
 bc10-image/system/lib/module/rt3070sta.ko
に配置しています。~
またこの kernel module をビルドする際に使用した config でビルド済みの uImage も~
 ~/bc10/device/beatcraft/bc10/uImage
に同梱しています。~

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   新規 一覧 単語検索 最終更新   最終更新のRSS