Installing a Debian chroot on Android

This is an account of installing vanilla full-fat Debian squeeze in a chroot on Android.

This was tested on a Vodafone 845 ( a re-branded HuaWei u8120 / Joy / Ascend).

Then, on a workstation ( any architecture), insert the µSD card, and:

  sudo debootstrap --arch=armel --variant=minbase --foreign  squeeze  /media/PHONE\ CARD/squeeze  http://mirror.local:9999/debian

Then remove the µSD card and replace it in the phone, start SSHDroid and SSH to the phone, then:

  mount -o remount,exec,dev /mnt/sdcard/
  chroot /mnt/sdcard/squeeze/  /bin/bash -l
  debootstrap/debootstrap --second-stage

Then build up the Debian system as you normally would a minimal installation.

Many thanks to all the people whose hard work made it so trivial for me to install the environment I know and love on my phone.

Available memory

Android pre-loads applications ( in some case that the user has never started) when there is free memory. This reduces the memory available to applications in a chroot.

It looks like the *_MEM properties in /init.rc along with the /sys/module/lowmemorykiller/parameters/minfree might help.

This seems to work for me so far: Go to the Android root ( start telnetd -l /system/xbin/bash from Android if you wish to telnet localhost from your chrooted SSH), then:

mkdir /dev/bin
cp -a /system/bin/* /dev/bin/
cd /dev/bin/
mv app_process app_process.orig
ln -s sleep-forever app_process # have to compile sleep-forever first
mount -o bind /dev/bin /system/bin
killall zygote # actually killed the pid because I don't have killall yet

The display is now blank and hopefully ready for SDL.