• The KBOX3 project
What's new in KBOX3
The most obvious difference between KBOX3 and KBOX2 — and the reason
that KBOX3 exists — is that KBOX3 attempts to support Android 5 and
later. KBOX3 should also work on modern Android 4 devices and,
as it now contains everything that KBOX2 contained and more, the
only good reason to continue to use KBOX2 is because KBOX3 does not
work for some reason.
Other differences from KBOX2 include the following.
- All binaries are now built to be position-independent. This is a new
requirement in Android 5.
- There are a number of other, minor changes for Android 5 compatibility,
such as setting a bunch of new environment variables that the Bionic
C library now insists on.
- The manual installation process has been slightly simplified, so
there are fewer commands to type to install KBOX3.
- Some packages have been updated to later versions.
- Some utilities have been moved out of the base system and into separate
groff (needed for manpages) and
file. Some standard libraries have gone the same way (ncurses and
readline, for example.) This is because the
base system is fiddly to patch when bugs are detected, while packages can
easily be updated with newer versions. So for ease of maintenance it makes
sense to use packages as much as possible. The downside is a slightly more
fiddly initial setup, as most likely more packages will need to be downloaded
- The KBOX shell wrapper (
kbox_shell) now takes arguments,
as a real shell should. This change is unlikely to be user-visible, but it
has important implications for porting applications to KBOX that spawn
a shell. For example, you can now invoke the SSH server with a command-line
ssh user@host command...), and the command will be
executed in the KBOX environment. This was not previously possible, because
kbox_shell could only invoke an interactive Busybox shell.
- Some packages that were never publicly release for KBOX2 have
now been made available.
- Most utilities now link libraries dynamically rather than statically;
problems with dynamic linking in older Android versions made this
difficult in KBOX2. Again, this change is unlikely to be very visible to
the user, but you will notice that more package declare explicit
dependencies on libraries, which will need to installed first. This change
was desirable because it is not possible to fix bugs in a library without
rebuilding and redistributing every package that uses that library.
- There is some preliminary support for building and running Java
code at the command-line.