Skip to content

Instantly share code, notes, and snippets.

@jjst
Last active August 29, 2015 14:02
Show Gist options
  • Save jjst/0cce85ba462c43f9d1aa to your computer and use it in GitHub Desktop.
Save jjst/0cce85ba462c43f9d1aa to your computer and use it in GitHub Desktop.
ChromebookPixel

Linux on the Chromebook Pixel

These are my personal notes on how to get Linux working on the Chromebook Pixel, common issues and how to solve them. This is not a step-by-step guide.

Installing custom OSes

Override ChromeOS and wipe the whole hard drive

This works, see instructions here: requires to boot into ChromeOS first to enable developer mode, then it's possible to hit Ctrl+L at startup and plug in a USB device with whatever OS you want. However, the BIOS settings are battery-backed, which means that if the Chromebook ever rans completely out of battery (e.g. if it left unplugged for a tid bit too long), developer mode will be disabled and it won't be possible to boot. The only way to reenable developer mode is from within ChromeOS... which isn't installed anymore :-). If this ever happens, you will need to reinstall ChromeOS, then enable developer mode, then reinstall your custom OS.

Crouton

The easiest, most straightforward way to run a fully fledged Linux distro alongside ChromeOS. Plus, you can switch between ChromeOS and Ubuntu (I don't think other distros are supported) instantaneously with just one keystroke. Instructions here.

I know that some advanced edge cases won't work with this method, for example there is no way to make the weird VPN setup work on either Crouton or ChromeOS.

ChrUbuntu

ChrUbuntu makes it possible to install another Linux OS (don't get fooled by the name, other distros than Ubuntu are supported) alongside ChromeOS by resizing the ChromeOS partitions without wiping them, effectively allowing you to dual-boot between ChromeOS and your OS of choice. This avoids the risk of having to reinstall everything if the Chromebook runs out of battery. This is my current setup, with Ubuntu Gnome 14.10.

Tested OSes

  • Elementary Luna: no proper HiDPI support, needs some fiddling around to be usable. Possible to double font size for everything, but the icons will still stay the same size, so the overall look and feel won't be great.
  • Ubuntu 14.04: Native HiDPI support, but 14.04 uses a 3.13 Linux kernel so suspend doesn't work properly for this, haven't tested yet)
  • Ubuntu 13.10: no HiDPI support, apart from that everything runs pretty smoothly.
  • Ubuntu GNOME 14.10: works smoothly

HiDPI support

HiDPI works smoothly out-of-the-box for Ubuntu GNOME 14.10 (it even detects that it runs on a HiDPI screen and sets the scaling factor even when booting from the Live USB). Unity supports HiDPI since 14.04, the scaling factor can be configured from the "Appearance" options.

Firefox

Firefox still needs some tweaking to get HiDPI working, but it's pretty easy. The AutoHiDPI extension will set the scaling factor automatically based on the screen resolution, this is the best option as it means that Firefox will scale correctly even when using an external non-HiDPI monitor. Change the minimum width for which HiDPI scaling is enabled to a value below 2560 in the extension settings, as the default threshold works for a standard 16:9 screen like a MBP retina but not for the Pixel.

Cursor size

Gnome 3.10+ knows how to scale the interface but doesn't scale the mouse cursor/pointer, so it will look ridiculously small. From https://ask.fedoraproject.org/en/question/26896/large-mouse-cursors-gnome3/, run:

$ gsettings set org.gnome.desktop.interface cursor-size 50

Swap config

ChrUbuntu install doesn't configure a swap partition, so if we don't want to run out of memory we better configure a swap file.

https://help.ubuntu.com/community/SwapFaq#How_do_I_add_more_swap.3F (look for Four-step Process to Add Swap File)

While we're at it, let's update the swappiness value to use swap less agressively.

$ sudo vim /etc/sysctl.conf

... and add (or replace) vm.swappiness=10 and save the file.

Second suspend fails

There is a bug in the tpm_tis module that causes suspend to fail the 2nd time. To fix it for Ubuntu 14.04 (Linux kernel 3.13) and later, this blog post recommends this workaround: put these arguments in your /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.lvds_downclock=1 tpm_tis.force=1 tpm_tis.interrupts=0"

Pre 14.04, you can also fix it by adding this to /etc/modules (but this WON'T work for more recent versions/Linux kernels 3.13+):

tpm_tis force=1 interrupts=0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment