Installing Gentoo on Android with chroot

Note: recently edited 8th Nov 2014

Installing Gentoo in a chroot alongside Android is easy, so if you already use Gentoo and have an Android phone, there's really no reason why you shouldn't do it. With a ginormous phablet like the Samsung Galaxy Note 2 and a bluetooth keyboard, you can get a super-mobile full Linux workstation everywhere you go.

Before we begin, let's see the pretty pictures. Here's Larry saying hello :) (Installing a talking cow should be the top priority once the base system is up and running)

Larry saying hello on Android

... and of course a shot of emerging stuff ...

Gentoo on Android compiling stuff

... and finally we're running Enlightenment 17 with the Webkit-based Midori browser with X, accessed via (Tight)VNC ...

[](enlightenment-android.png)

E17 on Android with Gentoo Linux

Installing Gentoo on Android

Prerequisites first: you'll need a rooted device. You'll also need a terminal with busybox. I recommend [Android Terminal Emulator] and [busybox by stericson]. I would also recommend installing [Hacker's Keyboard], which gives you a full keylayout.

Android Terminal Emulator

busybox by stericson

Hacker's Keyboard

Installing is rather straightforward: modern Android phones usually run on ARMv7 so just follow the [appropriate handbook]. If you are installing it onto your internal storage (not on an external SD), you can skip to chapter 5 :)

appropriate handbook

You will need to be root to install, so `su -` in your terminal emulator of choice. Similarly, remount Android into read-write so that you can create the necessary files for Gentoo with `mount -o remount,rw /`. Finally, remember to install in `/data/gentoo` instead of `/mnt/gentoo` so to not conflict with Android's mounting preferences.

Since we're only installing a chroot and not booting alongside android, you can safely skip configuring the kernel, configuring fstab, configuring networking, and setting up the bootloader.

When mounting, you will need to do so as root user, and use the busybox implementation for `--rbind` support, as so:

This is assuming you've put Gentoo in `/data/gentoo`

Android quirks

There doesn't seem to be a `/dev/fd` on Android, so let's fix that:

Portage won't be able to download files as it doesn't download as root, but instead as another user by default. No problem:

Sometimes I've noticed that on bad reboots the `/etc/resolv.conf` can get reset. This will cause host resolving issues. Resolving is as easy as:

It will be a good idea to set your main user to the same UID as the Android normal user. Also, running `id -a` in android will show you that your user is part of various reserved Android groups. To fix issues such as your Gentoo user's (in)ability to go online or use bluetooth, just create these groups in your Gentoo install with matching GIDs, and add your user to these groups. Here's a list of [Android UIDS and GIDS]. For example, I needed to add my Gentoo user to groups with GIDs 3003 and 3004 before it could successfully go online.

Android UIDS and GIDS

If you want an X server, VNC will do the trick. I recommend [android-vnc-viewer] 24-bit colour seems to work, and perhaps change the input method to touchpad rather than touchscreen so it's relatively usable.

android-vnc-viewer

Finally, with no fan and big heatsink on a mobile phone, you might find yourself running hot. So even though monsters like the Galaxy Note 2 have 4 cores, I recommend sticking it to `MAKEOPT="-j2"`