Tuesday, October 15, 2013

ChrUbuntu for New Chromebooks: Now with more Ubuntu

Since I started ChrUbuntu back in December of 2010, it's always been necessary to utilize the Chrome OS Linux kernel with Ubuntu in order to solve some compatibility issues with the Chromebook architecture. That's changed with the Chromebook Pixel and the newer Haswell-based Chromebooks like the Acer C720 and HP Chromebook 14. Each of these models supports booting from a more traditional PC BIOS mode which makes it simple to use stock Ubuntu kernels on them.

This ChrUbuntu release is a preview that will only support x86-based Chromebooks, Pixel and newer (read: the ARM-based HP Chromebook 11 is not supported, nor are the older Acer C7, Samsung 550, etc. Use the old s9ryd script for these devices). I hope to eventually wrap this script back in to the main sr9yd ChrUbuntu install script but for now, I recommend this script on these newer devices over the old one.

Note: The trackpad is only supported with 13.10 and higher. I'm working to backport the trackpad drivers to 12.04. For now stick with 13.10 or use a USB mouse.

Here are the steps to install ChrUbuntu on a Pixel or Haswell-based Chromebook:
  1. To get started, make sure your Chromebook is in developer mode. Model-specific instructions can be found here.
  2. Start with your Chrome device turned off. Turn it on but do not login. Make sure you have a WiFi or Ethernet connection configured at this point. 3G/4G is not recommended. Press CTRL+ALT+=> (=> is the forward arrow where the F2 key would be on a PC). Do not use the normal CTRL+ALT+T method to get a shell. Use the CTRL+ALT+=> method while no one is logged in.
  3. Login as user chronos, no password is needed.
  4. As the chronos user and without having changed directories or run other commands, run:

    curl -L -O http://goo.gl/9sgchs; sudo bash 9sgchs

    Make sure you have the command exactly right. The -O and -L after curl are both capital letters. 9sgchs is all lowercase letters and numbers and would sound like "nine ess gee see aich ess" if you said it out loud. If you get a "not found" error, make sure you have Internet connectivity and you're typing the command correctly.
  5. You'll be prompted with some information about your Chromebook and the version of ChrUbuntu to be installed. Press Enter to continue.
  6. The Chrome OS stateful partition where your data and settings are stored is just short of 11gb by default (except for the Pixel which has a 32 or 64gb SSD), the script shrinks the stateful partition to make room for ChrUbuntu. You can choose to give ChrUbuntu from 5gb up to 10gb in 1gb increments (Note: If you've installed a larger SSD in your Chrome device, your max number and recommended max will be larger). I recommend not going higher than 9 as 10 leaves Chrome OS with very little free space (less than 1gb).
  7. Once you've entered a number, your hard drive will be repartitioned. After awhile it will reboot and re-initialize the stateful partition. This process takes 2-15 minutes and then the Chromebook reboots again and shows you the Welcome screen you got when you first turned on your Chromebook out of the cardboard box.

    Pro Tip: don't like Ubuntu or any of it's variants? You can stop now and plug a ready to go Linux USB Boot disk for Fedora, Debian, Mint or pretty much any other distro in the drive. Then hit CTRL+L to initiate the legacy boot. Format and install the OS to the /dev/sda7 partition and make sure GRUB is installed to /dev/sda and you should be good to go!
  8. Go through the Chrome OS setup process again until you get to the Google login page. You'll need to have a WiFi or Ethernet connection again at this point. Now follow steps 2 through 5 again. This time the script will see that you've already made room for Ubuntu and start downloading ChrUbuntu.

    Pro Tip: Here's where you can install other versions of Ubuntu! To see what options you have run:

    curl -L -O http://goo.gl/9sgchs; sudo bash 9sgchs -h

    An example custom installation would be:

    curl -L -O http://goo.gl/9sgchs; sudo bash 9sgchs -m xubuntu-desktop -u lts -a i386

    which would install the 32-bit version of Xubuntu and the latest LTS release (12.04.3 as of writing) rather than a 64-bit 13.10 Unity desktop (which is the default). Some possible flavor alternatives to Unity (-m option) are:

    default  -- ubuntu-desktop
    kubuntu-desktop
    lubuntu-desktop
    xubuntu-desktop
    edubuntu-desktop
    ubuntu-standard  -- no GUI installed

    some possible versions (-u option) are:

    lts -- latest LTS Ubuntu release, 12.04.3 as of this writing
    latest -- latest official release, currently 13.10
    dev -- unstable development Ubuntu release. Experts only! If this breaks, don't be surprised.
    12.10 -- Ubuntu 12.10 release

    the possible architectures (-a option) are:

    amd64  -- default
    i386

    the -t target desk option is completely untested right now!
  9. During the installation (within the first 5-15 minutes). You'll see a few prompts to select your encoding, locale and language. For most people, the defaults should be fine, just press Enter but change them if you'd like. Later on, you'll be prompted to decide where GRUB should be installed. YOU MUST CHECK THE BOX NEXT TO /dev/sda in order for boot to work!
  10. After all of the Ubuntu files have been downloaded, installed and configured, the script will make a few more updates and then prompt you to reboot.
  11. At the scary developer mode screen, hit CTRL+L instead of CTRL+D. You'll see ChrUbuntu start up! The username is "user" and the password is "user".
That's it! Now you can just press CTRL+L to boot ChrUbuntu (L as in Legacy, traditional OS) or CTRL+D to boot Chrome OS (D as in Default OS on Disk).

Last but least, I want to give a big thank you to +Bill Richardson, +Ron Minnich, +Stefan Reinauer and other Googlers who work on the low-level Chrome OS hardware/software and have made a truly incredible, powerful and open Chrome OS platform! Great work guys!

Friday, May 31, 2013

ChrUbuntu: One Script to Rule Them All!

Update: If you want to run ChrUbuntu on a Chromebook Pixel or one of the new Haswell-based Chromebooks like the HP Chromebook 14 or Acer C720, please take a look at the newer script that offers a better way to dual boot.

Update: I'm aware that the script isn't working on Cr-48s, Samsung Series 5 and Acer C700 first gen Chromebooks but no longer have any of those to do testing with. For now, use the older 12.04 script on those models and upgrade to 13.10 if you want using the normal Ubuntu upgrade instructions.

I'm excited to announce a major update to the ChrUbuntu script. This new version offers:
  • A single script that works on ALL Chrome devices including the ARM-based Samsung Chromebook.
  • A single script that can install any Ubuntu version: 13.10, 12.04.3 LTS, even the latest daily dev image. (Note: ARM Chromebook is currently limited to 12.04.3 as newer versions are broken on ARM)
  • A single script that can install UbuntuKubuntuLubuntuXubuntuEdubuntu or many other desktop variants.
  • A fully up-to-date ChrUbuntu install on boot. No more downloading hundreds of megabytes in updates after first boot.
To make all of this possible, I've rewritten the ChrUbuntu script to pull packages directly from official ubuntu.com sources rather than utilizing my own pre-configured, static image of an Ubuntu installation.


Want to say thank you for ChrUbuntu? Feel free to do so in the comments below, via PayPal or by visiting the advertisements on this blog. If you purchase a Chromebook or any other Amazon.com items using these links, you pay the same price but a portion of the cost goes to support this blog.

Ready to get started with the latest, greatest ChrUbuntu? Here are the instructions:
  1. To get started, make sure your Chromebook is in developer mode and has a developer BIOS installed. See Google's instructions for your model. Older Samsung and Acer owners should pay special attention to the Developer BIOS instructions.
  2. Start with your Chrome device turned off. Turn it on but do not login. Make sure you have a WiFi or Ethernet connection configured at this point. 3G/4G is not recommended. Press CTRL+ALT+=> (=> is the forward arrow where the F2 key would be on a PC). Do not use the normal CTRL+ALT+T method to get a shell. Use the CTRL+ALT+=> method while no one is logged in.
  3. Login as user chronos, no password is needed.
  4. As the chronos user and without having changed directories or run other commands, run:

    curl -L -O http://goo.gl/s9ryd; sudo bash s9ryd

    Make sure you have the command exactly right. The -O and -L after curl are both capital letters. s9ryd is all lowercase letters and numbers and would sound like "ess nine are why dee" if you said it out loud. If you get a "not found" error, make sure you have Internet connectivity and you're typing the command correctly.
  5. You'll be prompted with some information about your Chromebook. You may need to run an additional command to install a developer BIOS on your Chromebook. Press Enter to continue.
  6. The Chrome OS stateful partition where your data and settings are stored is just short of 11gb by default (except for the Acer C7 where it is much larger), the script shrinks the stateful partition to make room for ChrUbuntu. You can choose to give ChrUbuntu from 5gb up to 10gb in 1gb increments (Note: If you've installed a larger SSD in your Chrome device, your max number and recommended max will be larger). I recommend not going higher than 9 as 10 leaves Chrome OS with very little free space (less than 1gb).
  7. Once you've entered a number, your hard drive will be repartitioned. After awhile it will reboot and re-initialize the stateful partition. This process takes 2-15 minutes and then the Chromebook reboots again and shows you the Welcome screen you got when you first turned on your Chromebook out of the cardboard box.
  8. Go through the Chrome OS setup process again until you get to the Google login page. You'll need to have a WiFi or Ethernet connection again at this point. Now follow steps 2 through 4 again. This time the script will see that you've already made room for Ubuntu and start downloading ChrUbuntu.

    Pro Tip: Here's where you can install other versions of Ubuntu! Just specify the preferred Ubuntu flavor and version at the end of the command:

    curl -L -O http://goo.gl/s9ryd; sudo bash s9ryd [flavor] [version] [target-disk]

    For example:

    curl -L -O http://goo.gl/s9ryd; sudo bash s9ryd xubuntu-desktop lts

    this will install Xubuntu and the latest LTS release (12.04.3 as of writing) rather than a 13.10 Unity desktop. Some possible flavor alternatives to Unity are:

    default  (ubuntu-desktop on x86, xubuntu-desktop on arm)
    kubuntu-desktop
    lubuntu-desktop
    xubuntu-desktop
    edubuntu-desktop
    ubuntu-standard
        (no GUI installed)

    some possible versions are:

    lts -- latest LTS Ubuntu release, 12.04.3 as of this writing
    latest -- latest official release, currently 13.10
    dev -- unstable development Ubuntu release, experts only! If this breaks, don't be surprised
    12.10 -- Ubuntu 12.10 release

    [target-disk] is the last argument (specify "default" and "latest" for the first two arguments if you just want to install the defaults to an external drive). An example installation to SD Card might be:

    curl -L -O http://goo.gl/s9ryd; sudo bash s9ryd default latest /dev/mmcblk1
  9. During the installation (within the first 5-15 minutes). You'll see a few prompts to select your encoding, locale and language. For most people, the defaults should be fine, just press Enter but change them if you'd like.
  10. After all of the Ubuntu files have been downloaded, installed and configured, the script will make a few more updates and then prompt you to reboot.
  11. You'll see ChrUbuntu start up! The username is "user" and the password is "user".
  12. Right now, you're in ChrUbuntu but if you reboot, you'll be back in Chrome OS. This is a safety feature, if ChrUbuntu won't boot, you want to be able to get back into Chrome OS to fix it. To make ChrUbuntu the default, run:

    sudo cgpt add -i 6 -P 5 -S 1 /dev/sda

    on the ARM Chromebook, replace /dev/sda with /dev/mmcblk0. The password is "user". It should be possible to run this from ChrUbuntu or Chrome OS.

    To make Chrome OS the default again, either turn off Developer Mode, or run:

    sudo cgpt add -i 6 -P 0 -S 1 /dev/sda