Commit e7779df3 authored by Guillaume Tucker's avatar Guillaume Tucker

README.md: add section about building

Separate the instructions to clone the repostory with Git LFS into a
separate section, and add a section with some minimal instructions to
get started for buildnthg Chromebook firmware images.
Signed-off-by: Guillaume Tucker's avatarGuillaume Tucker <guillaume.tucker@collabora.com>
parent c117cc99
Chromebook Firmware Utilities Chromebook Firmware Utilities
----------------------------- -----------------------------
# Flashing # Installing
The `servoflash.py` tool can be used to flash firmware images onto Chromebook This repository contains tools to build and flash Chromebook firmwares. It
devices using a Servo interface. To use it, clone this repository with Git LFS uses Git LFS in order to manage binary files, so please follow these steps to
enabled: be able to use it:
``` ```
sudo apt install git-lfs sudo apt install git-lfs # on Debian...
git clone https://gitlab.collabora.com/chromium/flash-tools.git git clone https://gitlab.collabora.com/chromium/flash-tools.git
cd flash-tools cd flash-tools
git lfs fetch git lfs fetch
git lfs checkout git lfs checkout
``` ```
This includes a specific `flashrom` binary with its library dependencies copied # Flashing
from the Chromium OS SDK.
The [`servoflash.py`](https://gitlab.collabora.com/chromium/flash-tools/-/blob/master/servoflash.py) tool can be used to flash firmware images onto Chromebook
devices using a Servo interface. It uses a specific `flashrom` binary with its
library dependencies copied from the Chromium OS SDK. They can be found in the
local `bin` and `lib` directories in this repository.
Then to flash a firmware image, the target device needs to be in the Google To flash a firmware image, the target device needs to be in the Google Servo
Servo config file which is typically `/etc/google-servo.conf`. This is where config file which is typically `/etc/google-servo.conf`. This is where the
the device serial numbers are associated with their names. There also needs to device serial numbers are associated with their names. There also needs to be
be a `servod` service running to be able to access the device. a `servod` service running to be able to access the device.
Here's a sample command to flash a firmware, given all the preconditions
mentioned above are met:
Here's a sample command to flash a firmware, given all the preconditions are
met:
``` ```
./servoflash.py \ ./servoflash.py \
--device=rk3399-gru-kevin-cbg-0 \ --device=rk3399-gru-kevin-cbg-0 \
...@@ -33,7 +38,33 @@ met: ...@@ -33,7 +38,33 @@ met:
It can take a few minutes. There should be these messages around the end, It can take a few minutes. There should be these messages around the end,
which can vary depending on the type of Chromebook: which can vary depending on the type of Chromebook:
``` ```
Erasing and writing flash chip... Verifying flash... VERIFIED. Erasing and writing flash chip... Verifying flash... VERIFIED.
SUCCESS SUCCESS
``` ```
# Building
The Chromebook firmware needs to be rebuilt and flashed with extra patches and
configuration options turned on in order to enable the serial console in the
bootloader and boot with a kernel image and ramdisk supplied over TFTP
interactively. The standard firmware shipped with the products is only
configured to boot the Chrome OS image present on the device, with no serial
console and no way to override it. This is not suitable for automating the
Chromebook in a test lab such as LAVA, or for doing low-level kernel
development.
Building the firmware for a Chromebook can be non-trivial. To make things
easier, this repository contains a Docker container and some helper scripts to
build firmware images for some known device types.
The
[`cros-build/bootstrap.sh`](https://gitlab.collabora.com/chromium/flash-tools/-/blob/master/cros-build/bootstrap.sh)
script can be used to create local directories, then build the Docker container
which will be using them and start it. It takes only one argument which is the
device type. For example:
```
./bootstrap.sh octopus
```
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment