I’ve run crouton on my Chromebook Pixel 2 (2015, codename Samus) for some time now but I’ve found myself wanting more. Virtualbox, kernel access, graphics, and more don’t perform well in a chroot. Thankfully it’s actually pretty easy to dual boot Chrome OS and Linux on your chromebook thanks to chrx (pronounced “marshmallow”?)
Installation
The first part of installation is identical to setting up crouton:
- Enter developer mode:
Press ESC, Refresh, power simultaneously (when the chromebook is on)- Every time you power on the chromebook from now on you’ll get a scary screen. Press CTRL-D to bypass it (or wait 30 seconds)
- If you hit space on this screen instead of CTRL+D it will powerwash (nuke) your data
A scary screen will pop up saying the OS is missing or damaged. Press CTRL D, then press Enter when the OS verification screen comes up.
- Wait several minutes for developer mode to be installed. Note it will wipe your device to do this.
Open up a shell (CTRL + ALT + T, shell, enter) and enter the following
sudo crossystem dev_boot_usb=1 dev_boot_legacy=1
and reboot.
Next, download and run the chrx script twice. The first run will partition and powerwash your system; the second run will actually install GalliumOS (or Ubuntu or Fedora) alongside ChromeOS.
cd ; curl -Os https://chrx.org/go && sudo sh go
reboot after partition, run shell again. You can specify a number of arguments to the go script; I wanted to use Cinnamon on Fedora so these are the ones I used:
cd ; curl -Os https://chrx.org/go && sudo sh go -d fedora -e cinnamon -r latest -H <hostname> -U <username> -Z <timezone>
Fedora took quite a long time to install (1 hour in my case.) Just let the script do its thing. Once complete you can reboot and press CTRL + D for chromeOS or CTRL + L for Linux.
After that, reboot into your new linux environment!
Cleaning up
There were a few samus-specific things I needed to do.
Locale
For some reason my locale was set to an African country. Correct by doing this: (thanks to here) I added SELinux commands because for some reason I was getting permission denied errors.
sudo setenforce 0 localectl
set-locale
LANG
=en_US.utf8 sudo setenforce 1
Audio doesn’t work (no sound)
This issue stems from the fact that the sound card is not presented as the first available card. The system defaults to HDMI sound instead. Fortunately this page has instructions on how to fix this. If you’re running GalliumOS default you can follow the instructions from the link above. In my case I had to get a bit creative.
- Download the samus patches from here
wget https://github.com/GalliumOS/galliumos-samus/archive/master.zip - Extract subfolders inside said zip file to root directory
- Reboot
- run the following:
-
cp -r /etc/skel/.config $HOME sudo samus-alsaenable-speakers sudo samus-touch-reset
-
Success! You can now dual boot between Full blown Linux and ChromeOS on your Chromebook Pixel.
Touchpad / touchscreen stop working after resume
Occasionally my touchpad and touchscreen stop responding after resuming from sleep. The galliumOS-samus fix mentioned above has a handy reset script that fixes this. Simply run:
sudo samus-touch-reset
and your touch functionality is restored. I bound this command to a key shortcut to make things easier.
Virtualbox won’t start
After installing virtualbox I got a strange error message when trying to start VMs:
Failed to load VMMR0.r0 (VERR_SUPLIB_OWNER_NOT_ROOT)
I found this mention saying that /usr has to be owned by root. Easy enough of a fix:
sudo chown root:root /usr/