Howto build Android full source for X86 Architecture on Fedora distribution.

212 views
Skip to first unread message

Lim,GeunSik

unread,
Dec 24, 2008, 2:17:03 AM12/24/08
to android-porting

Howto build Android full source for X86 Architecture on Fedora
distribution.
===========================================================
Last Modified on 23-Dec-2008 06:10


I summarized how to build android full source for x86 architecture
like Asus Eee lattop for fedora9 user.
Fortunately, We can build android full surce both x86 and arm on
fedora 9 distribution successfully because
google is realesing android full source with common method without RPM
or DEB currently.
Don't forget that This howto is for Fedora distribution user like me.

0. My development environments
- Linux PC: Fedora 9 ( 2.6.25.6-55.fc9 i686)
. CPU: Intel(R) Core(TM)2 Duo CPU T5750 @ 2.00GHz ( Samsung
SENS R60 Laptop )
. RAM: Samsung DDR Ram
- Target: Eee PC (ASUS) and Samsung nettop NC01
- Reference: http://www.kandroid.org/board/board.php?board=androidsource&command=body&no=19



1. Query of Linux distribution information
- At first, Prepare ASUS Eee 701 Lattop or Samsung nettop (NC01) or
x86 compatible target.

And then, confirm system information on your linux distribution
like belows.


Fedora9$> uname -a
Linux fedora-invain9 2.6.25.6-55.fc9.i686 #1 SMP Tue Jun 10 16:27:49
EDT 2008 i686 i686 i386 GNU/Linux

Fedora9$> gcc --version and Fedora9$> gcc34 --version
Fedora9$> gcc --version
gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8)
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There
is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

Fedora9$> gcc34 --version
gcc34 (GCC) 3.4.6 20060404 (Red Hat 3.4.6-9)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There
is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.




2. repo init and Sync
- You have to download android full source for x86 architecture like
ASUS Eee PC 701.
- Eee pc dev tree is "git://android.git.kernel.org/platform/vendor/
asus/eee_701.git".
Fedora9$> cd ~
Fedora9$> mkdir bin_x86 && cd bin_x86
Fedora9$> mkdir mydroid && cd mydroid
Fedora9$> repo init -u git://android.git.kernel.org/platform/manifest.git
-b cupcake
Fedora9$> repo sync
Fedora9$> vi ./.repo/local_manifest.xml
<manifest>
<project name="platform/vendor/asus/eee_701" path="vendor/asus/
eee_701"/>
</manifest>


Fedora9$> repo sync
... A new repo command ( 1.8) is available.
... You should upgrade soon:

cp /home/invain/bin_x86/mydroid/.repo/repo/repo /home/invain/bin/
repo

Initializing project platform/vendor/asus/eee_701 ...
remote: Counting objects: 33, done.
remote: Compressing objects: 100% (31/31), done.
remote: Total 33 (delta 2), reused 33 (delta 2)
Unpacking objects: 100% (33/33), done.
From git://android.git.kernel.org/platform/vendor/asus/eee_701
* [new branch] cupcake -> korg/cupcake
* [new branch] master -> korg/master


3. Building x86 android full source

Fedora9$> export PATH=$PATH:/usr/sbin:/sbin (to use /sbin/tune2fs
command of e2fsprogs pack )
Fedora9$> TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 \

DISABLE_DEXPREOPT=true CC=gcc34 CXX=g++34 make -j2
installer_img

build/core/product_config.mk:207: WARNING: adding test OTA key
============================================
TARGET_PRODUCT=eee_701
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_ARCH=x86
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=
============================================
build/core/main.mk:178: implicitly installing apns-conf_sdk.xml
............... Below Omission ...................

* Toouble Shooting about source building

- If you want to avoid below errors on feora 9, Use gcc-34 instead of
gcc-4.3 version.

- Ref) Ubuntu 8.04LT support GCC 4.2(Recommendation) , Ubuntu 8.10
support GCC 4.3.

- If you are using GCC 4.3 currently, Modify string header related
sources like belows.

Fedora9$> vi external/srec/tools/thirdparty/OpenFst/fst/lib/../../fst/
lib/vector-fst.h
Fedora9$> vi external/srec/tools/thirdparty/OpenFst/fst/lib/symbol-
table.cpp
Fedora9$> vi frameworks/base/tools/aidl/aidl.cpp --> #include
<stdlib.h>, #include <string.h>

........ and so on......
- In my case, I am using gcc 3.4 for compatibilty like this problem on
fedora.

#> yum install compat-gcc*
#> rpm -qa | grep compat-gcc
compat-gcc-34-3.4.6-9.i386
compat-gcc-34-c++-3.4.6-9.i386
compat-gcc-34-g77-3.4.6-9.i386

Fedora9$> vi

Fedora9$> ls -lh out/target/product/eee_701/

total 770624
drwxrwxr-x 9 invain invain 4096 2008-12-24 16:05 .
drwxrwxr-x 3 invain invain 4096 2008-12-24 15:34 ..
-rw-rw-r-- 1 invain invain 2606080 2008-12-24 15:50 boot.img
-rw-rw-r-- 1 invain invain 57 2008-12-24 16:03 clean_steps.mk
drwxrwxr-x 4 invain invain 4096 2008-12-24 15:54 data
drwxrwxr-x 2 invain invain 4096 2008-12-24 15:50 grub
drwxrwxr-x 4 invain invain 4096 2008-12-24 16:05 installer
-rw-rw-r-- 1 invain invain 406862848 2008-12-24 16:06 installer.img
-rw-rw-r-- 1 invain invain 1951340 2008-12-23 19:18 kernel
drwxrwxr-x 12 invain invain 4096 2008-12-24 16:05 obj
-rw-rw-r-- 1 invain invain 607384 2008-12-24 15:50 ramdisk.img
drwxrwxr-x 9 invain invain 4096 2008-12-24 15:50 root
drwxrwxr-x 4 invain invain 4096 2008-12-24 15:50 symbols
drwxrwxr-x 12 invain invain 4096 2008-12-24 15:53 system
-rw-rw-r-- 1 invain invain 372056064 2008-12-24 16:05 system.img
-rw-rw-r-- 1 invain invain 5156864 2008-12-24 16:04 userdata.img


Fedora9$> file out/target/product/eee_701/installer.img
./out/target/product/eee_701/installer.img: x86 boot sector; GRand
Unified Bootloader, stage1 version 0x3; partition 1: ID=0x83, active,
starthead 0, startsector 2048, 8878 sectors; partition 2: ID=0x83,
starthead 0, startsector 10926, 783728 sectors



Fedora9$> file out/target/product/eee_701/installer.img
File: `./out/target/product/eee_701/installer.img'
Size: 406862848 Blocks: 793552 IO Block: 4096 일반 파일
Device: fd00h/64768d Inode: 5349917 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 778/ invain) Gid: ( 778/
invain)
Access: 2008-12-24 16:08:21.000000000 +0900
Modify: 2008-12-24 16:06:05.000000000 +0900
Change: 2008-12-24 16:06:05.000000000 +0900


Fedora9$> file out/target/product/eee_701/system.img
./out/target/product/eee_701/system.img: Linux rev 0.0 ext2 filesystem
data


Fedora9$> file out/target/product/eee_701/userdata.img
./out/target/product/eee_701/userdata.img: Linux rev 0.0 ext2
filesystem data


Fedora9$> pushd out/target/product/eee_701/

Fedora9$> sudo mount -o loop boot.img /mnt

Fedora9#> popd
total 2519
-rw-rw-r-- 1 invain invain 77 2008-12-24 15:50 cmdline
-rw-rw-r-- 1 invain invain 1951340 2008-12-24 15:50 kernel
-rw-rw-r-- 1 invain invain 607384 2008-12-24 15:50 ramdisk


Fedora9$> cat /mnt/test/cmndline
console=tty0 console=ttyS1,115200n8 console=tty0
androidboot.hardware=eee_701



Fedora9$> cp /mnt/test/ramdisk /tmp/ramdisk.gz
Fedora9$> pushd /tmp
Fedora9$> gunzip ramdisk.gz
Fedora9$> cpio -iv < ramdisk

Fedora9$> popd
init.goldfish.rc
init
data
init.eee_701.rc
proc
sbin
sbin/adbd
system
init.rc
default.prop
lib
lib/modules
lib/modules/atl2.ko
lib/modules/drm.ko
lib/modules/fbcon.ko
lib/modules/cfbimgblt.ko
lib/modules/i915.ko
lib/modules/cfbcopyarea.ko
lib/modules/bitblit.ko
lib/modules/softcursor.ko
lib/modules/font.ko
lib/modules/cfbfillrect.ko
dev
sys
2958 blocks



Fedora9$> file /tmp/init
/tmp/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
statically linked, not stripped




4. Make USB Stick Installer

- You have to change first boot device on Bios menu with F2 or Del
key to use usb live when booting.
Fedora9$> dd if=out/target/product/eee_701/installer.img of=/dev/
<usbstick of your choice , ex: /dev/sda1>





5. Now, Enjoy X86 Android Platform on Eee Lattop (ASUS) !







End of Line.








rams

unread,
Dec 25, 2008, 9:03:56 AM12/25/08
to android...@googlegroups.com
Hi Lim,

Will these instructions work well for my Desktop PC
(having Intel Dual Core, Ubuntu 8.10) without affecting
my hard disk.

Please help.

Thanks
Ram.

2008/12/24 Lim,GeunSik <lee...@gmail.com>

Dima Zavin

unread,
Dec 26, 2008, 5:52:47 PM12/26/08
to android...@googlegroups.com
You should be able to build everything on your ubuntu box, but if you try to install it onto it, the installer WILL wipe the target disk. Running this on anything that's not an eeepc (or very similar hardware) is really not recommended. It's really not ready to run on desktops. If still really want to try just running it (without installing), you could peek at Chris Elford's make-live script (http://code.google.com/p/android/issues/detail?id=1598) that will make a live-usbkey image. You'll most likely need a different kernel (though I guess many intel chipsets might be supported by the prebuilt) and will need the right framebuffer drivers to get anywhere past the console. Still, it's not ready for prime time, so it's not recommended unless you are serious about hacking on android for x86.

--Dima

2008/12/25 rams <plra...@gmail.com>

paolo.ca...@gmail.com

unread,
Jan 5, 2009, 8:18:50 AM1/5/09
to android-porting
It would be nice telling people that, after booting, the entire
content of hard disk is wiped out, so now I have lost both my Windows
XP and Fedora 9 partitions, including user data.

It would be nice, simple, and appropriate, and a difference between
professionalism and you know, a very strong word.
Reply all
Reply to author
Forward
0 new messages