Guide pixel-linux

Published on March 13th, 2014 | by admin

Install Linux on the Chromebook Pixel




1) Put your Pixel into developer mode, you should really do this
as the first thing when you use the laptop for the first time.

Hold down “ESC” and “Refresh” at the same time while powering
on the machine. BTW, those keys on the top row after ESC are
just F1, F2, F3, etc. The F3 one is the “Refresh” key I
mentioned.

Hit Ctrl-D then Enter. It’s going to take 5 minutes now
as it’s going to wipe the entire stateful (ie. user data)
partition.

From this point forward, every time you boot, it’s going to say
that Chrome OS can’t be found or something similarly alarming like
that, just ignore and hit Ctr-D or wait 30 seconds to boot into
Chrome OS. But that won’t be relevant for long as we’re going
to wipe it off the machine below 🙂

2) Boot into Chrome OS and configure it enough so that you can
login. Start a shell:

a) Hit Ctrl-Alt-T, this brings up the chrosh window, from crosh
you can do things like spawn a shell, use SSH, etc. type “help”
if you’re interested in more.
b) Give it the “shell” command.
c) Get root, “sudo bash”

3) Configure it so that we can boot into Linux images via SeaBIOS
and boot from USB devices.

crossystem dev_boot_usb=1 dev_boot_legacy=1

and then power off the machine.

4) Get yourself a Debian 7 image, I used:

http://cdimage.debian.org/cdimage/wheezy_di_rc1/amd64/iso-cd/debian-wheezy-DI-rc1-amd64-netinst.iso

5) Put that image onto something you can USB boot. You can use a USB
stick, but I’ve been using the DroidDrive app on my Galaxy Nexus
and Nexus 7.

6) Plug the USB image in, and power on the Pixel. When the boot
screen appears hit Ctrl-L, SeaBIOS will come up and say “Hit ESC to
choose boot device” so hit ESC and choose the USB device you
plugged in.

7) Highlight the “Install” choice and hit TAB, add “mem=4G” to the
kernel command line.

8) Do an install, tell the partitioner to use the entire SSD drive and
do things automatically. I’d recommend enabling the installation
of the desktop packages so that it’s easier to configure wireless.

Tell the installer to use the MBR of the entire disk for the boot
loader.

9) After the install finishes the reboot will bring you to the
boot screen again, hit Ctrl-L to get into SeaBIOS and then ESC
but this time select the interal SSD drive. It should boot up
just fine.

10) Outside of the touchpad/touchscreen everything should work fine.
You do have a USB mouse to use for this part right? Plug it in,
your life will be simplified. Alternatively “Ctrl-Alt-F1” to get
into a VC and just do all of your work from there. You have to
bring the wireless up somehow so you can install packages, and
it’s just so much easier to do that from the graphical desktop.

Anyways, let’s get the input devices working. Install ‘git’ with:

apt-get install git

as root. You’ll also need the kernel headers package installed
in order to build kernel modules, for this install this package
should be “linux-headers-3.2.0-4-amd64”

apt-get install linux-headers-3.2.0-4-amd64

You’ll also have to make sure you have the necessary tools to
compile things. A safe way to ensure this is to install the
tools necessary to build the debian kernel package, like this:

apt-get build-dep linux

And you should be good to go.

11) Clone my chomebook Pixel driver repo:

git clone http://git.kernel.org/pub/scm/linux/kernel/git/davem/chromebook_pixel.git

You might even have the repo already and be reading this text file
from it. 🙂

Now build:

cd chromebook_pixel
make

this will leave you with “chromebook_laptop.ko” and “atmel_mxt_ts.ko”

The chomebook_laptop.ko driver will instantiate the I2C devices hanging
off of the i915 graphics device, these will then be seen by drivers like
atmel_mxt_ts.ko which will talk over I2C to drive your touchpad and
touchscreen.

The chromebook_laptop.ko doesn’t exist in any form in the debian
kernel package you have installed on this machine, but the
atmel_mxt_ts.ko does exist there but we need this newer version of it.
So just keep that in mind.

12) Right now you can load these modules to see your input devices working.

insmod atmel_mxt_ts.ko
insmod chromebook_laptop.ko

But you’re going to want this to happen automatically when you boot up.
I was super lazy and just copied the modules down under:

/lib/modules/3.2.0-4-amd64/kernel/

specifically to:

/lib/modules/3.2.0-4-amd64/kernel/drivers/input/touchscreen/atmel_mxt_ts.ko
/lib/modules/3.2.0-4-amd64/kernel/drivers/platform/x86/chromeos_laptop.ko

and then I added one line saying:

chromeos_laptop

to /etc/modules

13) So you should have a fully functioning Chromebook Pixel running
Linux at this point. Enjoy.

Tags:


About the Author



Leave a Reply

Back to Top ↑