Request for comments on "Android under Angstrom" Implementation

Hello Hunyue Yau and other community members,
After doing research on “Android under Angstrom” project I got few links and ideas to share with you. Please go through them and comment, it will help me to write good proposal for GSOC.

Already existing projects:

  1. Running multiple android instances simultaneously on QEMU emulator- http://www.youtube.com/watch?v=UpIFByNLM5U
    This project is done by me as part of my mains project. I used LXC( Linux Containers) to run different android flavors.
  2. Running Ubuntu on android - http://androlinux.com/
    It uses chroot to run the Ubuntu operating system
  3. Running different distros on Android OS (fedora, ubuntu, Archlinux, etc) http://linuxonandroid.org/
    It also uses chroot to run any linux distribution.
  4. Always innovating Super Jumbo https://www.alwaysinnovating.com/beagleboard/ .
    This reference is given on Ideas page.

Now focusing on implementation of running “Android on Angstrom”, we can use following ways:

  1. Running full Android OS:
    We can do it either using chroot or LXC. Chroot seams to be very much simple to get started with running android directly, but it will have few security issues and less resource management facilities. LXC provides light weight operating system level virtualization[1], so we can control resources like memory, CPU, device nodes, etc. And LXC internally used pivot_root system call.
  2. Porting just DVM and its dependencies:
    It involves porting DVM and its dependencies to provide facility to run any android application on Angstrom. The work involved is very huge as android DVM is more complex than any other JVM. But it will be very much efficient in terms of memory and performance. Plus it will be an innovative attempt to provide android applications on Linux based Operating system. Other Linux based communities will get benefit from it.

I tried contacting Hunyue Yau on IRC, but he seams to be busy. My IRC nicname is: sdkie. I am normally available on #beagle and #beagle-gsoc channel. I will be happy if anyone can gives me comment via email or IRC.

About me:
I am Kumar Sukhani, student of PICT college, India. My past projects

  1. “Virtualization on Android OS” [2]. It involved following tasks
  • Porting userspace LXC tools on Android OS
  • Virtualization of frambuffer and input device driver in Android goldfish kernel 2.6.29

Experience of this project will help me in project “Android under Angstrom”.

  1. Colloqmote: Mobile assisted user interface for desktop navigation and gaming[3] [4] .
  2. Submitting patches to OpenIntent - Android Open Source[5].

[1] http://lxc.sourceforge.net/
[2] http://youtu.be/UpIFByNLM5U
[3] http://code.google.com/p/colloqmote/
[4] http://www.youtube.com/colloqmote
[5] http://code.google.com/p/openintents/

Hello,

Generally speaking Android requires a running kernel and the processes communicate with each other over binder.

Please explain how you think you can “chroot” and boot Android?

Are you planing on using some form of virtualisation?

From reading your proposal It seems the “easy” way is doing things the other way around (POSIX programs have less system dependencies)

-boot Android (easy)

-run Angstrom in a chroot(easy). see https://github.com/keesj/gomo/wiki/AndroidGlibcChroot

-Install a vnc server app on Android

Good luck

Hello,

Generally speaking Android requires a running kernel and the
processes communicate with each other over binder.

Please explain how you think you can "chroot" and boot
Android?

A basic chroot setup has been done and demonstrated with the
multiOS image.

Android doesn't care how it gets control. I have personally used
chroot tricks to get stuff going over NFS myself. Boot kernel, run
a script to setup environment, chroot into Android and kick it
off. I did this for a demo many years ago where one binary kernel
can run different things (not dynamically like the multiOS image).
There are other examples of just chrooting into Android.

What you have to do is start it from the top with Android's
version of init.