How to install Ubuntu 13.04 on Chromebook

Installing recent Ubuntu on Samsung ARM Chromebook is not rocket science. All you need is following steps.

So which steps there are? Note that I will describe only installation on SD card and assume some level of knowledge from reader — that’s why there are steps where exact commands are not given as you can use different tools.

  1. Partition SD card with GPT. First partition needs type “7f00” (ChromiumOS kernel) and 4MB is enough. Second is “8300” type and should be enough to fit rootfs (or bigger).
  2. Create ext4 filesystem on second partition.
  3. Create rootfs — debootstrap, multistrap etc. You can do it directly to SD card partition to save copying later. You can also fetch any existing one.
  4. Chroot into rootfs (you can do it from terminal under Chrome OS).
  5. Add “Samsung Chromebook (ARM) support packages” PPA into APT sources.
  6. Install “cgpt”, “vboot-utils”, “linux-chromebook”, “xserver-xorg-video-armsoc” packages.
  7. Create file with kernel command line. I suggest “console=tty1 printk.time=1 quiet nosplash rootwait root=/dev/mmcblk1p2 rw rootfstype=ext4” but you can adapt it as you want.
  8. Sign kernel: “vbutil_kernel —pack /tmp/kernel-to-boot-ubuntu —keyblock /usr/share/vboot/devkeys/kernel.keyblock —version 1 —signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk —config CMDLINE_FILE —vmlinuz /boot/vmlinuz-3.4.0-5-chromebook —arch arm”
  9. Write kernel to SD: “dd if=/tmp/kernel-to-boot-ubuntu of=/dev/mmcblk1p1 bs=4M”.
  10. Mark kernel as good: “cgpt add -S 1 -T 5 -P 12 -i 1 /dev/mmcblk1”
  11. Copy WiFi firmware from Chrome OS — it is /lib/firmware/mrvl/sd8797_uapsta.bin file.
  12. Last chance to burn your speakers cause Ubuntu will not give that functionality…
  13. Reboot.
  14. Press Ctrl-U at that scary white screen.
  15. Enjoy your Ubuntu system.
  16. You may also add symlink for Samsung media framework: “cd /lib/firmware/;ln -sf s5p-mfc/s5p-mfc-v6.fw mfc_fw.bin”. But so far nothing uses it.

Note that you may have different results due to other rootfs used. I ran “debootstrap” and then chrooted, installed “xubuntu-desktop” and lot of other packages I use for development.

chromebook linaro ubuntu