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.
- 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
- Hold down Esc and Refresh while powering on the Pixel. This took me a few tries.
- At the blank screen, press Ctrl-D.
- You will see a prompt to enter dev mode. Press Enter.
- Wait for the wipe. It will take about 5-10 minutes.
- 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
- When in ChromeOS, start a terminal via Ctrl-Alt-T.
shellto get a real bash prompt.
sudo crossystem dev_boot_usb=1 dev_boot_legacy=1
- Reboot the Pixel with your Arch installation medium plugged in. To spare yourself the confusion, do not plug in any other drives.
- At the white dev mode screen, press Ctrl-L to do a legacy boot.
- Ignore the "Press Esc" and the BIOS will default to the Arch installer.
- We will do a 64-bit install. Press Tab on the first installer option to edit the boot parameters.
mem=4Gto 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.
- 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.
- 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
- At the end of installation, unmount your drives and reboot.
- 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.
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.
- Edit /etc/pacman.conf and uncomment the two testing lines:
#Includeline below that.
- Upgrade just the kernel using pacman:
pacman -S linux.
- Edit /etc/pacman.conf and comment the two testing lines again.
- 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-tsline in it.
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.
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.
pacman -S xfce4 gamin
- 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.
- 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.
- Suspend/resume with SD card