chrx

Install Linux onto your Chromebook. Dual-boot alongside ChromeOS for maximum flexibility.

works on Most Chromebook models. See chromebooks.
installs Several Linux distributions. See operating systems and recommendations.

chrx.org
github.com/reynhout/chrx

status

Version 2.2.7 Updated for Ubuntu 16.04; Installs GalliumOS by default. See changelog.

usage

Installing Linux via chrx onto a new (or freshly recovered) Chromebook is a two-phase process:

If you reinstall later, or switch to a another distribution, chrx will skip directly to phase two.

step-by-step

  1. Enable Developer Mode (process is model-specific; for Acer C720, press ESC+F3(Refresh)+Power), then reboot
  2. Load ChromeOS by pressing CTRL+D at the white "OS verification is OFF" screen
  3. Configure your Wi-Fi network, if necessary
  4. Switch to Virtual Terminal (VT) 2 by pressing CTRL+ALT+F2(top row right arrow)
  5. Log in as user chronos (no password) to enter chronos@localhost shell
  6. Update firmware, if necessary (required for Bay Trail models, recommended for Broadwell models, optional for Haswell models -- see chromebooks)
  7. Run chrx: curl -Os https://chrx.org/go && sh go (see options)
  8. Follow on-screen instructions to prepare your Chromebook for installation
  9. Reboot, then repeat steps 2-5 and 7 to install and configure your new system

options

chrx can accept several command-line options:

Usage: chrx [ option ... ]

Options
   -d DISTRIBUTION OS-specific distribution to install [galliumos]
                   (galliumos, ubuntu, lubuntu, xubuntu, kubuntu, edubuntu)
   -e ENVIRONMENT  distribution-specific environment [desktop]
                   (desktop, minimal, standard, server)
   -r RELEASE      distribution release number or name []
                   (lts, latest, dev, 15.10, 16.04, wily, xenial, etc)
   -a ARCH         processor architecture (i386, amd64) [amd64]
   -t TARGETDISK   target disk (/dev/mmcblk1, /dev/sdb, etc) []
   -p PACKAGE      additional packages, quote or repeat for multiple []
                   (chrome, kodi, minecraft, steam, etc)
   -H HOSTNAME     hostname for new system [chrx]
   -U USERNAME     username of first created user [chrx]
   -L LOCALE       locale for new system [en_US.UTF-8]
   -Z TIMEZONE     timezone for new system, Eggert convention [America/New_York]
                   (America/San_Francisco, Europe/Amsterdam, Etc/UTC, etc)
   -n              disable success/failure notifications
   -s              skip all customization, install stock OS only
   -y              run non-interactively, take defaults and do not confirm
   -v              increase output verbosity
   -h              show this help

  Default values are shown in brackets, e.g.: [default].

  If TARGETDISK is not specified, chrx will select the internal SSD.

packages

chrx can install additional software packages after installing your new operating system, using the -p PACKAGE option.

You can install any package in the Ubuntu repositories via this method, plus a few non-Ubuntu packages for which chrx has special handling, and some aliases for convenience:

To install multiple packages from the chrx command line, you can repeat the -p PACKAGE option as many times as you need, or you can quote the argument, e.g.: -p "gimp blender inkscape".

examples

GalliumOS Desktop (latest), verbosely:

curl -Os https://chrx.org/go && sh go -v

GalliumOS Desktop (latest), plus packages:

curl -Os https://chrx.org/go && sh go -p "minecraft steam kodi"

Lubuntu Desktop (latest):

curl -Os https://chrx.org/go && sh go -d lubuntu

Ubuntu Standard, version 16.04, system name hal, first user dave, including some administrative tools:

curl -Os https://chrx.org/go && sh go -d ubuntu -e standard -r 16.04 -H hal -U dave -p admin-misc

advanced usage

You may choose to host or cache these installation files yourself. There are many good reasons to do so, especially if you'll be doing a large number of installations. However, setup can be somewhat more complicated, and instructions are outside the scope of this README.

To point chrx at your cache, just set the CHRX_WEB_ROOT environment variable before running the go script, like this:

export CHRX_WEB_ROOT="http://myserver/chrx"
curl -O $CHRX_WEB_ROOT/go && sh go

compatibility

chromebooks

status chromebook hwid notes
Acer C720 PEPPY Best-tested
Acer C720P PEPPY
Acer C730 GNAWTY Firmware update required
Acer Chromebook 11 (CB3-111) GNAWTY Firmware update required
Acer Chromebook 11 (CB3-131) GNAWTY Firmware update required
Acer Chromebook 11 C740 PAINE Firmware update recommended
Acer Chromebook 15 (CB3-531) BANJO Firmware update required
Acer Chromebook 15 (CB5-571) YUNA Firmware update recommended
Acer Chromebook 15 C910 YUNA Firmware update recommended
Acer Chromebox CXI MCCLOUD
Acer Chromebox CXI2 RIKKU Firmware update recommended
ASUS C200 SQUAWKS Firmware update required
ASUS C300 QUAWKS Firmware update required
ASUS Chromebox PANTHER Firmware update required
ASUS Chromebox CN62 GUADO Firmware update recommended
CTL NL6 Education Chromebook ENGUARDE Firmware update required
Dell Chromebook 11 WOLF
Dell Chromebook 11 (3120) CANDY Firmware update required
Dell Chromebook 13 LULU Firmware update recommended
Dell Chromebox TRICKY
Google Pixel (2013) LINK
Google Pixel (2015) SAMUS
Haier Chromebook 11 G2 HELI Firmware update required
HP Chromebook 11 G3 KIP Firmware update required
HP Chromebook 11 G4 KIP Firmware update required
HP Chromebook 14 FALCO
HP Chromebook 14 G4 KIP Firmware update required
HP Chromebox ZAKO Firmware update required
Lenovo 100S Chromebook ORCO Firmware update required
Lenovo N20 Chromebook CLAPPER Firmware update required
Lenovo N20P Chromebook CLAPPER Firmware update required
Lenovo N21 Chromebook ENGUARDE Firmware update required
Lenovo ThinkCentre Chromebox TIDUS Firmware update recommended
Lenovo ThinkPad Yoga GLIMMER Firmware update required
Lenovo ThinkPad 11e Chromebook GLIMMER Firmware update required
Samsung Chromebook 2 (XE500C12) WINKY Firmware update required
Senkatel Edu ENGUARDE Firmware update required
Toshiba Chromebook CB30 LEON
Toshiba Chromebook CB35 LEON
Toshiba Chromebook 2 CB30 SWANKY Firmware update required
Toshiba Chromebook 2 CB35 SWANKY Firmware update required
Toshiba Chromebook 2 CB30 (2015) GANDOF Firmware update recommended
Toshiba Chromebook 2 CB35 (2015) GANDOF Firmware update recommended
Other Intel Haswell Chromebooks
Other Intel Broadwell Chromebooks Expected to work, firmware update recommended
Other Intel Bay Trail Chromebooks Expected to work, firmware update required
Intel Sandy/Ivy Bridge Chromebooks Requires SeaBIOS with Legacy Boot capability
Intel Braswell Chromebooks Requires compatible firmware, presently unavailable
LG Chromebase MONROE
ARM Chromebooks ARM support is very unlikely
HP Chromebook 11 (ARM) SPRING, SKATE (previously erroneously marked possible)

operating systems

status OS distribution notes
Linux GalliumOS Derived from Xubuntu, developed specifically for compatibility and optimized performance on Chromebook hardware.
Linux Lubuntu A light-weight variant of Ubuntu, with the LXDE desktop environment.
Linux Xubuntu A light-weight variant of Ubuntu, with the Xfce desktop environment.
Linux Kubuntu Ubuntu with the KDE desktop environment.
Linux Edubuntu Full Ubuntu plus application bundles used in educational settings.
Linux Ubuntu The standard full Ubuntu distro.
FreeBSD Work in progress!

recommendations

Chromebooks perform best with lighter-weight operating systems and desktop environments, and they often require updated kernel drivers to support their new and tightly integrated hardware.

Selecting a distribution which meets these needs is therefore an important part of Linux-on-Chromebook happiness. While any updated distro will work for ordinary tasks, there are a few that stand out:

sample measurements

distribution¹ disk space² RAM use³ install time⁴ recommended?
GalliumOS 2.0alpha 2.5GB 291MB 9 mins
GalliumOS 1.0 2.8GB 287MB 10 mins
Lubuntu 15.10 2.7GB 227MB 18 mins
Lubuntu 16.04 3.1GB 185MB 19 mins
Xubuntu 15.04 3.0GB 360MB 22 mins
Ubuntu 15.04 3.5GB 440MB 28 mins
Kubuntu 15.10 4.2GB 613MB
  1. All distributions were installed with the desktop environment option.
  2. Disk space can be reduced by removing unwanted packages. The number shown reflects the default install for the desktop environment.
  3. RAM use is measured after graphical login, connecting to Wi-Fi, and opening one window of the default Terminal program to run /usr/bin/free after a couple minutes for the system to stabilize. The number shown is an average of several tests, and variance is very low (2-3%).
  4. Installation time will vary greatly depending on your Internet connection, but the ratios should be representative.

test suite

"Working" is defined as:

This list might evolve. Your input is welcome!

evolution

chrx past

chrx began as an updated and enhanced version of ChrUbuntu, and still retains some original ChrUbuntu code (especially the disk partitioning bits).

chrx present

chrx has been used to install Linux on thousands of Chromebooks. Users and discussion can be found on /r/chrubuntu.

chrx future

I'd like to test on a wider variety of hardware, and to install other Linux distributions.

Support for FreeBSD is coming. See http://blog.grem.de/pages/c720.html if you can't wait.

alternatives

chrx is a command-line installer which requires requires no physical media or other preparation to install. It allows you to dual-boot, so you can choose Linux or ChromeOS each time you turn on your Chromebook. This is a flexible setup, well-suited for many users, but of course not all.

Consider these alternatives:

notes on security and privacy

Running code from the net is always an act that requires careful thought. chrx can be run directly from the net, and by default will download additional code via the same mechanisms. Any of these downloads could be misdirected or compromised. Downloading over an unsecured network (e.g. public Wi-Fi) raises the likelihood of such malfeasance, but it can never be fully eliminated.

If these are concerns of yours, you can mitigate your risks by auditing all of the code involved, comparing checksums of downloaded packages, and hosting local caches (see advanced usage).

Also, chrx "pings home" on every install to report success or failure. This ping includes no personal information, only data that might be useful for investigating failures.

Log entries created by these pings look like this:

17.x.x.x - - [01/May/2016:07:37:00 +0000] "GET /end_ok HTTP/1.1" 200 0 "-"
  "chrx/2.2.3 hw=PEPPY_C6A-V7C-A2C sw=linux,galliumos-desktop,latest,2.0,amd64" "-"

hw is a hardware ID that corresponds to your model of Chromebook (not a serial number).

sw combines a few of the command-line settings (or defaults) that you used to run chrx.

If this level of information sharing makes you uncomfortable, the behaviour can be disabled with the -n switch.

meta, obligatory

chrx is pronounced "marshmallow".

thanks

To Jay Lee for ChrUbuntu, to /r/chrubuntu for assembling links to tons of helpful resources, and to the dozens of people who found answers and solved problems before I even started looking.

changelog