Installing Ubuntu on a Chromebook CR-48

This describes how to install Ubuntu as the native OS on a Chromebook CR-48 (the original Chromebook).

To do this, you need to take the Chromebook apart and cover up a connection point with tape, then flash a different bios and finally boot from a Ubuntu USB install disk.

This guide was tested with Ubuntu 12.10 (64 bit version).

Flashing the BIOS

Disabling BIOS protection

Follow the instructions here. Remove any sd card or fake sd card in the sd card slot first. When opening the case, it might stick on the headphone jack. Just use a screwdriver to slightly bend the case to unstick it.

Flashing the BIOS

Follow the instructions here to enable development mode. You can skip creating the Chrome OS recovery drive. You can always do that later (since it's done on another computer anyway). Instead of emailing the backup of the old bios to yourself, you can insert and mount usb stick and back it up to the usb stick. You can also put the new bios file on the same usb stick.

You need to flash an alternate BIOS called InsydeH2O.

On another laptop, insert a USB stick.

Format it if it's not already formatted (WARNING: this will erase everything on the usb stick):

sudo mkfs.ext3 /dev/sdX1 # Replace the sdX with the actual device name of your usb stick!

If you want to find the device name of your usb stick, you can run the following command and then plug in your usb stick. The device name should show up somewhere in the text. Hit ctrl+c when done.

tail -f /var/log/syslog

Mount your drive if it's not already mounted. If it's already mounted, run the 'mount' command to see where the device name of your usb disk is mounted:

 sudo mount /dev/sdX1 /mnt

Change directory to the mounted usb drive:

 cd /mnt

Download the new bios to the usb drive and extract it:

 sudo wget
 sudo tar xvzf cr48.bin.tar.gz

Unmount the usb drive again:

 sudo umount /mnt

Now boot your chromebook and wait for the login screen. When it appears, press ctrl+alt+F2 (the right arrow two over from the escape key), log in with the password chronos. Then do the following to back up the flash rom and write the new flash rom:

 sudo su -
 mount /dev/sdb1 /mnt
 cd /mnt
 flashrom -r backup.bin 
 flashrom -w cr48.bin
 cd /
 umount /mnt

Now connect the usb drive to another computer and copy backup.bin to a safe place.

Shut down the chromebook.

Congratulations. You now have a new bios!

Enable booting from USB

Boot the computer and keep hitting F2 (the right-pointing arrow two over from the escape key). You should get to the bios menu. Go to the "exit" menu point, select "Load Optimal Defaults" and hit enter. Answer yes to the question. Go to the "boot" menu point and disable "UEFI Boot". Make sure "USB Boot" is enabled.

Install Ubuntu

Create a Ubuntu bootable installer usb disk. You can find guides for how to do this elsewhere. There is nothing special about this for the chromebook. You can use the same usb stick as the one you used to back up the bios, just remember to copy the bios backup to a safe place first.

Turn off the chromebook, insert the bootable ubuntu usb disk and boot up while repeatedly pressing F10 (the volume + key). It should pop up a menu where you can select to boot from usb. Select the USB device and hit enter. After that, you will be prompted to either try ubuntu or install ubuntu. Select install and hit enter. Once the installer is loaded, it will begin asking you questions. One of the questions will be about whether to install Ubuntu along side the existing operating system, or to erase the harddrive and install ubuntu on the entire drive. Click the "something else" option at the bottom.

Now delete all of the partitions by selecting them one at a time and clicking the minus button. Once they are all removed, add the following partitions:

  • A 200 megabyte partition with an ext2 filesystem and /boot as the mount point.
  • A partition that takes up the rest of the space with an ext4 filesystem and / as the mount point.

Ignore any warnings about EFI or a missing swap partition and continue. Let the install finish.

Getting it to boot

Unfortunately Ubuntu won't boot because of two things. First, it didn't set the /boot partition's "bootable" flag. Second, it installed the EFI version of the GRUB 2 boot loader. You need to replace it with the non-EFI version.

Setting the bootable flag

Boot from the usb stick again, choose try ubuntu (not install). Once it's booted, open a terminal (you can do this with ctrl+alt+t) and type:

sudo gparted

Wait for gparted to open. Once it's open, find the partition with "/boot" as the mount-point in the list and right-click it. Choose the option "Manage flags", then check the "boot" flag and click close. Now close gparted. Don't close the terminal yet.

Replacing EFI GRUB 2 with non-EFI GRUB 2

While still in the terminal, enter:

sudo su -
mount /dev/sda2 /mnt/
mount /dev/sda1 /mnt/boot
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -o bind /dev/pts /mnt/dev/pts
mount -o bind /run /mnt/run
mount -t sysfs sys /mnt/sys
chroot /mnt/ /bin/bash
apt-get install grub-pc

Answer yes to any questions. Then shut down the computer, unplug the usb stick and power back up. It should now boot into Ubuntu correctly.

Hurray! You have turned a web terminal into a useful computer! \o/