diff options
Diffstat (limited to 'resources/scripts/blobs/extract')
-rwxr-xr-x | resources/scripts/blobs/extract | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/resources/scripts/blobs/extract b/resources/scripts/blobs/extract deleted file mode 100755 index 8e9c74ed..00000000 --- a/resources/scripts/blobs/extract +++ /dev/null @@ -1,150 +0,0 @@ -#!/usr/bin/env bash -# script to automate extracting blobs from an existing vendor bios - -# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com> -# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org> -# SPDX-License-Identifier: GPL-3.0-only - -sname="" -board="" -vendor_rom="" - -cbdir="coreboot/default" -cbcfgsdir="resources/coreboot" -ifdtool="${cbdir}/util/ifdtool/ifdtool" -mecleaner="me_cleaner/me_cleaner.py" -me7updateparser="resources/blobs/me7_update_parser.py" - -boarddir="" - -CONFIG_HAVE_MRC="" -CONFIG_ME_BIN_PATH="" -CONFIG_GBE_BIN_PATH="" -CONFIG_IFD_BIN_PATH="" - -_me_destination="" -_gbe_destination="" -_ifd_destination="" - -main() -{ - sname=${0} - if [ $# -lt 2 ]; then - fail "Missing arguments (less than two)." - fi - - board="${1}" - vendor_rom="${2}" - - boarddir="${cbcfgsdir}/${board}" - - check_board - build_dependencies - extract_blobs -} - -check_board() -{ - if [ ! -f "${vendor_rom}" ] ; then - fail "file does not exist: ${vendor_rom}" - elif [ ! -d "${boarddir}" ]; then - fail "build/roms ${board}: target not defined" - elif [ ! -f "${boarddir}/board.cfg" ]; then - fail "build/roms ${board}: missing board.cfg" - fi -} - -build_dependencies() -{ - if [ ! -d me_cleaner ]; then - printf "downloading me_cleaner\n" - ./download me_cleaner || fail 'could not download me_cleaner' - else - printf "me_cleaner already downloaded. Skipping.\n" - printf "run ./download me_cleaner to manually overwrite\n" - fi - - if [ ! -d ${cbdir} ]; then - printf "downloading coreboot\n" - ./download coreboot default \ - || fail "could not download coreboot" - else - printf "coreboot already downloaded. Skipping.\n" - printf "run ./download coreboot to manually overwrite\n" - fi - - if ! [ -f ${ifdtool} ]; then - printf "building ifdtool from coreboot\n" - make -C "${ifdtool%/ifdtool}" \ - || fail "could not build ifdtool" - fi -} - -extract_blobs() -{ - printf "extracting blobs for %s from %s\n" ${board} ${vendor_rom} - - set -- "${boarddir}/config/"* - . ${1} 2>/dev/null - . "${boarddir}/board.cfg" - - if [ "$CONFIG_HAVE_MRC" = "y" ]; then - printf 'haswell board detected, downloading mrc\n' - ./download mrc || fail "could not download mrc" - fi - - _me_destination=${CONFIG_ME_BIN_PATH#../../} - _gbe_destination=${CONFIG_GBE_BIN_PATH#../../} - _ifd_destination=${CONFIG_IFD_BIN_PATH#../../} - - extract_blob_intel_me - extract_blob_intel_gbe_nvm - - # Cleans up other files extracted with ifdtool - rm -f flashregion*.bin 2> /dev/null - - if [ -f ${_ifd_destination} ]; then - printf "gbe, ifd, and me extracted to %s\n" \ - ${_me_destination%/*} - else - printf "WARNING: Intel firmware descriptor could not " - printf "be extracted with modified me\n" - fi -} - -extract_blob_intel_me() -{ - printf "extracting clean ime and modified ifd\n" - - ${mecleaner} -D ${_ifd_destination} \ - -M ${_me_destination} ${vendor_rom} -t -r -S \ - || ${me7updateparser} \ - -O ${_me_destination} ${vendor_rom} \ - || fail \ - "me_cleaner failed to extract blobs from rom" -} - -extract_blob_intel_gbe_nvm() -{ - printf "extracting gigabit ethernet firmware" - ./${ifdtool} -x ${vendor_rom} - mv flashregion*gbe.bin ${_gbe_destination} \ - || fail 'could not extract gbe' -} - -fail() -{ - print_help - - printf "\n%s: ERROR: %s\n" ${sname} $@ - exit 1 -} - -print_help() -{ - printf "Usage: ./blobutil extract {boardname} {path/to/vendor_rom}\n" - printf "Example: ./blobutil extract x230 12mb_flash.bin\n" - printf "\nYou need to specify exactly 2 arguments\n" -} - -main $@ |