How to resolve angry beeping when GalliumOS refuse to boot

This time, I am going to post about a bit of troubleshooting with GalliumOS in my Chromebook. A little detour from my regular NextBus Compare project progress posting. This is more about working with developer tools, I guess.

I don’t actually use Chromebook that often since most of my work is on Macbook. As a result, it is not charge everyday. A few day, I forgot to turn it off. Left to its sleep mode, the battery completed drained itself.

Oops.

If I just have ChromeOS, it wouldn’t be a problem – but my system is dual-boot with a Linux OS. GalliumOS to be precise. To boot into GalliumOS, I typically just do a simple Ctrl-L. But this time, there is an angry, angry beep and no boot.

Chromebook Alert: OS Verification is Off
Chromebook’s white screen, now stucked

Oops.

I am almost certain it have to do with the battery drain, but what happened?

A bit more research on the documentation and GalliumOS reddit revealed that because the crossystem flag used for booting is a firmware level setting, it is therefore stored in volatile memory. When there is a complete drain, there is a possibility for the flag to be lost. To solve it, here are the steps:

  1. Boot into ChromeOS – yes, not GalliumOS, but ChromeOS. We need to access the developer mode! Usually, the command for ChromeOS booting is Ctrl-D.
  2. You may have to configure wifi if it is not set up. My Chromebook still remembers it, so it was good to go.
  3. Do a Ctrl-Alt-=> (=> is the right arrow on the first row your keyboard) – to boot yourself into the developer terminal.
  4. Enter chronos as username with no password.
  5. Enter sudo crossystem dev_boot_legacy=1. Some guides online may say dev_boot_usb, but as the GalliumOS documentation mentioned, that flag is not related to legacy boot issue. I should know – I tried it!
  6. Enter sudo reboot.
  7. Now the GalliumOS booting should be good to go!!!

Installing the Linux Distro GalliumOS in My Acer Chrombook

I love customization. Which is also why ever since I won a Chromebook during a HTML5 Meetup (Hooray!!!), I have been thinking about installing Linux on it. Finally, I got around to it!

Firstly, I debated on which Linux OS to get. The most popular one seems to be Crouton. However, I eventually decided on GalliumOS, because it was specially designed for Chromebook and seem less likely to break on updates – at least according to what people are saying online. Plus, built on top of Xubuntu, GalliumOS is a fully functional desktop. I would sacrifice some GPU performance, but I think it’s worth it. I will be working predominately in Linux instead of ChromeOS, so it is a good exchange. The simple-to-follow wiki guide from GalliumOS also is another plus – hurray to good documentation!

Secondly, following the wiki, I identified my hardware and its associated flash firmware requirements. My Chromebook is an Acer Chromebook 11, CB3-131. According to the Hardware Compatibility page, it is a Bay Trail model, and thus require custom firmware. Using Firmware page, I chose to use the firmware update of RW_LEGACY from MrChromebox – RW_LEGACY would allow me to duo-boot and I don’t have to open up the Chromebook and remove the write-protect.

Thirdly, with the choices made, I followed the Baytrail installation guide. Time for me to set my Chromebook into Developer mode!

The process was pretty smooth. The powerwash did took a while as the guide stated. The white developer mode boot screen appeared and stayed there for a while before the screen emits 2 loud, alarm-like beeps that had me a bit worry. Fortunately, it was a false alarm and a setup panel for ChromeOS appears:

Chromeos Setup

I logged into my wifi and log into the crosh shell as instructed:

Looking good. Now is time to update my Legacy Boot capability, which in my case, is the RW_LEGACY from MrChromebox as mentioned earlier. After that, to get back to the ChromeOS login screen, I restarted the laptop. The 2 loud beeps happened again and I got back to the ChromeOS setup panel, which shows that I am still logged into my wifi.

Finally, it was time to install GalliumOS. I had 2 choices, the standalone setup that uses a bootable USB and dual-bootup that uses chrx install script. I decided to go with the dual-bootup. The process for that was also pretty smooth. I followed the steps and went with the recommended 9 GB space allocation:

First Run of Chrx Script

After chrx rebooted and “repair” the laptop, I have to run the chrx installation script a second time:

Chrx Installation Script
The anticipation……

There were some confusion as the second run of the chrx install script didn’t seemed to work, which turned out to just be a disconnected wifi. After that, it was a smooth sailing!

Installing GalliumOS Core Image
It’s loading… it’s loading!
GalliumOS
Yes!!!

I set up my chronos account password, and the rest is just customization all I want! I found a reddit for GalliumOS, and got some good recommendation from the post What To Do after installing Gallium OS: A noobie’s Guide for other chromebook noobies. Some softwares I added were Firefox (with all my favorite addons: ABP Adblock, NoScript, Blur, Firebug, and Pocket), PIA VPN, Cisco AnyConnect, VIM, Sublime Text, GIMP, LibreOffice Writer, and Gnome Software Center.