Fixing Battery Discharge problem on Chromebook Dev-Mode

As a follow-up to my previous post about installing Arch Linux on a Chromebook, this write-up describes an annoying problem and some of my own observations while following through with the solution (mostly for self-reference in the future).

The Problem

To boot into Arch Linux, the Chromebook device needs to run a legacy bootloader so that your BIOS of choice can be initiated (e.g. Grub). This was part of the process when installing Arch:
$ sudo crossystem dev_boot_legacy=1
When the device drains its battery, this value is set back to its default (0), effectively locking you out of the only OS you have installed on the system. Pressing Ctrl + L as usual will only greet you with two beeps.

The solution

Here's the full solution. Here's my summary:
  • We need to utilize ChromeOS' built-in recovery system to fix the boot flag for us
  • The only script that ChromeOS recovery routine will run is the chromeos-install script
  • So we make a recovery USB, then we mount it and modify the chromeos-install script so that it fixes the flag for us during recovery instead of... well, installing ChromeOS

A Couple Notes on my Adventure

  • My Chromebook model is a Falco, so the recovery image is #35 in the list.
  • I ran into a full-disk problem while downloading/extracting the recovery image from Google. Simply modify the linux_recovery.sh script and set the WORKDIR variable to something that's not /tmp.
  • The starting location for my BOOT-A partition is 146800640
  • Keep the original chromeos-install script in case of future need for installing ChromeOS

Comments

Popular Posts