Compiling Google Andriod Progress
February 27th, 2009It’s been pretty up and down but I’ve successfully compiled Google Andriod for an eee701. The problem is that after converting the installer.img into a VDI file and booting in Virtualbox I’m stuck at the boot menu.
I’ve actually been compiling the source in a Virtual environment, a Fedora 10 virtual machine running on Windows XP Professional.
In brief here’s the procedure so far on Fedora 10.
- Install the Sun Java SE Development Kit (JDK)
- Edit your ~/.bashrc file and add the following lines.
export JAVA_HOME='/usr/java/jdk1.6.0_12' PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
- Install gperf.
# yum install gperf
- Make sure you have a ~/bin directory in your home directory, and check to be sure that this bin directory is in your path:
$ cd ~ $ mkdir bin $ echo $PATH
- Download the repo script and make sure it is executable:
$ curl http://android.git.kernel.org/repo >~/bin/repo $ chmod a+x ~/bin/repo
- Create an empty directory to hold your working files:
$ mkdir mydroid $ cd mydroid
- Get the cupcake branch
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
- To pull down files to your working directory from the repositories as specified in the default manifest, run
$ repo sync
- I tried compiling with
$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make -j2 installer.img
but this fails with the error:
du: cannot access `out/target/product/eee_701/data': No such file or directory
After making this data directory and running again the compiling is successful.
File edit complete. Wrote 2 images. Done with bootable installer image -[ out/target/product/eee_701/installer.img ]
- Change to the output directory
$ cd out/target/product/eee_701/
- Convert the installer.img to a Virtualbox VDI file
$ VBoxManage convertfromraw -static -format VDI ./installer.img ./installer.vdi
- Create a new virtual machine in Virtualbox and use this vdi as the hard drive.
- Unfortunately this is where I get stuck. At first I received errors like:
$ Booting `recovery` cmdline (hd0,1)/cmdline Error 15: File not found
or
Booting `std_boot` cmdline (hd0,2)/cmdline Error 22: No such partition
Exactly as described here
These problems were fixed by changing hd(0,2) to hd(0,0) but then it seems to boot only to be presented with this error. The same can be found in this post.init: Unable to open persistent property directory /data/property errno: 2 sh: can’t access tty: Waiting for device /dev/block/sdb2
I can’t get past this error and the solutions on android-porting pages are sometimes hard to follow. Never the less I’ll keep trying especially that I’m so close.
Note that this was using the stock Andriod kernel. I also tried compiling the 2.6.27 kernel but it fails with the following error.
drivers/rtc/alarm.c:16:27: error: asm/mach/time.h: No such file or directory drivers/rtc/alarm.c: In function ‘alarm_suspend’: drivers/rtc/alarm.c:357: error: implicit declaration of function ‘save_time_delta’ make[2]: *** [drivers/rtc/alarm.o] Error 1 make[1]: *** [drivers/rtc] Error 2 make: *** [drivers] Error 2
Reading this post I see that this is a known issue and there is a patch but I haven’t tried applying the patch yet.
If you do decide to compile your own kernel it’s pretty easy.
$ cd ~/mydroid/vendor/asus/eee_701/ $ make menuconfig
Save the config file then.
$ make bzImage
Then copy the kernel to vendor/asus/eee_701
$ cp arch/x86/boot/bzImage ../vendor/asus/eee_701/kernel