Skip to content

Instantly share code, notes, and snippets.

@thirteen37
Last active June 6, 2020 07:47
Show Gist options
  • Save thirteen37/5559107 to your computer and use it in GitHub Desktop.
Save thirteen37/5559107 to your computer and use it in GitHub Desktop.
Installing Arch on the Chromebook Pixel

This describes my basic Arch Linux installation on my Chromebook Pixel.

Note: I'm a coward, so I installed Arch to an SD card instead of wiping out the existing SSD.

Requirements

  • SD card. A very minimal Arch installation with XFCE will need about 2GB, so I think 4GB is the minimum you can get by with.
  • Arch installer on a USB drive. The 2013.05.01 is broken with the recent netctl change. So either get an older or newer one.
  • Some Arch Linux familiarity.
  • Time, patience, and good eyesight.

Preparing the installation medium

As I've mentioned above, the 2013.05.01 installer is broken. I used the 2013.04.01 installer, but a newer version might be fixed. You will want to put it on a USB drive using these instructions.

Preparing the Chromebook

You will need to enter development mode and enable USB and legacy (BIOS) boot. Switching to development mode will blow away your existing ChromeOS settings and data, though whatever is synced to the cloud can be restored. If you've installed Crouton before, you would have done most of these steps and can skip to enabling USB and legacy boot.

Enter dev mode

  1. Hold down Esc and Refresh while powering on the Pixel. This took me a few tries.
  2. At the blank screen, press Ctrl-D.
  3. You will see a prompt to enter dev mode. Press Enter.
  4. Wait for the wipe. It will take about 5-10 minutes.
  5. After the wipe, every reboot will show the white dev mode screen. Press Ctrl-D at this screen to boot to Chrome OS.

Enable USB and legacy boot

  1. When in ChromeOS, start a terminal via Ctrl-Alt-T.
  2. Type shell to get a real bash prompt.
  3. Type sudo crossystem dev_boot_usb=1 dev_boot_legacy=1

Installing Arch

  1. Reboot the Pixel with your Arch installation medium plugged in. To spare yourself the confusion, do not plug in any other drives.
  2. At the white dev mode screen, press Ctrl-L to do a legacy boot.
  3. Ignore the "Press Esc" and the BIOS will default to the Arch installer.
  4. We will do a 64-bit install. Press Tab on the first installer option to edit the boot parameters.
  5. Add mem=4G to the end of the boot parameters and press Enter. Without this, the installer will fail to properly detect the amount of RAM and claim there's insufficient to load the kernel.
  6. You will end up at the Arch installer shell. At this point, I typically unplug the installation medium and insert the SD card. Too many drives makes me and Grub confused.
  7. You can follow the official installation steps.
    • My recommended partition settings are a single ext4 partition for everything. SD cards don't have much space anyway, and ext4 makes it readable via ChromeOS.
    • As usual when doing Arch installs from and to USB drives, watch out for the grub setup and the generated /etc/fstab. Your drive IDs may change when you next boot without the installation media.
    • Don't bother with the post-installation steps for now.

Booting into Arch

  1. At the end of installation, unmount your drives and reboot.
  2. From now on, if you want to boot to Arch, press Ctrl-L at the dev mode screen. You may need to explicitly select a boot device by pressing Esc at the SeaBIOS screen but I hadn't had a problem with the defaults so far.

Kernel upgrade

In Arch, you will want to check your kernel version. uname -r will show you the version number. Support for Chromebooks is built-in only in 3.9.0 and higher. If you are still on a 3.8 or lower kernel, you can install the new kernel from the testing repository.

  1. Edit /etc/pacman.conf and uncomment the two testing lines: #[testing] and the #Include line below that.
  2. Upgrade just the kernel using pacman: pacman -S linux.
  3. Edit /etc/pacman.conf and comment the two testing lines again.
  4. Reboot and verify you kernel has been updated.

The two new 3.9 modules that are needed are chromeos-laptop and atmel-mxt-ts. It doesn't matter which of these two modules are loaded before the other.

  • chromeos-laptop will be loaded automatically. Unfortunately, it doesn't seem to work well being loaded automatically. It needs to be manually unloaded and then reloaded via rmmod chromeos_laptop && modprobe chromeos_laptop. More info about the issue can be found here.
  • atmel-mxt-ts will not be automatically loaded. You can load it automatically by creating a file /etc/modules-load.d/chromeos.conf with a single atmel-mxt-ts line in it.

X installation

If you want X, you will need to install:

  • The Intel driver: pacman -S xf86-video-intel lib32-intel-dri
  • The trackpad driver (yes, use Synaptics even though it is an Atmel trackpad): pacman -S xf86-input-synaptics

Also, make sure you have loaded the chromeos-laptop and atmel-mxt-ts modules as described above. They are necessary for the touchpad and touchscreen to function.

XFCE

I recommend using XFCE for the desktop environment. It is lightweight (good for space-limited SD cards) and works well with the HiDPI Pixel display.

  1. pacman -S xfce4 gamin
  2. Start XFCE using startxfce4. If your trackpad is not working because you didn't load the modules as I described, use Alt-F1 (Alt-Back) to access the Applications Menu and log out.
  3. Change the DPI. Go to Applications Menu -> Settings -> Appearance. Go to the Font tab and set a "Custom DPI Setting". I find somewhere between 120 to 150 DPI is enough for me.

TODOs

  • Suspend/resume with SD card
@michoski
Copy link

Thanks for the tutorial. That was awesome.

Hey, do you know how to extend the functionality of the touchscreen to include "pinch-to-zoom" etc.? System is looking great, but kind of a shame to not utilize this great touchpad to the fullest.

@thirteen37
Copy link
Author

Grub installation steps are as documented on the Arch Wiki. The device to install to would be /dev/sdc (for the SD card) or /dev/sdb (for USB).

Double-check the generated grub.cfg to make sure it has the correct partition UUID.

@thirteen37
Copy link
Author

No idea about multi-touch support. Even on Chrome OS the multi-touch support is pretty limited.

@jonlorusso
Copy link

Given the chromeos_laptop module only needs to be unloaded and reloaded once, where should I put the command you list above?

@ByVictorrr
Copy link

ByVictorrr commented Jul 31, 2018

I get a black screen when after this step :
Ignore the "Press Esc" and the BIOS will default to the Arch installer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment