In this post I try to explain the steps I took to install Slackware64 on my Acer Chromebook C720p. Here is what I did:
- Installing a new Coreboot image
- Installing Slackware
- Installing a new kernel
- Fixing suspend if the lid is closed
Installing a new Coreboot rom
Even though the Coreboot version the device ships with includes a SeaBIOS for legacy boot support, there are a few reasons to replace the original firmware:
- You get a newer version of both Coreboot and SeaBIOS
- It doesn’t show the Chrome/Google splash screen anymore
- You’ll be able to upgrade your firmware
To achieve this, I followed more or less this tutorial: Switching to true Coreboot on the C720
This involves that you open up your device (and therefor void your warranty) and remove the write protect screw. But it’s definitely worth it and at least for me it all went flawlessly.
As explained in the above article, don’t put the write protection screw back. Otherwise you won’t be able to upgrade your firmware ROM without opening up your laptop every single time.
As soon as you replaced Coreboot, you are ready to install Slackware using your favorite install method. Since the Chromebook doesn’t come with a Ethernet port or a DVD drive it’s probably a USB image you’d want to use. If you stick with the original firmware, you need to add the kernel option
mem=1356. But with John Lewis’ firmware this bug is solved.
I didn’t do a full install and removed some of the KDE and XFCE stuff. I also didn’t install any documentation. My Chromebook came with a 32GB SSD which definitely isn’t plenty. You wouldn’t want to waste it on stuff you find online anyway.
Replacing the Kernel
The default 3.10 kernel Slackware 14.1 doesn’t support the touch screen or the touch pad. You need a later kernel version. For your convenience I built a Linux 3.18.1 kernel based on the huge.s configuration. You’ll find the package and the SlackBuild scripts here. But of course you could also build your own kernel or use my SlackBuild script.
Install the linux-chromebook package which installs a new kernel under
/boot/vmlinuz-chromebook-3.18.1 along with the modules and a System.map file. You have to edit your
/etc/lilo.conf file to boot the new kernel. Add the following lines:
image = /boot/vmlinuz-chromebook-3.18.1 root = label = Linux-cb read-only
Since the kernel is based on the huge.s image you probably won’t need a init-ramdisk unless you have a LUKS encrypted LVM disc.
These Chromebooks have a known problem if you allow the touchpad or the touchscreen to wake the device from sleep. If you close the lid it touches the touchpad and the buttons touch the touchscreen which leads to a resume right after the machine suspended. For the current session this can be fixed with the following two commands:
# echo TPAD > /proc/acpi/wakeup # echo TSCR > /proc/acpi/wakeup
You can check whether it worked by checking the output of
# cat /proc/acpi/wakeup
To make this permanent add the two lines to the
/etc/rc.d/rc.local script which leads to them being invoked every boot.