- 追加された行はこの色です。
- 削除された行はこの色です。
[[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
に同梱しています。~