27 December, 2013

Chromebook HowTo: Update to the hidden Canary build

Update 2/17/2015: Users have been reporting error messages trying to use the command below. However, the good Craig Tumblison came to the rescue: The parameters have changed. Updating the post to reflect those changes.

People with Chromebooks have seriously wondered why a canary build of Chrome OS seems to not exist. They only see Stable, Beta, and Dev options in the "chrome://chrome" channel switcher... with nothing beyond that. They've seen posts in bug reports mentioning Canary builds, but no one has taken the time to mention how these people got the builds, as most of them are indeed Googlers. However, they do exist, and after personal snooping, I did indeed find out that they're easier to install than once thought.


If you do indeed have the guts to attempt this, be warned: the installation process, followed by the hellishly unstable user experience you'll end up with when finished, is certainly not for the faint of heart, and oh, yeah, if you want to go back, good luck. Even recovery images written with chrome://imageburner from Canary builds of Chrome OS will be canary builds, so unless you've already got a recovery USB with a stable image of Chrome OS on it, good luck trying to revert back to the stable builds (hopefully this will change when the universal Chrome OS Recovery Tool packaged app comes out). Update: Never mind, I actually tested a chrome://imageburner write from a Canary build, copied the /etc/lsb-release file to my local drive, appended a ".txt" extension, and, sure enough, it does mention "stable-channel" in it:

Thanks for the tip, Joe.

Enter Developer Mode

The way to get to the Canary channel requires access to a full Bash environment, accessible from the crosh "shell" command. The irony? That particular command will show up "unknown" when typed into crosh on a Chromebook that doesn't have developer mode enabled. For this reason, we need to enable Dev Mode to get access to the shell required. To do that, of course, requires knowledge of exactly which Chromebook you have. Refer to these examples:

If your Chromebook is anything other than these early models, then it's a much easier process, because there is no more dev switch. Instead, press Esc+Refresh+Power and, when the recovery prompt appears, press Ctrl+D and accept the prompt that appears to disable boot verification. When the Chromebook reboots, press Ctrl+D again. Please note that this will powerwash your Chromebook, so be sure all your local media files and screenshots are copied to Google Drive before you attempt this.

Run the update

Once your Chromebook has ended up in developer mode and you log in, press Ctrl+Alt+T. This will get you to a "crosh" prompt. Type "shell" as mentioned above, then run "sudo su" to get to a root shell. Once running as root, run this command:

update_engine_client -channel=canary-channel -update

The first parameter ― "-channel=canary-channel" ― sets the channel to canary via the command line. The second ― "-update" ― will run a "ForcedUpdate" app version command, which will, as you'd expect, force an update without checking. It of course will take a while, so be patient. It's also not for the faint of heart, because the progress is shown as a long decimal between 0 and 1 instead of a percentage.

Revert back to verified mode

When the update is complete, you'll notice something interesting: you're actually one version newer than Dev. And of course, you'll be in uncharted territory. When you do end up logging in (you need to press Ctrl+D every time you reboot, of course, until the end of this step) you'll want to go back to verified mode for security reasons. So, when you are prompted to reboot when the update is completed, you'll see a prompt to hit the spacebar to disable developer mode. Press it, and you'll be back in verified mode.

The result

Assuming you know what you're doing, here's what you'll end up with when updating (as of December 27, 2013), in terms of system information (this is of course on an Acer C720, one of those devices without a physical dev switch):

Note the lack of a yellow Chrome Canary logo. That's because, in Chrome OS, two versions of Chrome can't coexist like they can on other platforms. So, you get the same old multi-colored logo in Chrome OS Canary that you'll find in Chrome OS otherwise. However, notice how there's also no channel-switcher? Again, Chrome OS Canary is a whole different animal compared to other versions. Canary builds are not allowed to be easily interchangeable with other versions, and as such, you won't find a channel pull-down at all when you update. As of this writing, the current Canary build of the Chrome browser that makes up the brunt of the OS is 34.0.1756.0 — again, one major major version ahead of the Dev Channel, which is stuck on 33 — and consequently, one major major version more unstable. Expect to see more bugs, more crashes, and, oh yeah, more visits to crbug.com/new than usual. Remember that the next time you try something like this.