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
Version 3.0.2 See changelog.
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.
ESC+F3(Refresh)+Power
)CTRL+D
at the white "ChromeOS is missing or damaged" (or "OS verification is OFF") screenCTRL+ALT+T
, and entering shell
at the promptcurl https://chrx.org/ | sudo tar xzfC - /usr/local && chrx
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,
fedora
-e ENVIRONMENT distribution-specific environment [desktop]
galliumos: desktop
ubuntu etc: desktop, minimal, standard, server
fedora: desktop, workstation, kde, xfce, lxde, mate,
cinnamon, sugar
-r RELEASE distribution release number or name [latest]
galliumos: latest, 3.0, bismuth, 2.0, xenon, nightly
ubuntu etc: latest, lts, dev, 16.04, 16.10, xenial, etc
fedora: latest, 23, 24, 25
-a ARCH processor architecture (i386, amd64) [amd64]
-m MIRROR distribution-specific download mirror [primary]
galliumos: ny1.us, va1.us, rb1.fr
-t TARGETDISK target disk (/dev/mmcblk1, /dev/sdb, etc) []
-p PACKAGE additional packages to install, may repeat []
kodi, minecraft, steam, etc, see chrx.org for more
(not yet supported on fedora)
-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.
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:
minecraft
installs Minecraftsteam
installs Steamkodi
installs Kodi Media Centerchrome
installs Google Chromeadmin-misc
is an alias for "ssh tmux rsync vim"
dev-misc
is an alias for "arduino geany geany-plugins ruby"
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"
.
GalliumOS Desktop (latest), verbosely:
chrx -v
GalliumOS Desktop (latest), plus packages:
chrx -p "minecraft steam kodi"
Lubuntu Desktop (latest):
chrx -d lubuntu
Ubuntu Standard, version 16.04, system name hal
, first user dave
, including some administrative tools:
chrx -d ubuntu -e standard -r 16.04 -H hal -U dave -p admin-misc
status | CPU family | notes |
---|---|---|
:white_check_mark: | Intel Haswell | Firmware update available (RW_LEGACY) |
:white_check_mark: | Intel Broadwell | Firmware update recommended (RW_LEGACY) |
:white_check_mark: | Intel Skylake | Firmware update recommended (RW_LEGACY) |
:white_check_mark: | Intel Kaby Lake | Firmware update recommended (RW_LEGACY) |
:white_check_mark: | Intel Bay Trail | Firmware update required (RW_LEGACY) |
:white_check_mark: | Intel Braswell | Firmware update required (RW_LEGACY) |
:white_check_mark: | Intel Apollo Lake | Firmware update required (RW_LEGACY) |
:question: | Intel Sandy/Ivy Bridge | Requires SeaBIOS with Legacy Boot capability |
:question: | Intel Pineview | Requires SeaBIOS with Legacy Boot capability |
:x: | ARM | ARM support is very unlikely |
If you do not know the CPU in your device, check here: https://wiki.galliumos.org/Hardware_Compatibility
status | OS | distribution | notes |
---|---|---|---|
:white_check_mark: | Linux | GalliumOS | Derived from Xubuntu, developed specifically for compatibility and optimized performance on Chromebook hardware. |
:white_check_mark: | Linux | Lubuntu | A light-weight variant of Ubuntu, with the LXDE desktop environment. |
:white_check_mark: | Linux | Xubuntu | A light-weight variant of Ubuntu, with the Xfce desktop environment. |
:white_check_mark: | Linux | Kubuntu | Ubuntu with the KDE desktop environment. |
:white_check_mark: | Linux | Edubuntu | Full Ubuntu plus application bundles used in educational settings. |
:white_check_mark: | Linux | Ubuntu | The standard full Ubuntu distro. |
:white_check_mark: | Linux | Fedora | New 20161121! |
:x: | FreeBSD | Work in progress! |
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:
-e ENVIRONMENT
), some of which (lxde) are lightweight, and some of which (desktop (gnome), default) are heavier. A few sample spins have been added to measurements below.distribution¹ | disk space² | RAM use³ | install time⁴ | recommended? |
---|---|---|---|---|
GalliumOS 3.0 | 3.2GB | 320MB | 10 mins | :white_check_mark: |
GalliumOS 2.0 | 2.5GB | 291MB | 9 mins | :white_check_mark: |
GalliumOS 1.0 | 2.8GB | 287MB | 10 mins | :white_check_mark: |
Lubuntu 15.10 | 2.7GB | 227MB | 18 mins | :white_check_mark: |
Lubuntu 16.04 | 3.1GB | 185MB | 19 mins | :white_check_mark: |
Xubuntu 15.04 | 3.0GB | 360MB | 22 mins | :white_check_mark: |
Ubuntu 15.04 | 3.5GB | 440MB | 28 mins | :x: |
Kubuntu 15.10 | 4.2GB | 613MB | :x: | |
Fedora 24 (lxde) | 2.9GB | 182MB | 20 mins | :white_check_mark: |
Fedora 24 (cinnamon) | 3.8GB | 384MB | 27 mins | :white_check_mark: |
Fedora 24 | 4.5GB | 647MB | 27 mins | :x: |
desktop
environment option, except where noted./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%)."Working" is defined as:
This list might evolve. Your input is welcome!
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:
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.
chrx is pronounced "marshmallow".
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.
systemd
conflict; refactor code into functions to facilitate multiple distros and future operating systems-p
support, add latest to auto-detection, add nonfree codecs (thx @jedigo); GalliumOS: use chrx GRUB config; all: add more hidden mmcblk0 partitions, update GRUB config