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 $@ | 
