mirror of
https://github.com/linuxboot/heads.git
synced 2024-12-28 00:38:53 +00:00
63eab714e5
Because we're using pushd/popd to make the Coreboot util invocation cleaner, we need to use realpath so that the scripts will work with any user input.
46 lines
1.2 KiB
Bash
Executable File
46 lines
1.2 KiB
Bash
Executable File
#!/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
|