ChromeOS on Framework 13 11th DIY?

Hello to everybody,

I can confirm that ChromeOS runs very well on my new Framework Laptop 13 with AMD 7840U. For those who also want to play with ChromeOS, I am happy to provide my installation script. It runs just well on Fedora 39 as it does on Ubuntu.

script create-chromeos-image

#!/bin/sh -e
#
# creates a ChromeOS image for Framework Laptop 13 AMD 7840U
# tested under Fedora 39 (Workstation Edition) and Ubuntu 22.04 LTS
#
# written by Andreas J. Bathe <ajbathe@g****.com> 2024-02-07
#
# see https://github.com/sebanc/brunch/blob/main/install-with-linux.md#dualboot-installations

PATH2CHROMEOS=/opt/google/chromeOS
CHROMEOSIMG=${PATH2CHROMEOS}/chromeos.img
# define image size in GB
SIZE=128


##### see https://github.com/sebanc/brunch

# create brunch directory if it's not existing
BRUNCHDIR=${PATH2CHROMEOS}/brunch
mkdir -p ${BRUNCHDIR}

TGZ=brunch_r120_stable_20240107.tar.gz
URL=https://github.com/sebanc/brunch/releases/download/r120-stable-20240107/${TGZ}

[ ! -f ${BRUNCHDIR}/${TGZ} ] && wget -N -nd ${URL} -P ${BRUNCHDIR}

##### see https://github.com/sebanc/brunch/blob/main/install-with-linux.md#amd-1
##### and https://cros.tech/device/gumboz/
##### to get a working recovery image for the Framework Laptop 13 AMD

# create recovery directory if it's not existing
RECOVERYDIR=${PATH2CHROMEOS}/recovery
mkdir -p ${RECOVERYDIR}

ZIP=chromeos_15662.88.0_zork_recovery_stable-channel_mp-v9.bin.zip
URL=https://dl.google.com/dl/edgedl/chromeos/recovery/${ZIP}

[ ! -f ${RECOVERYDIR}/${ZIP} ] && wget -N -nd ${URL} -P ${RECOVERYDIR}

##### build ChromeOS image

CHROMEOSBIN=$( basename ${ZIP} .zip )
WORKDIR=/opt/google/chromeOS/tmp
mkdir -p ${WORKDIR}
cd ${WORKDIR}
tar xvf ${BRUNCHDIR}/${TGZ}
unzip ${RECOVERYDIR}/${ZIP}

./chromeos-install.sh -src ${CHROMEOSBIN} -dst ${CHROMEOSIMG} -s ${SIZE}
rm -fr ${WORKDIR}

echo
echo ":)"
echo
echo "Don't forget to put '10-chromeos' into /etc/grub.d"
echo "and to update your grub.cfg for your linux distribution."

exit 0

# end of script.

grub-script 10_chromeos

#!/usr/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry 'ChromeOS' --class chromeos {
    rmmod tpm
    img_path=/opt/google/chromeOS/chromeos.img
    img_uuid=8cecbb71-7c5d-4fbe-aba7-b5f2fdb1f6bb
    search --no-floppy --set=root --file $img_path
    loopback loop $img_path
    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 img_uuid=$img_uuid img_path=$img_path \
            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 img_uuid=$img_uuid img_path=$img_path
    fi
    initrd (loop,7)/lib/firmware/amd-ucode.img (loop,7)/lib/firmware/intel-ucode.img (loop,7)/initramfs.img
}

menuentry 'ChromeOS settings' --class chromeos {
    rmmod tpm
    img_path=/opt/google/chromeOS/chromeos.img
    img_uuid=8cecbb71-7c5d-4fbe-aba7-b5f2fdb1f6bb
    search --no-floppy --set=root --file $img_path
    loopback loop $img_path
    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 img_uuid=$img_uuid img_path=$img_path
    initrd (loop,7)/lib/firmware/amd-ucode.img (loop,7)/lib/firmware/intel-ucode.img (loop,7)/initramfs.img
}

Have fun :slight_smile:

2 Likes