I was recently looking for a cheap laptop to run Linux on, mostly for programming. I settled on the Asus C201PA Chromebook for two reasons: I have good experience with Asus Hardware, and there were many success stories of people running Linux on it.
Kali Linux have an image available for the Chromebook Flip, which is almost identical to the C201PA. Installation is really straightforward, but I’m going to detail how I did it here since I ran into a few issues.
First, put the Chromebook into Developer Mode (warning: this will erase all personal data in ChromeOS). This lets you boot other operating systems. To do this, hold down ESC + REFRESH (F3) and touch the Power button. When the Chromebook reboots, select Recovery, then press CTRL + D. This boots ChromeOS in Developer Mode.
Once booted, press CTRL + ALT + T to open the terminal. Write
to get the shell, then
to get root. In order to boot Linux from a microSD or USB drive, run the command
which enables USB booting.
Now you need to prepare the MicroSD (or USB) drive with Kali Linux. Download the Kali Linux image to your computer (or Chromebook) and run
xzcat kali-$version-veyron.img.xz | dd of=/dev/sdx bs=512k
Substituting $version with the specific version you downloaded. /dev/sdx would be your MicroSD card or USB drive (be extra careful to get it right, as the dd command will erase your drive!).
This is where I started to run into a small issue: The Kali image is made for an 8 GiB drive, and I was using a 16 GiB. This meant 8 GiB completely unusable space on the drive. To solve this, you need to use parted and cgpt (cgpt is part of vboot-utils) to change the size of the root partition:
Where /dev/sdx is once again your Kali drive. Parted will complain that not all the space appears to be used, and that it can fix it for you. Let it do so. Unfortunately, we are not done yet. If you try to boot Kali now, you will find that the drive is unbootable.
You’ll have to run
cgpt show /dev/sdx
And write down the number in the column Start at the row Sec GPT table. We need this number to calculate the size of the root partition for the next command:
cgpt add -i 2 -t data -b 40960 -s `expr X – 40960` -l Root /dev/sdx
where X is the number you just found. Careful, the “`” is the key to the left of the “1” (on UK keyboards).
Repair the partition layout using
cgpt repair /dev/sdx
Re-add the boot partitions by
cgpt add -i 1 -S 1 -T 5 -P 10 -l KERN-A /dev/sdx
cgpt add -i 2 -S 1 -T 5 -P 5 -l KERN-B /dev/sdx
And finally, expand the root filesystem by:
mount /dev/sdx2 /mnt/tmp
Assuming /mnt/tmp exits, and then
Finally, the microSD or USB drive is ready! Plug it into the Chromebook, power it on, and press CTRL + U at the white boot screen to boot from USB. Kali Linux should now boot and present you with the login screen. Username is root, password is toor.
You should change the root password with ‘passwd’, and if you decide to use Kali for everyday use, I’d recommend adding a new user with
useradd -m -s /bin/bash (username)
And then install and use sudo for when you need elevated privileges.
Apart from Kali, it is also possible to install and run Arch Linux. I have it running on another microSD card, but have to solve some issues before I’m happy with it (probably related to the framebuffer).
I’ve also tried installing Gentoo Linux, and got as far as running it but was unable to get the network adaptors working. They need pre-compiled modules that I was not able to load. If I ever get it working, I’ll make a new blog post about it. Gentoo is what I’m running on my desktop and Raspberry Pi, and would prefer to run it on the Chromebook too.
I’m also debating whether to move Kali or Arch to the internal memory, wiping ChromeOS. I have still to make that decision, though.