Android Tips and Guides

Google Chrome OS for PC: Introducing Brunch Bootloader!

Everyone says “Chrome OS is God, Chrome OS is this, Chrome OS is that”. But do they ever tell you how do they use it? Here’s one of the projects allowing you to install and use it on your PC — As well as a guide to install it!

Of course before we begin, I’ll be using several terms:

Linux distro: A Linux distribution in general, really.
GRUB2: Second version of GRUB bootloader, stands for “GRand Unified Boot manager”, a GNU project allowing you to boot anything Linux and manage multiboots more easily.
Brunch: An unofficial GRUB2 bootloader to patch installed version of Chrome OS and make it usable on your PC.
Kernel commandline: The “parameters” passed to the “kernel” for booting to your OS in a more stable or functional status. Brunch allows you to customize this to troubleshoot issues to occur during booting or using CrOS.
Crosh: Stands for “Chrome OS Shell”, the Linux-like terminal allowing you to do lots of stuff that aren’t available through graphical interface.
ARC: Stands for “Android Runtime for Chrome”, allowing you to use Android apps on Chrome OS — Just like “Windows Subsystem for Android” but for Chrome.
Crouton: The official Linux implementation for Chrome OS by Google. It has containers by themselves, which uses the Chrome OS drivers and backends for operating.
Brioche: Brunch’s Linux implementation for Chrome OS by the bootloader’s developer. It also has a container system, but uses the internal drivers and such for operating.
Wayland: Some modern “renderer” used to load desktop environment and such. If you’re a Linux user, you should be aware of this.

Introduction to Brunch

From my words, Brunch is a customized GRUB for installing Chrome OS and patching it for using it on your computer without running into severe issues. It allows you to select what patch to apply and what not by configuring it on live system so you can make it usable or even as stable as possible on your device — Like targeted installation feature for Debian, but you configure things on your own. It utilizes an extra partition (Namely “ROOTC”) to store patches and stuff; and an EFI partition to, well, boot the system of course. It’s a long-aged project, but there aren’t many reliable resources except their Wiki as a guide to utilize it sadly…

What do you need?

The following requirements must be met.

  • You need a PC with UEFI firmware if possible. Legacy BIOS could also work, but keep in mind that it requires several patches and unexpected issues are to occur. Also check CPU families and suitable firmwares for them. Not all families are supported though. No, Nvidia GPUs will never work because ChromeOS utilizes Wayland as compositor and there isn’t the driver to get it working on Nvidia installed.
  • You need 2 external drives. USB or SD card, doesn’t matter. One will hold a bootable live distro, the other will hold assets to install Brunch bootloader and CrOS.
  • Then you need some familiarity with Linux command line, patience to go through documentations and time to find patches to apply.

Installing Brunch

Installation procedure depends on how do you want to utilize the system. I’ll assume you want to install it on your system drive, overwriting the existing OS. For dualbooting and further troubleshooting, though, I recommend you to check Brunch GitHub.
So, first of all, you need to flash a Linux installation image to your USB drive using either Rufus (Windows), command line or a USB image writer shipped with your distro (Linux). Also download latest Brunch release and the official Chrome OS image for your device, on another external drive. I use “grunt” for AMD APUs, as my laptop has AMD A4. If you have Intel CPU older than 8th gen, for example, you’ll need “rammus”. You can check Brunch wiki for more information and table of supported CPUs and images for those as well.
Boot from the Linux USB you just created.
Then, go into the path you downloaded Brunch release into, open a terminal in there, and do these commands in the order;

# Extract Brunch files and Chrome OS recovery image.

tar -xvf brunch_(...).tar.gz
unzip /path/to/chromeos_codename_(...)

# Make Chrome OS installing script executable.

chmod +x

# Assuming you have Ubuntu up. Install dependencies for the script.

sudo apt install cgpt pv

# And lastly, run the script. Replace sdX with the target disk (in /dev). Use Gparted to identify.

sudo ./ -src /path/to/chromeos_codename_(...).bin -dst /dev/sdX

Now sit back and have a cup of tea. This will take a while. Once it’s done, reboot the PC, and boot from internal disk. We’re not done yet. When you have Chrome OS booted, check if WiFi is up first. You can do so by clicking on system tray and “expanding” WiFi tile. Optionally check for Bluetooth too. If one of those isn’t up, especially WiFi, do Ctrl+Alt+F2 to drop into a Chrome OS Developer Shell and log in as “chronos”, then do this command and follow the on-screen instructions;

sudo edit-brunch-config

Simply put, you need to mark the card you have (for example “rtl8723de” for Realtek RTL8723DE) and several other options sounding cool to you. I personally mark these options;

  • “enable_updates” to, well, enable updates for getting from Settings > About Chrome OS.
  • “pwa” to enable use of Brunch PWA.
  • “mount_internal_drives” for accessing files under any other partitions on the disk Chrome OS was installed on. Keep in mind that enabling this option might have Media Storage on ARC running for the whole time and cause drastically high CPU usage!
  • “rtl8723de” for my laptop’s WiFi card (Realtek RTL8723DE)
  • “acpi_power_button” for power button — If you have tablet/2in1, long pressing on power button does its work out of box. This is for laptop and desktop users for which long pressing on power button does nothing but short pressing usually works.
  • “suspend_s3” for S3 state suspend. ChromeOS usually doesn’t handle suspension right when you have S3 suspension and not S0/S1/S2. You can check if you need this enabled or not by giving this command on Windows:
    powercfg /a

    If you get some output similar to this, you need to enable this config.

    According to output given by this command, author's PC needs suspend_s3 enabled in their Brunch config.

For explanation on all these options, you can refer to Brunch wiki as well.

Once you have fixed as much issues as possible using Troubleshooting section, you’re now ready to use Chrome OS on your device! Was it any hard? I don’t think it was. One thing you need to keep in mind, though, is that you need to check for updates to Brunch bootloader regularly. And update them whenever possible to avoid further issues when updating your Chrome OS installation.
I hope you liked it. I’m thinking of continuing this article series by other methods of installations, some experimentations that worked better than the way they’re intended to be done and so on. See you all in another one!

Don't miss out