In This earlier posting – out of several – I had explained, that I’ve installed the Android apps “GNURoot Debian” and “XSDL” to my old Samsung Galaxy Tab S (first generation). The purpose is, to install Linux software on that tablet, without requiring that I root it. This uses the Android variant of ‘chroot’, which is actually also called ‘proot’, and is quick and painless.
However, there are certain things which a ch-rooted Linux system cannot do. One of them is to start services to run in the background. Another is, to access hardware, as doing the latter would require access to the host’s ‘/dev’ folder, not the local, ch-root’s ‘/dev’ folder. Finally, because XSDL is acting as my X-server, when GNURoot’s guest-software tries to connect to one, there will be no hardware-acceleration, because this X-server is really just an Android app, and does not really correspond to a display device.
This last detail can be quite challenging, because in today’s world, even many Linux applications require, direct-rendering, and will not function properly, if left just to use X-server protocol, à la legacy-Unix. One such application is any serious Web-browser.
This does not result from any malfunction of either Android app, because it just follows from the logic, of what the apps are being asked to do.
But we’d like to have a Web-browser installed, and will find that “Firefox”, “Arora” etc., all fail over this issue. This initially leaves us in an untenable situation, because even if we were not to use our Linux guest-system for Web-browsing – because there is a ‘real’ Web-browser installed on the (Android) host-system – the happenstance can take place, by which a Web-document needs to be viewed anyway – let’s say, because we want to click on an HTML-file, that constitutes the online documentation for some Linux-application.
What can we do?
Under Debian / Jessie, there exists a package named ‘netsurf-gtk’. This is an ultra-light-weight Web-browser, that nevertheless succeeds at rendering basic HTML, that has been compiled to run under the ‘armhf’ platform, which our packages need to be, in order to be installable as binaries, and ‘netsurf’ does not require direct-rendering.
I’ve installed it, and the result is as below:
Now, there are two caveats with this:
- Netsurf complains that it cannot access shared memory.
- This does not make Netsurf the default browser, because the assumption made by Debian maintainers is, that the user would like to have a more-serious browser as his default browser.
Issue (1) above should not be remedied. There does exist a preloadable shared library, that makes Android shared memory available to GNURoot, but it breaks the ability of a file-association to execute a binary directly, and, this plug-in does not work reliably. It really only needs to be used, if we want the fast playback of videos, say at 30FPS.
Issue (2) above can be resolved. We can create a symlink to ‘/usr/bin/netsurf’, and place it in the directory ‘/usr/local/bin’, and the name of that symlink should be ‘x-www-browser’. The reason not to put this symlink directly into ‘/usr/bin’, is the fact that the package-manager will use that location, in order to set up package-installed ‘Alternatives’, and so for the user to place anything there most-probably creates a conflict.
ln -s /usr/bin/netsurf /usr/local/bin/x-www-browser
BTW, On that tablet, GNURoot is currently consuming 4.23GB of storage, which is therefore also close to the size of my Linux guest-system.