I dumped my MacBook Pro for an Acer CB3-431 Chromebook (and a powerful desktop) a couple of months ago and things couldn’t be going better for the most part but I really wanted to try running Linux on my Chromebook for a couple of reasons. Firstly – it’s cool and I’m a geek, secondly it would be useful to have dev tools directly on my Chromebook without the need to remote desktop to my machine at home.
I had originally considered just installing Linux as its own operating system and dual-booting to Chrome OS but realised that not only is that a little risky as support isn’t fully there for my model and I may well brick it – but that there is no point in me having purchased a Chromebook if I just use it as a cheap PC. The real utility of the Chromebook is the long battery life and I wanted to keep that.
Crouton is a set of tools that allow you to create a chroot environment within Chrome OS. In short chroot allows any process to see a different file system. That means that it can, in some way, create a “virtual machine” but without any virtualisation – the process itself is running on the same root operating system but it sees a completely different disk structure. This has been used over the years to allow people to have “private servers” that were shared long before the days of readily available VMs. This is where the ideas used in many containers such as Docker came from.
Since Chrome OS is just Linux under the hood that means we can run chroot with enough downloading of files and configuring bits and pieces. Crouton is a tool that makes this easier, managed the downloading and includes a few scripts that aid integration with Chrome OS. There’s lots you can do with it (such as having multiple chroots) but for now I’m just going to run a standard Ubuntu 14.04 chroot. This is the latest “fully tested” version although you can even run the latest 16.10 of Ubuntu or entirely different distributions.
Setting up Linux
Note that you may need an external keyboard as part of this process and that I have not tested this on ARM Chromebooks. In terms of disk space I used about 8GB so you’re going to want at least 16GB total space on your Chromebook.
- First you need to backup the files on your Chromebook – the first thing that will happen is everything will be wiped off it. This primarily means anything in your Downloads folder as everything else should be backed up the cloud.
- Turn off the power to your Chromebook
- We now need to enable developer mode. This allows us to install everything we need and have the access level we want to the Chromebook. The risk here is that the operating system is less secure in some ways but lets assume you’re happy with that since you’re wanting to install Linux anyway.Hold down Escape and Refresh and press the power button. Release the power button but keep the Escape and Refresh held down until you see yellow exclamation mark saying “Chrome OS is missing or damaged”.
This works for most Chromebooks, some other models may require a different key combination. You can get more information here.
- Press CTRL+D to enter developer mode
- Press enter to confirm this
- The Chromebook will reboot briefly and come up with a screen saying “OS verification is OFF”. This will now appear every time you reboot. If you press space the Chromebook is restored to its factory default so you will lose your chroot and all files – don’t press that unless you want to!You can either wait 30 seconds through some loud beeps or press CTRL+D here again to boot.
- A 30 second countdown begins giving you a last chance to cancel this – turn off your Chromebook if you aren’t sure at this point.
- Wait for the Chromebook to be reinitialised in developer mode.
- When it reboots you will see “OS verification is OFF” warning again – press CTRL+D
- This step is optional. It provides more advanced debugging access to your Chromebook such as setting up a root password (good for security), the ability to boot form USB and opening up remote SSH access (useful, but a theoretical attack surface increase). I chose to do this – press the “Enable debugging features” in the bottom left corner of the welcome screen.Enter the root password you want, confirm everything and reboot again.
- Go through the standard Chrome OS setup process – connect to WiFi, sign in to Google and chose a profile picture.
- Start Chrome and wait for any addons to install that your profile has.
- If you did the optional step for enabling developer features you need to press CTRL+ALT+F2 (F2 is the forward arrow on the top row of keys) to get to a terminal.Enter root as the login and enter the password you selected in step 10.
Type in “chromeos-setdevpasswd” and then press enter.
You must select a password for your local Chrome OS account – this will be used when you type in “sudo” for access to privileged commands. Follow the prompts to enter and confirm your password choice.
Press CTRL+ALT+F1 (F1 is the back arrow on top row of keys) to get back to Chrome.
- Download Crouton from https://goo.gl/fd3zc
- Press CTRL+ALT+T to start a terminal.
- Type in “shell” to re-enter the shell
- Type in “sudo sh ~/Downloads/crouton -r trusty -t xfce,extension,xiwi” and press enter.If you did the optional step you’re going to be prompted to enter the user password you entered in step 13.
This says to install the Ubuntu “trusty” release (14.04) with the XFCE window manager and support for the Chrome OS extension that allows copy/paste in to your Ubuntu install and Xiwi which allows you to see your chroot within a Chrome tab if you desire. If you want to use Unity instead of XFCE then swap xfce for unity in the above.
There are many other Linux distributions, releases and targets you can chose from – see the Crouton page for more info.
- This takes a while so while it’s running you probably want to download the Chrome OS extension for copy/paste support from the Chrome app store.
- At the end of the install you will be prompted for a username and password to use in your chroot. In some cases your keyboard may not work at this point so I got an external keyboard to enter the username and password.My mouse was also not working so once I’d entered the username and password I typed in “reboot” to reboot the Chromebook.
The reboot cycle (which you’ll want to do whenever you want to get back here) is:
- Press CTRL+D at the boot warning
- Restart Chrome
- Press CTRL+ALT+T to get back in to the terminal
- Type in “shell” and pressed enter to get back to the Linux shell
- You’re ready to start Linux – type in “sudo startxfce4” (or sudo startunity if you elected Unity as your window manager) and wait a few seconds. It’s OK if some red error text appears saying “Error not connected”.
- Ta da! You’re in Linux. There are a few things you’ll want to do now. I started a terminal in my chroot and then did the following:sudo passwd root
Here I first had to type in my password I had entered in step 18 then selected a root password for the chroot and confirmed it.
Next I wanted to install some basic software – Firefox and the Software Center for Ubuntu. Do this in your terminal with:
sudo apt-get install firefox software-center
Finally make sure you have the latest packages by running:
sudo apt-get update
sudo apt-get upgrade
- You now have the basics of an Ubuntu install and should be good for you to install whatever else you want.
- You can get back to Chrome OS by either logging out of Ubuntu – the chroot will be stopped or you can switch dynamically between Linux and Chrome OS by pressing the “switch windows” button on your keyboard (F5)
I’ve been using this for a few days now and went on to install Libre Office, developer tools for computer vision and genetic algorithms, a full Java developer environment and a bunch of other tools. I’m using about 8GB of total space and it’s all working wonderfully. Firefox was super slow within the chroot so I did install Chrome in there as well – although running Chrome from Chrome OS rather than the chroot is definitely recommended.
I have noticed a battery change when running all this but it’s hard to quantify – at a guess I’d say maybe a 10-20% loss when I’m using the chroot but that has to factor in the work I’m doing in my chroot is developer work rather than just basic web browsing.
The whole process took me an hour including figuring out a few issues I had (15 minutes wasted on various Java packages and 10 minutes figuring out how to set the local Chrome user password) so you should be able to get this done in about 45 minutes once you’ve got your data backed up.
If you want to add some more functionality to your Chromebook I’d definitely recommend this – it’s super easy to do and extends what you can do so much whilst still leaving Chrome OS in tact with all the benefits it offers.