February 2009 Archive

Compiling Google Andriod Progress

February 27th, 2009

It’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.

  1. Install the Sun Java SE Development Kit (JDK)
  2. 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
    
  3. Install gperf.
    # yum install gperf
  4. 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
    
  5. Download the repo script and make sure it is executable:
    $ curl http://android.git.kernel.org/repo >~/bin/repo
    $ chmod a+x ~/bin/repo
    
  6. Create an empty directory to hold your working files:
    $ mkdir mydroid
    $ cd mydroid
    
  7. Get the cupcake branch
    $ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
  8. To pull down files to your working directory from the repositories as specified in the default manifest, run
    $ repo sync
  9. 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 ]
    
  10. Change to the output directory
    $ cd out/target/product/eee_701/
  11. Convert the installer.img to a Virtualbox VDI file
    $ VBoxManage  convertfromraw -static -format VDI ./installer.img  ./installer.vdi
  12. Create a new virtual machine in Virtualbox and use this vdi as the hard drive.
  13. 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

Virtualbox Shared Folders

February 23rd, 2009

Is seems that the format for getting shared folders to work with Linux clients has changed. Assuming I’m trying to mount the Windows Desktop in the Linux client I used to use the following command.

# mount -t vboxsf \\vboxsvr\Desktop /mnt/desktop

I tried this today and it fails with the error:

# /sbin/mount.vboxsf: mounting failed with the error: Protocol error

It turns out that the way to get this working is to drop the server name and use a lowercase ‘D’.

# mount -t vboxsf desktop /mnt/desktop

Compiling Google Andriod for x86

February 22nd, 2009

After downloading and running the Google Andriod vdi for Virtualbox I decided to try and compile the source myself. I’m following the directions on the andriod-porting Google group including trying to enable networking that didn’t work in the vdi file I downloaded.

I’ve just finished downloading the cupcake source tree from git that takes quite a while as I’m not able to get more than about 1 to 2 Mbit/s when downloading. I’ve also modified the kernel config to include the ‘AMD PCnet32 PCI support’ that is one of the network devices supported by Virtualbox.

Next step is to compile but that’s for another post.

QuickProxy for Firefox

February 13th, 2009

After I wrote previously about toggling the proxy setting in Internet Explorer I looked for a similar function for Firefox.

There’s quite a few proxy extensions available, but if you just want to toggle the proxy on and off quickly I recommend QuickProxy.

Google Android in Virtualbox

February 12th, 2009

After reading this page about running Google Android in Virtualbox I thought it might be fun to have a go.

Just download the vdi file from the above site and create a new virtual machine. On booting I selected a video mode of 640x480x16 (use letter g) for best results. Note that you also have to enable the Serial Ports in Virtualbox otherwise it hangs at the grub menu. Apart from that it boots in a matter of seconds and looks really good.

Note that there’s no networking or mouse support right now but it’s still fun to play around with. Many thanks to the above site for sharing the vdi file for anyone to try.

Google Andriod
Google Android

Windows 7 Starter Edition Crippled From Birth

February 5th, 2009

The news that Microsoft will release a Windows 7 Starter Edition specially for netbooks reminds me why I choose Linux.

Reportedly the Starter Edition will only be allowed to run 3 applications at once and have many Windows 7 feature removed. I don’t really have a problem removing features to keep the memory and processor requirements to a minimum but intentionally crippling the OS to only run 3 apps simultaneously for no good reason other than marketing is a step too far.

The only reason they’re creating a Starter Edition at all is to try to limit Linux growth since the price it will be sold at will probably not make any profit margin for Microsoft.

In the open source world it’s all so different. Features are added because users and developers find them useful, they just want to make the best software possible. There’s no thought given to not introducing features because they might limit the sales of a more expensive version, everyone just gets the full featured, best version.

It probably goes without saying but the end user is far better off when software is created with the only goal of being the best, without the shackles of how to maximise profits at the same time.