#!/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 if [[ ! -f "$1/mrc.bin" ]]; then pushd "${COREBOOT_DIR}" # https://doc.coreboot.org/northbridge/intel/haswell/mrc.bin.html#obtaining-mrc-bin make -C util/cbfstool cd util/chromeos ./crosfirmware.sh peppy ../cbfstool/cbfstool coreboot-*.bin extract -f mrc.bin -n mrc.bin -r RO_SECTION popd mv "${COREBOOT_DIR}/util/chromeos/mrc.bin" "$1/mrc.bin" fi if ! echo "${MRC_BIN_HASH} $1/mrc.bin" | sha256sum --check; then echo "ERROR: SHA256 checksum for mrc.bin doesn't match." exit 1 fi fi fi