반응형

VMware上で動作するx86版Androidソースからのビルドテーマ:Android Androidはグーグル社が無償で提供している携帯電話用のOSです。
今回はVMwareの仮想マシン(x86)上で動作するAndroidのビルド方法を紹介します。

作業環境はVMware Server、Ubuntu Linux 8.04(仮想マシン)です。
Ubuntuの仮想マシンは下記URLからダウンロードして下さい。
http://www.ubuntulinux.jp/products/JA-Localized/vmware

Androidのビルド時にメモリをかなり消費する為、Ubuntu仮想マシンのメモリは最低でも1GB割り当てる必要があります。


1. ビルド環境の構築
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
※1 上記のコマンドは1行です。
※2 途中でJava-JDKのライセンスに同意して下さい。
$ cd ~
$ mkdir bin
$ export PATH=$PATH:~/bin
$ echo “export PATH=$PATH:~/bin” >> ~/.bashrc
$ export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-1.5.0.16
$ echo “export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-1.5.0.16″ >> ~/.bashrc


2. Androidソースリポジトリのダウンロード
$ curl http://android.git.kernel.org/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

・リポジトリの初期化
$ mkdir cupcake
$ cd cupcake
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
※ ユーザ名、メールアドレスを聞かれます。
ユーザ名、メールアドレスはリポジトリをコミットする場合に使用されます。
$ ls -la
※ ".repo"ディレクトリが作成されていることを確認して下さい。

・リポジトリのダウンロード
$ repo sync
※ ソースのインストール。回線の速度にもよりますが1時間近くかかります。
エラーが出たらもう一度"$ repo sync"を実行して下さい。
"Fetching projects: 100%"が表示されるとインストールは終了です。
$ vi .repo/local_manifest.xml
==================================================================================
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="platform/vendor/asus/eee_701" path="vendor/asus/eee_701">
</project>
</manifest>
==================================================================================
※ x86用のソースをインストールする為にxmlファイルを作成します。
$ repo sync
※ "Fetching projects: 100%"が表示されることを確認して下さい。


3. パッチの適用
ユーザのホームディレクトリに下記アドレスにあるパッチを全てダウンロードして下さい。
http://code.google.com/p/patch-hosting-for-android-x86-support/downloads/list

$ cd ~
$ patch -d ~/cupcake/vendor/asus/eee_701 < 0001-1.-added-scripts-to-build-install-image.patch
$ cd ~/cupcake/frameworks/base
$ patch -p1 < ~/0001-fixed-different-build-breaks-added-mouse-cursor-sup.patch
$ patch -p1 < ~/touchscreen.patch
$ cd ~/cupcake/kernel
$ patch -p1 < ~/alarm.patch
$ patch -p1 < ~/atl1e.patch
$ patch -p1 < ~/atl2-2.2.3.patch
$ patch -d ~/cupcake/external/e2fsprogs < ~/e2fsprogs.patch
$ patch -d ~/cupcake/external/qemu < ~/qemu_gnu.patch
※ -dオプションを付ける時は最後に"/"を付けないように注意して下さい。

$ vi frameworks/base/services/java/com/android/server/PowerManagerService.java
============================================
// assume nothing is on yet
mUserState = mPowerState = 0;

mUserState = mPowerState = SCREEN_BRIGHT;
============================================
※1 "0"を"SCREEN_BRIGHT"に変更して下さい。350行目辺りにあります。
※2 この設定を変更しないとキーボードが正常に動作しません。


4. Android、カーネルのビルド
・Androidのビルド
$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make -j4 installer_img
※ "Done with bootable installer image -[ out/target/product/eee_701/installer.img ]-"が表示されていれば完了です。
ビルドには数時間かかります。

・カーネルのビルド
$ cd kernel
$ make i386_defconfig
$ make menuconfig

変更点は以下の部分
==================================================================================================
・General セクション
[*] Enable the Anonymous Shared Memory Subsystem

・Power management options セクション
[*] Wake lock

・Device Drivers セクション
[*] Misc devices --->
[ ] Android pmem allocator <-ここにチェックが入っているとビルド時にエラーになります。
<*> Binder IPC Driver
<*> Low memory killer
[*] High-speed in kernel logging driver

[*] Fusion MPT device support --->
<*> Fusion MPT ScsiHost drivers for SPI

[*] Network device support --->
[*] Ethernet (10 or 100 Mbit) --->
[*] EISA, VLB, PCI and on board controllers --->
<*> AMD PCnet32 PCI support

Graphics support --->
Console display driver support --->
<*> Framebuffer Console support

<*> Support for frame buffer devices --->
[*] VESA VGA graphics support

<*> Real Time Clock
[*] Android alarm driver
=======================================================================================================

$ make bzImage && make modules
$ sudo make modules_install
$ mkinitramfs -o ~/initrd.img 2.6.27

ここで、一度Ubuntu仮想マシンの電源を落として下さい。


5. Android用仮想マシンの作成
VMware Serverで作業します。
必要な項目は以下のようになります。
===============================================================
OSタイプ:other 2.6x Linux (32bit)
メモリ:512MB
CPU:1
HDD:作成 ※サイズは4GBあれば十分です。
NIC:あり(ブリッジ)
===============================================================


6. Android用仮想ディスクの作成
Ubuntu仮想マシンに先ほど作成したAndroid用仮想マシンの仮想ディスク(vmdk)を加えて下さい。
仮想ディスクを加えた後にUbuntu仮想マシンを起動します。

・Android用仮想ディスクのフォーマット
$ sudo fdisk /dev/sdb
コマンド:n
p
領域番号 (1-4):1
最初 シリンダ (1-522, default 1): (Enterを押す)
終点シリンダまたは・・・: (Enterを押す)
コマンド:a
領域番号 (1-4):1
コマンド:p
コマンド:w

$ sudo mkfs.ext3 /dev/sdb1
$ sudo mount /dev/sdb1 /mnt

・GRUBのインストール
$ sudo grub-install --root-directory=/mnt /dev/sdb
$ sudo vi /mnt/boot/grub/menu.lst
====================================================================================
default 0
timeout 3
title Android
root (hd0,0)
kernel /boot/bzImage root=/dev/sda1 rw vga=788 init=/init
initrd /boot/initrd.img
====================================================================================


7. Androidシステムのコピー
$ sudo cp ~/cupcake/kernel/arch/x86/boot/bzImage ~/initrd.img /mnt/boot
$ cd ~/cupcake/out/target/product/eee_701/
$ sudo su
# cp -a root/* /mnt
# cp -a system/* /mnt/system
# cp -a data/* /mnt/data
# cd /mnt/system/usr
# chmod -R 777 keychars
# chmod -R 777 keyclayout
# exit

・初期化スクリプトの変更
$ sudo vi /mnt/init.rc
=================================================================
# mount rootfs rootfs / ro remount
# mount ext3 /dev/block/sda6 /system
# mount ext3 /dev/block/sda6 /system ro remount
# mount ext3 /dev/block/sda8 /data
# mount ext3 /dev/block/sda5 /cache

※ 最終行に以下を追加
service network /system/bin/sh /system/etc/init.network.sh
==================================================================

・ネットワーク起動スクリプトの作成
$ sudo vi /mnt/system/etc/init.network.sh
==================================================================
#!/system/bin/sh

netcfg eth0 dhcp
setprop net.dns1 **.**.**.** <- DNSサーバのIPアドレス
==================================================================

$ sudo chmod a+x /mnt/system/etc/init.network.sh


これで作業は終了です。
Ubuntu仮想マシンの電源を落とし、Android仮想マシンの電源を入れると起動します。
簡単な操作方法を説明します。
・コンソールの起動
Alt + F1
・Androidに戻る
Alt +F7
・停止方法
1. コンソールを開く
2. # reboot -p

Androidのキーボードは101キーボードで認識されています。
キー配列が違うので注意して下さい。
반응형

'Android' 카테고리의 다른 글

How To Install APK files on Android Phone  (0) 2009.07.18
VMware에 Android Porting 하기.  (0) 2009.07.18
6410 보드에 Android 올린 모습  (0) 2009.07.03
구글폰 프로토 타입 나오다  (0) 2008.02.14
Posted by Real_G

댓글을 달아 주세요