Monday, October 29, 2012

ARM ChrUbuntu 12.04 Alpha 1 Now Available For New Chromebooks!

Update #3: There's a new version of the ChrUbuntu script that offers much more flexibility. Be sure to check out my latest post at ChrUbuntu: One Script to Rule them All!

Update #2: I've updated the script so that module loading works with beta and dev channel Chrome OS kernels. If you were on beta or dev channel and ChrUbuntu booted but you couldn't connect to WiFi/ethernet, try now. Thanks to not-so-lazy commenter "The Lazy Husband" for the pointer and fix. I've also added a possible fix for some people getting out of space errors. The script below now works with external USB Flash and SD Card ChrUbuntu installs.

Update: Instructions for installing to an external USB or SD Card are up!

Thanks to those who donated to the project, I'm excited to announce the first alpha release of ChrUbuntu 12.04 for the new Google Chromebook with ARM processor! This is an alpha release meaning there's a good bit of stuff that doesn't work yet. Known issues include:
  • Sound does not work in my limited testing
  • The touchpad is somewhat finicky to work with
  • Google Chrome does not exist for ARM Linux distributions except the Chromebook itself. You can install Chromium browser from the universe repository.
  • Graphics are not accelerated. We need to work on ripping Chrome OS binary drivers or wait until Google open sources the full stack for the new Chromebooks.
  • ???
  • success!
What works:
  • WiFi (no problem connecting to my home WPA2-PSK network)
  • Bluetooth (limited testing)
  • Battery monitor
  • USB / SD Card
Installing ChrUbuntu on a new Chromebook is extremely easy, just follow the steps below.
  1. You need to be in developer mode. Start with your Chromebook off. Hold down the ESC and Refresh keys (2 keys at top left of keyboard on either side of the arrow keys) and then press the power button. You'll boot up to the recovery screen prompting you to perform USB recovery. Now hit CTRL+D on the keyboard and then Enter. You should reboot into recovery mode.
  2. After entering developer mode, your Chromebook will wipe and then reboot into the out of box (OOB) setup screen. Proceed to configure WiFi but do not login to a Google account. 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, run:

    wget; sudo bash 34v87

    Make sure you have the command exactly right. 34v87 is all lowercase letters and would sound like "three four vee eight seven" if you said it out loud (go ahead, try it!). If you get a "not found" error, make sure you have Internet connectivity.
  5. You'll be prompted with some information about 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, 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). Once you've entered a number, your hard drive will be repartitioned. Then the Chromebook reboots, wipes the stateful partition, reboots again and shows you the Welcome screen you got when you first turned on your Chromebook out of the cardboard box.
  7. 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 will start downloading the ChrUbuntu image and copying it to the SSD.
  8. There are 52 100mb files to be downloaded. Each is compressed so the actual download size ranges from less than 1mb in size to 99mb in size. The total size of all the files is about 1gb compressed and 5gb uncompressed so the download and install will take awhile. The files are named ubuntu-1204-arm.binXX.bz2 (where XX is aa, ab, ac, ad, ae, af... ba, bb, bc... all the way to bz). If you want to see how big each piece is, take a look here.
  9. The script keeps track of which of the 52 files have been successfully installed so if you lose Internet connectivity, or the battery dies (you should be plugged in BTW), etc, just re-run Step 4 and it should resume where it left off.
  10. After all 52 files have been downloaded and copied to the SSD, the script will make a few more updates to your Cr-48 and then reboot.
  11. You'll see ChrUbuntu start up! The username is "user" and the password is "user" if you need to make changes.
  12. Right now, you're in ChrUbuntu but if you reboot, you'll be back in Chrome OS. To make ChrUbuntu the default, run:

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

    (password is "user"). It should be possible to run this from ChrUbuntu or Chrome OS.
  13. To make Chrome OS the default again, either turn off Developer Mode (instructions for doing show are shown at bootup), or run:

    sudo cgpt add -i 6 -P 0 -S 1 /dev/mmcblk0
Thanks again to all the donors! We'll keep working to make ChrUbuntu a great and fun experiment on Chrome hardware!