[[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 に同梱しています。~