Instantly share code, notes, and snippets.

Embed
What would you like to do?
Guide to installing GalliumOS on an Acer Chromebook 14" (CB3-431) 'Edgar'

GalliumOS on Edgar

This document sets out how I installed GalliumOS 2.1 on a new Acer Chromebook 14" (CB3-431) 'Edgar' in April 2017. I installed GalliumOS on the internal eMMC storage, but left Chrome OS in place (allowing dual-booting).

It is meant to be an easy-to-follow and particularly thorough (if repetitive) guide, but I make no warranty that it will work correctly for you. It will wipe all data on your Edgar.

I have tried to provide references for each section; see the GalliumOS wiki guide to chrx installation for an overview of the general process.

⚠ Caution: There have been reports of Edgars' speakers overheating, due to a malfunction of the audio hardware, when booted into anything other than Chrome OS. I have not experienced this, and it seems to be believed that this will not now occur under GalliumOS. More information can be found in the comments for the GalliumOS Braswell Platform Validation issue.

Contents

  1. First boot
  2. Enable Developer mode
  3. Update the firmware to enable Legacy Boot
  4. Reserve space on the eMMC
  5. Install GalliumOS

First boot

  • Connect the power
  • Open the lid

You might want to at least proceed through wifi setup and check that the hardware is working correctly.

Enable Developer mode

In this section you will put your Edgar into 'Developer Mode' which will 1) disable 'verified boot', allowing you to run operating systems that haven't been signed by Google, and 2) give you access to a root shell in Chrome OS.

This will wipe all your data on your Edgar.

See the Chrome OS generic information for entering Developer mode or How-To Geek's guide for more information.

  • Having shutdown your Edgar, hold down the Esc and Refresh (↻) keys and press the Power key.

  • Your Edgar will then boot into Recovery Mode and appear to warn you that "Chrome OS is missing or damaged."

  • Press Ctrl-D.

  • The screen will change to one saying “To turn OS Verification OFF, press ENTER”.

  • Press the Enter key and your Edgar will reboot.

  • Your Edgar will boot to a screen that says “OS verification is OFF”. If you wait, your Edgar will eventually beep several times and then boot to Chrome OS; alternatively, you can press Ctrl-D at this point to immediately boot to Chrome OS.

  • Your Edgar will show a warning about transitioning - wait.

  • Your Edgar will show a screen saying that it is "Preparing your system for Developer Mode". This process will take some time. A progress bar is displayed at the top of the screen.

  • Eventually your Edgar will reboot one more time.

  • Your Edgar will boot to a screen that says “OS verification is OFF”. If you wait, your Edgar will eventually beep several times and then boot to Chrome OS; alternatively, you can press Ctrl-D at this point to immediately boot to Chrome OS.

At this point, Developer mode is enabled and OS verification has been disabled. It will continue to show the “OS verification is OFF” screen at startup.

Update the firmware to enable Legacy Boot

The firmware that your Edgar comes with does not properly support booting operating systems other than Chrome OS. In this section you will update the RW_LEGACY section of your Edgar's firmware and configure it to allow 'Legacy Boot'.

Update: As of February 2018, Mr Chromebox has produced a UEFI Full ROM firmware for Edgars, and other Braswell Chromebooks. This is considered a better option than updating RW_LEGACY if you are no longer interested in using Chrome OS at all on your Chromebook and are using GalliumOS 2.2 or later. This guide still describes updating RW_LEGACY and allowing dual-booting with Chrome OS.

This section relies on the work of Mr Chromebox. See MrChromebox.tech for more information, in particular the Firmware Utility Script section.

  • Boot your Edgar to Chrome OS.

  • Proceed to setup wifi.

  • Press the 'Browse as Guest' button toward the bottom-left corner of the screen.

  • Hold down the Ctrl and Alt keys, and press T, to get a crosh terminal.

  • Type shell and press the Enter key to get a regular shell in that terminal.

  • Type (or copy-and-paste) cd; curl -LO https://mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh and press the Enter key to download and run the Mr Chromebox Firmware Utility Script.

  • Type 1 and press the Enter key to choose "Install/Update RW_LEGACY Firmware".

  • Press the Enter key again to confirm the default choice of booting from internal storage.

  • Type q and press the Enter key to quit the Firmware Utility Script.

At this point, your Edgar has been configured to allow 'Legacy Boot' and the firmware has been updated to enable this to actually work.

Reserve space on the eMMC

In this section you will alter the partition map on your Edgar's internal storage eMMC, so that some space is reserved for the installation of GalliumOS.

This will wipe all your data on your Edgar (again).

This and the following section rely on chrx. See chrx.org for more information.

  • Boot your Edgar to Chrome OS.

  • Proceed to setup wifi.

  • Press the 'Browse as Guest' button toward the bottom-left corner of the screen.

  • Hold down the Ctrl and Alt keys, and press T, to get a crosh terminal.

  • Type shell and press the Enter key to get a regular shell in that terminal.

  • Type (or copy-and-paste) cd ; curl -Os https://chrx.org/go && sh go and press the Enter key to download and run chrx.

  • Follow the instructions, including choosing the amount of disk space that you will give over to Gallium OS. I suggest leaving this at the default.

  • Eventually chrx will prompt you to press Enter to reboot; do so.

  • Your Edgar will boot to a screen that says “OS verification is OFF”. If you wait, your Edgar will eventually beep several times and then boot to Chrome OS; alternatively, you can press Ctrl-D at this point to immediately boot to Chrome OS.

  • Your Edgar will enter Recovery Mode on this boot, as a result of chrx altering the partition table. Wait for the repairs to Chrome OS to complete, after which your Edgar will reboot again.

  • Your Edgar will boot to a screen that says “OS verification is OFF”. If you wait, your Edgar will eventually beep several times and then boot to Chrome OS; alternatively, you can press Ctrl-D at this point to immediately boot to Chrome OS.

At this point, your Edgar will have space reserved on its internal storage for the installation of Gallium OS.

Install GalliumOS

In this section you will install GalliumOS to the space that you previously reserved.

This and the previous section rely on chrx. See chrx.org for more information.

Before you proceed, you may wish to investigate chrx's options, in particular those relating to hostname, username, locale and timezone.

  • Boot your Edgar to Chrome OS.

  • Proceed to setup wifi.

  • Press the 'Browse as Guest' button toward the bottom-left corner of the screen.

  • Hold down the Ctrl and Alt keys, and press T, to get a crosh terminal.

  • Type shell and press the Enter key to get a regular shell in that terminal.

  • Type (or copy-and-paste) cd ; curl -Os https://chrx.org/go && sh go and press the Enter key to download and run chrx. (It is at this stage, that you would need to append any options.)

  • Follow the instructions.

  • Eventually chrx will prompt you to press Enter to reboot; do so.

  • Your Edgar will boot to a screen that says “OS verification is OFF”. You must press Ctrl-L at this point. (If you do not, your Edgar will eventually beep several times and boot to Chrome OS.)

  • Your Edgar will now boot to GalliumOS.

At this point your Edgar has GalliumOS installed. To boot to it in the future, press Ctrl-L at the “OS verification is OFF” screen. To boot to Chrome OS, you can either wait at that screen or press Ctrl-D.

Extra - Encrypt your home folder

See How-To Geek's How to Encrypt Your Home Folder After Installing Ubuntu guide.

Extra - Set the GBB flags

Setting the Google Binary Block (GBB) flags in your Edgar's firmware will allow it to boot quickly to GalliumOS without you having to intervene every time. (It will also protect against losing the ability to boot to GalliumOS at all in the event of a completely flat battery.)

This section relies on the work of Mr Chromebox. See MrChromebox.tech for more information, in particular the Firmware Utility Script section.

You will have to physically open up your Edgar in this section, see the iFixit teardown of an Edgar for more information and photos.

N.B. The iFixit source is actually wrong on one quite important point - only the screw near the battery needs to be removed. (I didn't suffer any ill-effects from removing, and replacing, both.)

Remove the write-protect screws

  • Shutdown your Edgar.

  • Remove the 8 shorter and 2 longer screws from the underside of your Edgar.

  • Remove the bottom panel of your Edgar.

  • Locate the two write-protect screws and remove them. (See the iFixit teardown.)

  • Replace the bottom panel of your Edgar. (I suggest you can safely leave the screws out for now, if you're careful.)

Set the GBB flags

  • Type (or copy-and-paste) cd; curl -LO https://mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh and press the Enter key to download and run the Mr Chromebox Firmware Utility Script.

  • Type 4 and press the Enter key to choose "Set Boot Options (GBB Flags)".

  • Type 1 and press the Enter key to choose a short boot-delay and booting to GalliumOS by default.

  • Press the Enter key again to return to the main menu.

  • Type q and press the Enter key to quit the Firmware Utility Script.

Replace the write-protect screws

  • Shutdown your Edgar.

  • Remove the bottom panel of your Edgar.

  • Replace the two write-protect screws. (See the iFixit teardown.)

  • Replace the bottom panel of your Edgar.

  • Replace the 8 shorter and 2 longer screws.

Extra Extra - Replace the boot screen image

⚠ Caution: This section is both largely pointless and risks bricking your Edgar if something doesn't work as expected.

It is possible to go beyond setting the GBB flags (to allow a quick boot to GalliumOS without intervention) to also changing the image briefly shown ("OS verification is OFF") when your Edgar is booted up.

⚠ Caution: Again, it's worth emphasising how silly this is and that you risk no longer being able to use your Edgar for anything by attempting it. Furthermore, the instructions are not as comprehensive or as straightforward in the section as they are in the rest of this document.

Joshua Stein describes much the same process for a Chromebook Pixel, although some of the details do differ (i.e. the boot video mode). The source code for Mr Chromebox's Firmware Utility Script and chromiumos bmpblk documentation may also be useful references.

Read the current GBB, export and unpack the current Bitmap FV

  • sudo aptitude install vboot-utils python-pil
  • cd ~/Documents; mkdir bootimage; cd bootimage
  • Obtain flashrom 0.9.4 . (As of writing, Mr Chromebox hosts a copy at https://www.mrchromebox.tech/files/util/flashrom.tar.gz.)
  • sudo ./flashrom -i GBB:gbb_old.rom --read
  • gbb_utility --bmpfv=bmpfv_old gbb_old.rom
  • bmpblk_utility -x -d bitmaps bmpfv_old

Create the new boot screen

  • cd bitmaps

  • Create your new boot screen and save it as custom.png . Be aware that whatever you create will end up being scaled (and squished) down to 1024x768 (as this is the resolution that your Edgar's firmware uses when it first starts the machine).

The final image has to be in a particular kind of bitmap format. The easiest way to ensure that your image is in this format is to to use Google's own script.

# Change this
import Image
# to this
from PIL import Image
  • ./convert_to_bmp3.py --scale 1024x768! custom.png

  • Edit config.yaml

bmpblock: 2.0
compression: 2
images:
  # ...
  custom: custom.bmp # Add an entry for your image
screens:
  scr_0_0: # Replace the scr_0_0 screen with one showing only your image
    - [0, 0, custom]
  scr_0_1:
    # ...

Pack and set the new Bitmap FV, set the GBB flags

  • bmpblk_utility -z2 -c config.yaml ../bmpfv_new
  • cd ..
  • cp gbb_old.rom gbb_new.rom
  • gbb_utility --set --bmpfv bmpfv_new gbb_new.rom
  • gbb_utility --set --flags=0x4A9 gbb_new.rom

These flags (0x4A9) specify a short boot-delay and booting to GalliumOS by default.

Remove the write-protect screws

As above.

Flash the new GBB

  • sudo ./flashrom -i GBB:gbb_new.rom --write

Replace the write-protect screws

As above.

@MeTaLiKiD

This comment has been minimized.

MeTaLiKiD commented Sep 3, 2017

Thanks for this tutorial.

Everything works just fine 👍

Could you provide a tutorial on how to restore EDGAR to OEM ?

@stupidpupil

This comment has been minimized.

Owner

stupidpupil commented Sep 10, 2017

Glad it worked, and I hope this tutorial was useful (despite just reproducing information elsewhere)!

I'm unlikely to ever restore my EDGAR, so it's not something that I can test unfortunately. I'd guess it's a matter of resetting the GBB flags (using Mr ChromeBox's tool) if you've changed them and then a Chrome OS recovery. (I'm not sure if it's possible to rollback the firmware update in step 3, but the recovery process might do this.) Your best bet might be searching the reddit.

@kmart9001

This comment has been minimized.

kmart9001 commented Aug 11, 2018

Couldn't find this info anywhere, but since this guide worked perfectly for me on my Edgar I thought I'd ask here....what happens when you update ChromeOS with GalliumOS installed? I feel like I should avoid it, but support for Linux apps in chromeOS is now a thing for Edgar and I wanted to play with it....

Thanks in advance
Kevin

@MrChromebox

This comment has been minimized.

MrChromebox commented Aug 12, 2018

@wolves420 nothing at all, the two are completely separate. Only potential issue is if a ChromeOS firmware update does something that breaks legacy boot mode, but that's only something that's been seen on a handful of Braswell devices

@kmart9001

This comment has been minimized.

kmart9001 commented Aug 12, 2018

Ah. What about switching over to the beta, or dev channels... it says it will wipe the Chromebook if I switch channels, will that affect GalliumOS in any way?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment