anbox: run a full Android system on any GNU Linux
Anbox
Anbox is container based approach to boot a full Android system on a regular GNU Linux system like Ubuntu.
Overview
Anbox uses Linux namespaces (user, pid, uts, net, mount, ipc) to run a full Android system in a container and provide Android applications on any GNU Linux based platform.
The Android inside the container has no direct access to any hardware. All hardware access is going through the anbox daemon on the host. We’re reusing what Android implemented within the QEMU based emulator for Open GL ES accelerated rendering. The Android system inside the container uses different pipes to communicate with the host system and sends all hardware access commands through these.
For more details have a look at the following documentation pages:
- Android Hardware OpenGL ES emulation design overview
- Android QEMU fast pipes
- The Android “qemud” multiplexing daemon
- Android qemud services
Anbox is currently suited for the desktop use case but can be used on mobile operating systems like Ubuntu Touch, Sailfish OS or Lune OS too. However as the mapping of Android applications is currently desktop specific this needs additional work to supported stacked window user interfaces too.
The Android runtime environment ships with a minimal customized Android system image based on the Android Open Source Project. The used image is currently based on Android 7.1.1
Installation
The installation process currently consists of a few steps which will add additional components to your host system. These include
- Out-of-tree kernel modules for binder and ashmem as no distribution kernel ships both enabled.
- A udev rule to set correct permissions for /dev/binder and /dev/ashmem
- A upstart job which starts the Anbox session manager as part of a user session.
To make this process as easy as possible we have bundled the necessary steps in a snap (see https://snapcraft.io) called “anbox-installer”. The installer will perform all necessary steps. You can install it on a system providing support for snaps by running
$ snap install --classic anbox-installer
Alternatively you can fetch the installer script via
$ wget https://raw.githubusercontent.com/anbox/anbox-installer/master/installer.sh -O anbox-installer
Please note that we don’t support any possible Linux distribution out there yet. Please have a look at the following chapter to see a list of supported distributions.
To proceed the installation process simply called
$ anbox-installer
This will guide you through the installation process.
NOTE: Anbox is currently in a pre-alpha development state. Don’t expect a fully working system for a production system with all features you need. You will for sure see bugs and crashes. If you do so, please don’t hestitate and report them!
NOTE: The Anbox snap currently comes completely unconfined and is because of this only available from the edge channel. Proper confinement is a thing we want to achieve in the future but due to the nature and complexity of Anbox this isn’t a simple task.
Supported Linux Distributions
At the moment we officially support the following Linux distributions:
- Ubuntu 16.04 (xenial)
Untested but likely to work:
- Ubuntu 14.04 (trusty)
- Ubuntu 16.10 (yakkety)
- Ubuntu 17.04 (zesty)