#!/bin/bash set -e function usage() { echo -n \ "Usage: $(basename "$0") path_to_output_directory Obtain mrc.bin from a Haswell Chromebook firmware image. " } MRC_BIN_HASH="d368ba45096a3b5490ed27014e1f9004bc363434ffdce0c368c08a89c4746722" if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then if [[ "${1:-}" == "--help" ]]; then usage else if [[ -z "${COREBOOT_DIR}" ]]; then echo "ERROR: No COREBOOT_DIR variable defined." exit 1 fi output_dir="$(realpath "${1:-./}")" # Obtain mrc.bin from a Haswell Chromebook firmware image. # https://doc.coreboot.org/northbridge/intel/haswell/mrc.bin.html#obtaining-mrc-bin if [[ ! -f "${output_dir}/mrc.bin" ]]; then pushd "${COREBOOT_DIR}" make -C util/cbfstool cd util/chromeos ./crosfirmware.sh peppy ../cbfstool/cbfstool coreboot-*.bin extract -f mrc.bin -n mrc.bin -r RO_SECTION mv mrc.bin "${output_dir}/mrc.bin" popd fi if ! echo "${MRC_BIN_HASH} ${output_dir}/mrc.bin" | sha256sum --check; then echo "ERROR: SHA256 checksum for mrc.bin doesn't match." exit 1 fi fi fi