This page details the steps used to install Debian testing on an Acer CP5-471 Chromebook (Lars). Parts of this may be applicable to other similar chromebooks, but the .config file provided below with definitely be different for other platforms (so don't re-use it or you will have a bad time). This coreboot image will use the Seabios payload to boot the Debian installer used for provisioning systems in our CI, but can (theoretically) boot any OS that supports legacy BIOS booting.
Coreboot config used can be found here. If using file names/paths that differ from those in the rest of the instructions for firmware binaries, etc, the config will need to be adjusted to point to the different names/paths. The .config file should be placed in the root of the coreboot repo.
Place the seabios_bootorder.txt file into the root of the coreboot repo. This configures the chromebook's internal hard drive as the only boot device. This can be overridden by hitting Esc on boot to select other (e.g. external) boot devices:
<TODO: extracting binary blobs from google's firmware (ME, EC, FD)>
Build coreboot: make CPUS=N where N is the number of CPUs on your system (greatly reduces compile time)
Remove write-protection screw on motherboard
Open the chromebook and remove the 1 screw located here on the motherboard:
Put chromebook in developer mode
Hold Esc and Refresh key (top row, 4th key) and power on
Hit Ctrl+D at the recovery screen and follow instructions to put device into dev mode
There are two ways to flash the chromebook:
In-band from within ChromeOS using flashrom
Out of band from a separate system using a SPI ROM programmer (e.g. Dediprog, rPi with SPI, etc).
The first option has worked without any issues on a few systems with one caveat, the verification process fails because the flash descriptor (FD) area on the chip is read-only. However method was used to successfully flash 4 of these systems since the other regions that we actually care about (BIOS, in particular) are writable, so this is the option cover here.
To flash the chromebook 'in-band' using ChromeOS's flashrom:
Log in as root on the chromebook by hitting Ctrl+Alt+<-- (The <-- key is immediately left of the Esc key)
Username is 'root', and by default there is no prompt for password.
Copy build/coreboot.rom built previously from the coreboot repo to the chromebook
Run flashrom: flashrom -w <path to coreboot.rom> -V
Note: the -V is optional, but since flashrom defaults to very little output on the screen, it's nice to have for peace of mind!
As mentioned previously, the verification step at the end will fail. Congratulations! The system now has coreboot with the SeaBIOS payload.
There is a debian_chromebook branch in the mesa_jenkins repo with a few tweaks to the Debian installer builder and finalize.sh script. The key changes are:
Partition is set to be manual. On installation, since the primary MMC disk on the Chromebook is so small, it's recommended to use the following partition scheme, where /dev/sda is an external disk attached with a SATA<-->USB3 controller:
/dev/mmcblk0: Partition 1: Mountpoint: / Filesystem: Ext4 Flags: Bootable Size: Fill entire disk/dev/sda Partition 1: Mountpoint: /home Filesystem: Ext4 Flags: <None> Size: Fill entire disk
The use of /var/cache/apt/archives has been disabled, so that / does not fill up with cached .deb files
Flashrom w/ Dediprog SF600:
The SPI ROM we are interested in is being pointed to here by a screwdriver:
flashrom can be used to flash the SPI ROM with a Dediprog with: sudo flashrom -p dediprog -V -w build/coreboot.rom