포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 20MB 입니다.

얼마전 구글에서 안드로메다 검색 하다  발견한 것입니다.
일본사이트인데 Vmware에서 안드로메다 x86으로 포팅하는것인데 patch랑 내용이 참 알차고 좋은것 같습니다.

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キーボードで認識されています。
キー配列が違うので注意して下さい。

전호철

2009.07.17 22:15:27
*.68.81.155



와~ 잘 되네요.
따라 해봤습니다.
그런데 마우스 포인터가 안보여서 어디를 가리키고 있는지 모르겠어요. ^_^
List of Articles
번호 제목 글쓴이 날짜 조회 수
44 [번역] Android Opencore Multimedia Framework 번역본 file [7] 고도리 2009-08-25 17636
43 안드로이드 실행 시 미디어 서버 pending 현상 원인 중 한가지 file 박병구 2009-08-22 10810
42 Android OpenCore 모임추진 ? [8] 장석원 2009-08-07 16001
41 Android 폰 가지고 놀기^^ [1] 2009-08-07 10211
40 [번역] Android OpenCore multimedia framework-part1 file [7] 고현철 2009-08-04 13768
39 Android audioflinger 분석자료 입니다. file [11] 고현철 2009-07-30 18819
38 MV6410의 android gps file [4] 주재경 2009-07-29 13108
37 [강좌]안드로이드 1.5 compile해서 NFS root filesystem으로 만들... file [1] 고도리 2009-07-18 14140
36 Android make옵션 [3] 2009-07-16 19464
35 Android Java쪽에서 시작 하는 main()부분... file [1] 2009-07-16 9977
» Vmware에서 x86으로 안드로메다 포팅 법 [1] 2009-07-15 11075
33 Android 윈도우에서 git로 소스 받기.. [3] 2009-07-14 17021
32 aesop 안드로이드 보드의 3D 성능 측정을 부탁드립니다. file [8] 최영빈 2009-07-09 11041
31 S3C6410 Android ADB USB-OTG 동작 화면 file [8] 김재훈 2009-07-09 15621
30 android gstreamer 동작화면 file [10] 고현철 2009-07-07 11025
29 HTC G2 안드로이드폰 밧데리 시간 [3] 2009-06-25 9720
28 MV6410용 aesop-android-2.6.29 입니다. (CS8900 관련) file [4] 2009-06-17 10621
27 mv6410 보드에 안드로이드 올렸습니다. . 2009-06-11 9549
26 Android Battery 드라이버...ㅎㅎㅎ-.-; [3] 2009-06-02 10769
25 cupcake, android 1.0/1.5의 의미 2009-05-20 10710

사용자 로그인