Logo Computer scientist,
engineer, and educator
• Software  • The KBOX2 project

The KBOX2 project

KBOX logo
KBOX2 is now official retired, and has been replaced by KBOX3 which is a complete rebuild to support Android 5. KBOX3 should work on recent Android 4 devices as well. I am preserving these pages because I'm aware that some people can't use KBOX3, for one reason or another, but KBOX2 is no longer under active development.

KBOX is a port of Busybox and a number of other Linux utilities, packaged up in such a way as to be useable on a stock, non-rooted Android device. It works in conjunction with a terminal emulator, for example Jack Palevich's Android Terminal Emulator (see here; also available from the Android Market). KBOX provides a 'virtual root filesystem'; that is, under the KBOX shell the users sees what appears to be a conventional Linux filesystem, all of which is editable, despite the lack of root access. This technique is conceptually the same as that used by Cygwin to provide a Linux-like environment on Windows.

KBOX consists of a base distribution, and a number of optional packages. Packages can be downloaded to the device, and then installed at the command prompt using the dpkg utility. At present, major packages provided by KBOX include Perl, Dropbear (ssh support), gcc, Vim (full version), and rsync (client and server). Many smaller packages are also available, and more continue to be added.

The KBOX shell is launched from the terminal emulator like any other Linux program; most terminal emulators provide a way to set the default shell, so it's possible to make KBOX start up with the terminal emulator. In use, the KBOX shell presents a Linux-like filesytem, with the usual directories /bin, /usr etc. However, these are not the real locations of these directories, because these places are not writable (perhaps not even visible) to a non-root user. Instead, KBOX uses an Android port of the libfakechroot library to set up a virtual root filesystem. This filesystem can be rooted at any point in the Android filesystem the terminal emulator has write access to — the terminal emulator's own data directory is usually the best place.

All the utilities in the KBOX distribution have been specifically ported to run in the KBOX environemnt — Android is not Linux, as Google repeatedly tells us — and getting ordinary Linux desktop utilities to work in Android can be a chore, to say the least.

KBOX2 development diary
General thoughts on the progress of KBOX2, and the trials and tribulations of porting and developing for Android Linux
KBOX2 automated installation
Masaki Muranaka has produced an automated installer for KBOX2. This is available from the Android Market, and works with an existing installation of Jack Palevich's terminal emulator.
How it works
How the KBOX2 system installs, and how the KBOX shell provides an illusion of a root filesystem on an unrooted device
KBOX2 manual installation
How to install the base system, and add-on packages, under an Android terminal emulator app. This is the approach to use if the automated installer does not work, or if you want to use a different terminal emulator from the one it supports.
Differences from the previous version of KBOX
KBOX2 is a rather different system from the previous version, both in implementation and in operation. If you are considering moving from an earlier version, please read this first
Get the base system and add-on packages from here. Please read the installation instructions first — it isn't point-and-click
Frequently-asked questions
Please look here first if you have a question — it may already have been answered
Limitations and bugs
KBOX2 is a work-in-progress, and is far from perfect. Please read this section if things do not appear to work as expected
Source code access
Please read this if you're interested in getting the source code for KBOX2
See KBOX2 in action

Copyright © 1994-2015 Kevin Boone. Updated Jul 01 2015