Maru: a pocket desktop
Maru, in its current state, is clearly not for everybody; it is currently running in a "private beta" and only works on the Nexus 5 handset. As luck would have it, your editor is in possession of both the hardware and the patience to wait until his number came up for a beta invitation. Playing with this system shows that there are some issues to deal with yet, but the idea has a lot of potential.
Installing Maru will be a familiar process to anybody who has flashed an Android device. The bootloader must be unlocked, and the owner needs to be cognizant of the fact that all data on the device will be overwritten; then it is just a matter of a couple of fastboot flash commands. Or it should be: that resulted in a phone that got stuck looping through the interminable "optimizing apps" process — amusing at first, but even your editor, who is easily amused, found it tiresome by about the fourth time through. Explicitly wiping the data area (using the TWRP recovery image) and starting over got past that issue.
The installation results in a standard — if severely minimal — Android "Lollipop" system; Maru has not made the move to the Marshmallow release. As is always the case with a third-party build, the Google apps are not there; they can be added from the Open GApps repository if desired — though it is somewhat assumed that the user knows how to do this. There are reports that only the "pico" version of Open GApps will actually fit on the device after the Maru installation; the 32GB device used here still had 26GB of free space, though, and was not so constrained.
Experiencing Maru as anything but an Android device requires some additional hardware in the form of a Bluetooth keyboard, a Bluetooth mouse, and a USB-to-HDMI dongle. The latter device plugs into the phone's USB port and allows the handset to drive an ordinary monitor (or television); the documentation advises buying one that allows for a power connection, since running in the desktop mode can drain the battery quickly.
Once the Bluetooth devices have been paired and the monitor connected, the
user is presented with an attractive XFCE desktop (for those who,
inexplicably, think that translucent terminal emulators are attractive, anyway).
At least, that happens
briefly. One of the first discoveries is that the desktop is only active
when the handset screen is on, and desktop activity does not keep the
handset from timing out and shutting down. So working on the desktop
happens in 30-second bursts, separated by (hopefully shorter) bursts of
profanity. Making the system usable
requires setting the timeout value to a high number, which may not be what
one wants when the desktop is not in use. This, perhaps, is part of why
running the desktop tends to drain the battery quickly.
With the external keyboard and mouse, the desktop works as one would expect. A lot of the basic utilities are present, and some not-so-basic ones (e.g. LibreOffice) as well. Anything else can be had in the usual manner from the Debian repository. The desktop is surprisingly responsive; even LibreOffice is able to launch within a few seconds. Building kernels is probably a poor idea, but the device clearly has the power to handle most day-to-day tasks.
There is no access to Android apps in the Debian desktop, of course, and the desktop never appears on the handset screen. The two are separate worlds living on the same device. The one exception is that the Android data area has been mapped into the Debian world, so that, for example, photos taken with the camera can be accessed on the Debian side.
If one pokes around with a shell, what one finds is an apparently complete Debian distribution running; it even has systemd running the show. The system has been thoroughly isolated from the Android system (some reports on the net say that LXC containers are being used). Except for the access to Android's data area, the Android side of things might as well not be there from Debian's point of view. The Debian system does run on the Android kernel, though (it's not in a virtual machine), so an enterprising attacker could probably find a way to break through that barrier.
Some parts of the system are not entirely at ease with this setup. Systemd, for example, duly logs that the time has been changed — every second. But as a whole it seems to work well.
Anybody looking for the source to Maru will, for now, be disappointed; it does not appear to be available. That might strike some people as surprising, given that it is, in the end, a distribution of Debian, much of which is covered by copyleft licenses. Back in February, Maru creator Preetam D’Souza announced that the distribution would be open-sourced, almost as if it were a new idea. Since then, though, there has been no visible progress on that front. Maru is, thus, quite clearly violating the GPL at the moment. One gets the impression of a small (i.e. one-person) project struggling to cope with a larger-than-expected level of interest. One of the best ways to do that, though, would be to get the source out there and let the community help. Hopefully this issue will be straightened out in the near future.
One might be tempted to ask where a distribution like this might be useful. The advantage of a smartphone is its portability; lugging around a keyboard, mouse, HDMI adapter, and, possibly, monitor tends to detract a bit from that. It is probably easier to just pack a laptop and be done with it. But if the peripherals are available in multiple locations, and all that needs to be carried is the handset, the appeal becomes a bit more clear.
What would be nice, of course, would be a higher degree of integration
between Android and Debian, making the device a bit less schizophrenic than
it is now. It would be useful, for example, if applications from either
side could appear on either the device screen or the external desktop.
That is asking a lot, though, considering just how foreign much of the
Android system is relative to a typical Linux desktop distribution. But,
perhaps, if the two cohabitate for long enough, they will eventually learn
to trust each other a bit more. In the meantime, Maru is an interesting
experiment in running a Linux desktop in an Android setting.
