Logo Computer scientist,
engineer, and educator
• Software  • 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 packages, notably 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 and installed.
  • 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.
Copyright © 1994-2015 Kevin Boone. Updated Aug 05 2015