[Chromebooks] Manav Harsana:
Dual Boot ChromeOS with Linux or Windows!

Update 1: This thread has been fully rewritten for Windows too!

Update 2: Added Steps for Arch Based Distros!

This guide will tell you how you can dual boot ChromeOS with Linux or Windows! This guide is based on the official GitHub page!

Update2: Added troubleshoot section: Added ChromeOS not detecting fix​

INDEX

• About

• Requierments

• Downloads

• Intel CPUs

• Types of recoveries

• AMD CPUs

• Linux Installation

• Preparing environment

• Installation

◦ Gparted

◦ Secureboot

• Windows Installation

• Preparing Linux Environment

◦ Preparing Environment

◦ Installation

◦ Secureboot

• Troubleshoot

• Fix ChromeOS not detecing

• Credits

About
​

ChromeOS, is an Operating system based on Gentoo Linux and designed by Google based on the ChromiumOS an open source project but unlike that ChromeOS is not open source, ChromeOS uses Google API and has intergrated Google Apps and Google Chrome as its interface! It also supports android apps!

Why chromeOS ? ChromeOS is a very smooth OS unlike other Android-x86 projects it is a fully functional and powerful OS, though it is not an ideal choice for gaming because it does not support the keymapping function. But if it ever gets Key Mapping there is no better option for running android for your PC other than chromeOS

Brunch, To keep it short and simple brunch is a framework which can help you to run ChromeOS on your Device even if its not a chromebook!

Requierments

​

• qs-x86_64 based computer with UEFI boot support (you can check that just search on google if you don’t know)

◦ With MBR patch your MBR/Legacy device might be supported

• Administrator Permissions

• Should have an Intel CPU (check conditions for that too)

◦ Intel 1st gen Core are supported only till ChromeOS 81 (This release may not be available anymore)

◦ Atom, Celeron and Pentium processors are supported since Baytrail and later versions!

• AMD Ryzen and AMD Stoney Ridge are supported, but it is limited

• Nvidia GPUs are not supported (if you have one then its ok, but ChromeOS won’t detect it)

• No Virtual Machines (VMs) are supported

• ARM CPUs are not supported at all, No luck guys :(

• Intel Core 2 Duo and older CPUs are not supported

Now if you are supported then Great! Lets move on!

DOWNLOADS

NOTE: you can even download the eve image which is the best as its the official Pixelbook recovery, but remember the boot chances are less with that so If you don't have time/data download from the below images

Intel CPUs​

• If your CPU is 10th and 11th gen open this Link note the versions and proceed to download from HERE but before read below

◦ 11th gen and some 10th gen CPUs may need kernel 5.10

• If your CPU is 1st gen to 9th gen then after opening this Link, note the versions and proceed to download from HERE and before downloading read below,

Stable Builds​

For daily and frequent use [Recommeneded for average users],

these builds are reliable and are pretty stable for day-to-day use and are recommended.

Beta Builds​

Good for daily use and more Beta features [Recommended],

these builds are pretty stable and relaible with a few more Beta features and just a few bugs. These are recommended and also if the stable build is not availible.

Dev Builds​

Buggy and more features [Power users only, Not Recommended],

these builds are not very stable and are buggy but have more features! Not recommended for daily use. These builds are ideal for developers who want to test out some features (Liveboot)

Canary Builds​

Unstable! Experimental feaatures! [NOT Recommended][DEVs ONLY],

These builds have a lot of bugs but the most of the features! These builds are not intended for average users and are only for testing.

AMD CPUs​

• For Stoney Ridge and Bristol Ridge Click Here but before read the above info carefully

and proceed to download from HERE

• For Ryzen Click here but read above before downloading then carefully

and proceed to download from HERE

• for Ryzen 4xxx devices you need kernel 5.10

As of I am writing this I have an Intel 10th gen CPU and the Stable builds are unavailable so I will be downloading the BETA Build which are quite stable too!

Now we have to also download Brunch, download the latest stable version from HERE

LINUX
​

Prerequisites,

• You should be on a Linux Distro

• Root access

• Atleast 16gb storage you can give to the OS

• Your PC should support Brunch

• Some basics of linux terminal (if not I recommend to learn because this helps in troubleshooting problems)

• Grub2 Bootloader

Preparing the Environment​

Now open Terminal by Ctrl+Alt+T

and run,

Lets enable super user permissions using the following command

sudo su

Enter password if it asks and hit enter

Debian based Distros:

Its a good thing to update and upgrade the packages by running this command,

sudo apt update && upgrade

Lets install the required packages the command below will install pv, tar, unzip, cgpt and gparted,

sudo apt install pv tar unzip cgpt gparted

Arch Based Distros:

sudo pacman -Syu pv tar unzip gparted && yay -S cgpt

Side Notes

____________________________________________________________________________________

pv,

Pipe Viewer, known as pv is a package which allows the user for the monitering of data being sent through pipe, it helps the user by giving them a visual display

Tar,

tape archive. Known as tar is used to create and extract archive files in the format of .tar, .tar.gz etc...

Cgpt,

Cgpt is a tool to manipulate GUID Partition Table from command line. It also supports ChromiumOS extentions

Gparted,

Gparted is an Advanced disk manager, its simple yet powerful UI makes it easier to create, delete or modify any partition!

Unzip

unzip command simply extracts zip files!

_____________________________________________________________________________________

Now lets go into Documents using the cd command cd simply means change directory

cd Documents

Now lets create a new folder and open that to keep things clean and tidy

mkdir command means make directory (make folder) and cd is change to directory

mkdir ChromeOS && cd ChromeOS

now cut/move the downloaded files to documents/ChromeOS from your file manager

Installation​

Now we will extract the tar.gz archive using tar we previously downloaded! Tar calles the command to run tar and zxvf is to extract the file in format of tar.gz

tar zxvf brunch_ filename.tar.gz

Replace the brunch_filename.tar.gz from your actual bruch file’s name

now we also want to extract the chromeos zip file this file can be extracted by using the unzip command!

unzip chromeos_ filename.bin.zip

Replace the chromeos_filename.bin.zip from your actual chromeOS file’s name

once done

if you already have an empty disk and are deciding to use that for installation then just check these things:

the partition should be ext4 or ntfs (ext4 recommended)

if not or if you don’t know what partition is it then

1. open Gparted and if under the file system your partion shows ext4 then close Gparted and if not then

2. right click the patition then

3. select format to and

4. select ext4 after that

5. click the ✓ logo and proceed after that

6. close Gparted.

If you don’t have a free partition or you want to create a different partition then,

minimize terminal and open Gparted (if you ran the first command it is automatically installed).

1. Now open Gparted and

2. Resize your storage and free up 16-100 gb of storage, to do that right click the partition you want to give storage from,

3. Click on the resize/move and

4. In the Free space following (MiB) text box enter the amount of storage you want to give to chromeOS in MB and click resize,

5. now you will notice a new space created called unallocated right click on it then click on new.

6. Now select Create as Primary Partion and File System: ext4 and click add! Now again click the ✓ Icon and proceed.

Also in Gparted note the name of your ChromeOS partition below the “Partition” table

for eg: /dev/sda11, /dev/mmcblk0p5 or /dev/nvme0n1p4

now open terminal,

now we will create a new mountpoint for that we will create a new directory using mkdir. The ~ is a symbol of your home directory so ~/tmpmount actually means home/tmpmount!

mkdir -p ~/tmpmount

Now its time to mount the partition at the mountpoint

now this command will mount your partition named dev/partion to tmpmount!

sudo mount /dev/partition ~/tmpmount

here replace the ‘partition’ to your partition name you saw in Gparted

Now

as we did before replace the chromeos_filename.bin to your actual file’s name and also replace the size from the amount of storage you want to give to chromeOS, minimum 16gb maximum your choice.

This command runs the chromeos-install.sh file in bash this file runs the installer! With the source (-src) being chromeos.bin file and the destination (-dst) being ~/tmpmount/chromeos.img and the size (-s) is what you desire

sudo bash chromeos-install.sh -src chromeos_filename.bin -dst ~/tmpmount/chromeos.img -s size

Now if it asks for confirmation then type yes in the prompt

Now after it is over you should see something like this:

**************************************************************

menuentry "ChromeOS" --class "brunch" {

rmmod tpm

search --no-floppy --set=root --file /chromeos.img

loopback loop /chromeos.img

source (loop,12)/efi/boot/settings.cfg

if [ -z $verbose ] -o [ $verbose -eq 0 ]; then

linux (loop,7)$kernel boot=local noresume noswap loglevel=7 options=$options chromeos_bootsplash=$chromeos_bootsplash $cmdline_params \

cros_secure cros_debug loop.max_part=16 img_uuid=8191adfb-ab27-4e4d-a12e-b9e49aa1b466 img_path=/chromeos.img \

console= vt.global_cursor_default=0 brunch_bootsplash=$brunch_bootsplash quiet

else

linux (loop,7)$kernel boot=local noresume noswap loglevel=7 options=$options chromeos_bootsplash=$chromeos_bootsplash $cmdline_params \

cros_secure cros_debug loop.max_part=16 img_uuid=8191adfb-ab27-4e4d-a12e-b9e49aa1b466 img_path=/chromeos.img

fi

initrd (loop,7)/lib/firmware/amd-ucode.img (loop,7)/lib/firmware/intel-ucode.img (loop,7)/initramfs.img

}

menuentry "ChromeOS (settings)" --class "brunch-settings" {

rmmod tpm

search --no-floppy --set=root --file /chromeos.img

loopback loop /chromeos.img

source (loop,12)/efi/boot/settings.cfg

linux (loop,7)/kernel boot=local noresume noswap loglevel=7 options= chromeos_bootsplash= edit_brunch_config=1 \

cros_secure cros_debug loop.max_part=16 img_uuid=8191adfb-ab27-4e4d-a12e-b9e49aa1b466 img_path=/chromeos.img

initrd (loop,7)/lib/firmware/amd-ucode.img (loop,7)/lib/firmware/intel-ucode.img (loop,7)/initramfs.img

*******************************************************************

Now copy the text similar to this from your terminal and paste it in a notes app or save it somewhere.

Now the end is near!

Now run this command which will copy the given

sudo cp /etc/grub.d/40_custom /etc/grub.d/99_brunch

Running this command will open the nano text editor to edit these files,

sudo nano /etc/grub.d/99_brunch

Now a file will open,

1. Now paste the text you copied before in a new line

2. then press Ctrl+X then type y to save it and hit enter

Now lastly run,

Debian:

sudo update-grub

and

sudo update-grub2

Arch:

sudo pacman -Syu

this will update your grub configuration!

Now for those who have secure boot enabled you will have to follow some extra steps.

Now there are 2 ways:

• Way 1 [run if Way 2 does not work]: Go to BIOS Setup and simply disable SecureBoot and boot into ChromeOS

• Way 2 [Recomended]: Download the file from this link and paste the file in the ChromeOS folder

open terminal and run:

cd Documents/ChromeOS

sudo mokutil --import brunch.der

and thats it!

Windows
​

Prerequesites,

• Administrator access

• you have to give atleast 16gb to ChromeOS minimum, the disk should be

bitlocker disabled, and the format should be NTFS

• Windows Subsystem for Linux 2 (WSL2) or use Cygwin

• pv, tar, unzip and cgpt should be installed

• Basic Linux command knowledge

Preparing the Linux Environment​

• For windows 10 and 11 users

Open Powershell and run

wsl –install

thats it

NOTE: You must be running Windows 10 version 2004 and higher (Build 19041 and higher) or Windows 11.

• for Windows 7 & 8/8.1 (works for windows 10 and 11 too)

Download and install Cygwin from HERE

after this run the CygWin terminal (for CygWin users) and for WSL2 users launch it!

Preparing Environment​

And run this

sudo apt update && sudo apt -y install pv cgpt tar unzip

If the process ends with errors then run this:

sudo add-apt-repository universe

and run

sudo apt update && sudo apt -y install pv cgpt tar unzip

Installation​

cd /mnt/c/Users/username/Downloads

Here replace the username by your actual username

Now run,

tar zxvf brunch_filename.tar.gz

replace the brunch_filename.tar.gz from the real filename

Now run,

unzip chromeos_filename.bin.zip

Here replace chromeos_filename.bin.zip from the actual filename (cmon you know the drill)

Now run,

mkdir /mnt/c/Users/username/brunch

Again replace the username from the real username (if you want to install it in C disk)

Run,

mkdir /mnt/d/brunch

(if you want to install in Disk D)

Now run,

sudo bash chromeos-install.sh -src chromeos_filename.bin -dst /mnt/c/Users/username/brunch/chromeos.img -s size

Here replace chromeos_filename.bin from the real one, and replace size from the storage you want to provide (give atleast 16 gb)

Now Install Grub2Win from HERE

and run it

then click on the Manage Boot Menu and then add a new entry

Select the create user section from the type section.

Now open chromeos.grub.txt saved earlier, it will be in the same directory and copy the grub boot entries saved in that file and copy them to Grub2win

then click Ok and Apply to save the entries into Grub2win

To prevent windows from locking the NTFS partition I recommend you to switch off secureboot!

Troubleshoot​

ChromeOS boot fix

this fix includes:

• Grub bootloader does not show up

• PC/Laptop directly boots into the MainOS

• the menu boot time is too short

• etc

Now there is a common issue where you have installed ChromeOS but the grub menu does not show up and your PC directly boots into the MainOS (Windows/Linux) these steps will help you fix it!

open terminal and run

sudo apt install gedit

this will install Gedit

Gedit

is a simple text editor which is commonly used to edit system files

next run,

sudo gedit /etc/default/grub

This will open a text document in gedit

If it asks for password then type it

Now the usual default format of the text document is like this:

# If you change this file, run 'update-grub' afterwards to update

# /boot/grub/grub.cfg.

# For full documentation of the options in this file, see:

# info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0

GRUB_TIMEOUT_STYLE=hidden

GRUB_TIMEOUT=0

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs

# This works with Linux (no patch required) and with any kernel that obtains

# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)

#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)

#GRUB_TERMINAL=console

# The resolution used on graphical terminal

# note that you can use only modes which your graphic card supports via VBE

# you can see them in real GRUB with the command `vbeinfo'

#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux

#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries

#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start

#GRUB_INIT_TUNE="480 440 1"

Now you will see GRUB_TIMEOUT_STYLE=hidden

here replace the hidden from menu

next

in GRUB_TIMEOUT=0 change 0 from any number this is for how many seconds the grub menu should be visible, I recommend replacing 0 from 30.

thats it! save the file and run the command:

sudo update-grub

and

sudo update-grub2

Reboot now you should be able to see chromeOS in your menu!

Credits,

• Google

• Android

• ChromeOS Devs

• GitHub

• XDA

• Brunch

• Project Croissant

• Me

-Manav Harsana