bc10

bc10/ソフトウェア

bc10用 android-2.3.2_r1 の概要

bc10 向けに修正を加えた android-2.3.2_r1 の作成について記述します。

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

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

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

ビルド環境

今回の環境は以下のようになります。

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

環境の構築は、Android Open Source Project の "Getting the Source" のページ の "Setting up your machine" の手順に従って行います。

java6

以下のコマンドで 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

パッケージインストール

以下のコマンドで 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

ソース取得

repo 設定

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 初期化

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

repo init の実行後、 repo sync を実行し android のソースコードを取得します。

$ repo sync

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

bc10 用追加ファイルの取得

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

alsa_sound

以下のコマンドで 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

以下のコマンドで 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

以下のコマンドで 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 の適用

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

patch の取得

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

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

wpa_supplicant_6

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

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 ビルド

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

追加ビルド

上記のビルド完了後、同じ環境変数が設定されたままの状態で以下のコマンドを実行し、
GPS用とセンサー用の HAL ライブラリモジュールを追加ビルドします。

$ cd ~/bc10/device/beatcraft/bc10/libgps
$ mm
$ cd ~/bc10/device/beatcraft/bc10/libsensors
$ mm

イメージ作成

ビルド完了後のビルド済みファイルは 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 のインストール

bc10/froyoと同じ手順でTI Android SGX SDKを取得します。

(注):

$ 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

Rules.make の変更

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