But already one of the most important milestones in this project has been achieved: performance. As a matter of fact, I feel no difference in terms of interface usability in contrast to my usual work environment. Moving windows around, sending them to other workspaces, shifting between workspaces, using the HUD and Lenses, all is fast and fluid. The Tegra K1 is proving an able CPU for desktop work, but for a fraction of the cost, space and power.
Last time I explained that after going through a number of different methods trying to install a desktop Linux without success I decided to step back for a while. I went to back to basic reading and internet searching looking for a viable solution. Things finally started changing for the better when I dropped a question at the ChromiumOS forum. Folk there are quite nice, and even though my issues were unrelated to their domain, I finally started getting valuable feedback.
For starters, I was directed to the Chromebook CB5-311 development page, where it is stated very clearly that booting from USB drives is not supported with the Tegra K1. All this time I had been trying to do something that is apparently impossible. What is more, following the leads at the ChromiumOS forum I came to realise that almost all the of the "desktop Linux on Chromebook" install guides out there only apply to a restricted set of x86 architectures. For some reason, in none of these guides is listed the hardware to which it applies (or on which it was tested).
By this time it became clear I could only trust install methods developed specifically for the Tegra K1. But the only one I knew failed to install a fully functional ChrUbuntu on the internal SD. Fortunately, leads to alternative methods started showing up.
Carefully searching the web I found a link to a raw guide created by Cosmin Gorgovan that promised to created a bootable MMC card from which a desktop Linux could be run. Soon after, a newbie user answered one of the questions I had left at StackExchange pointing to a script using a similar method to install ChrUbuntu on a bootable MMC. I went shopping for a 32 Gb MMC card and started tinkering. While none of the methods was usable out of the box, carefully going through them and with the precious help of Cosmin and Caglar I was able to get there.
The critical point is the partitioning of the MMC card; two different partitions are required, one containing a minimal boot kernel specific to the Tegra K1 and a second hosting the Linux root file system. I confess I do not fully understand what is going in the first partition, but it seems like some sort of master boot record - this is something I will investigate further. With both partitions created in logical positions 6 and 7 it was then possible to run the ChrUbuntu install script without flaws. I forked this repository and added a script that automatically formats the MMC card as required.
After trying for so long I was slightly unsettled when I inserted the MMC card in the slot and pressed the power button; then Ctrl+U at the scary seen and immediately the familiar Linux kernel messages started showing up. It finally settled with an Xfce log on screen. I though I had asked for Ubuntu, but who cares, I now have a desktop Linux up and running on the Tegra K1! How cool is that!?
But it is not all roses, even though it is already an able system for many tasks, a number of things are not yet functioning properly. A short list goes below, starting with the hardware and moving on to the software.
- Touchpad - up until now I had hardly used it, spending most of the time in the command line. I find it hardly usable, since it tracks movement and clicks at the same, many times it takes a single click for drag-and-drop. I am also unable to issue right clicks, on the web folk speak of using two fingers, but for some reason it does not work for me. For now I am forced to use an external mouse.
- Keyboard - from the onset it was obvious it would be a problem. The lack of a Super key is particularly grave, especially with Unity. An external keyboard is a must.
- Sound output - the headphones socket issues no sound at all. The system is able to identify it and provides volume controls, but nothing comes on the other end of the cable; something seems wrong with the hardware itself. Luckily I have a USB sound card at hand.
- Unity over HDMI - this was the very first piece of software I installed, it works really good, fluid and crisp as in my x86 laptop. However, when connected to an external monitor through an HDMI cable it sometimes creates black borders around windows and menus. This is an erratic event, to which I have no explanation.
- RabbitVCS - this is one of those small programmes that you only get notice when it is not there. I use it mostly as an extension to Nemo (the second piece of software I installed) but is failing to install due to unmet dependencies.
- ownCloud - another of the first programmes to install since I use it to synchronise data and meta-data of other programmes (e.g. Tomboy). It did install alright, but could not connect to my OwnDrive account. After contacting support, I understood the official Ubuntu repositories are providing an old version of ownCloud (1.5) that is no longer supported by OwnDrive (requires version 1.8 or later). However, there is a mismatch among the packages made available from the ownCloud repositories, some are provided in version 2.0 and others in version 1.5. This is the most serious issue I have in hands right now, and it seems I will need to compile ownCloud myself. Luckliy, the folk at OwnDrive have shown quite helpful.
And that is where I am at the moment. As I wrote in the introduction, the Tegra K1 has already proved an able architecture for desktop work with a full fledged operating system. I can now perform various daily tasks with this step up. From now on it is mostly a matter of succeeding in installing the software I need.
While I wait for some resolution to the issue with ownCloud, I will now move on to more work related software: Git, Java, Eclipse, LaTeX. Keep an eye on this space for further updates on this project.