From 441b4f8c25a7f8c3166686716cdfb0f49f2ff14e Mon Sep 17 00:00:00 2001 From: Martin Kepplinger Date: Thu, 28 Nov 2019 14:15:24 +0100 Subject: [PATCH] x230: add extract.sh for Heads This is what could go to blobs/x230/ in Heads. --- x230/x230_heads_extract_blobs.sh | 127 +++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100755 x230/x230_heads_extract_blobs.sh diff --git a/x230/x230_heads_extract_blobs.sh b/x230/x230_heads_extract_blobs.sh new file mode 100755 index 0000000..65d2704 --- /dev/null +++ b/x230/x230_heads_extract_blobs.sh @@ -0,0 +1,127 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-3.0+ +# Copyright (C) 2019, Martin Kepplinger + +set -e + +cd "$(dirname "$0")" + +IFDTOOL=./util/ifdtool/ifdtool +ME_CLEANER=./util/me_cleaner/me_cleaner.py +have_input_image=0 + +usage() +{ + echo "EXPERIMENTAL" + echo "" + echo "This generates files for building Heads from your original 12M backup:" + echo " (cat bottom.bin top.bin > full_backup_image.rom)" + echo " ifd/me will be shrinked by me_cleaner and unlocked" + echo "" + echo " http://osresearch.net" + echo "" + echo "Usage: $0 -f .rom -i (optional) -m " + echo "" + usage + exit 1 +fi + +if [ ! -e ${IFDTOOL} ] ; then + if [ ! -d util/ifdtool ] ; then + echo "Please specify -i " + exit 1 + fi + make -C util/ifdtool + if [ ! -e ${IFDTOOL} ] ; then + echo "Failed to build ifdtool" + exit 1 + fi +fi +if [ ! -e ${ME_CLEANER} ] ; then + mkdir -p util/me_cleaner + curl -L https://raw.githubusercontent.com/corna/me_cleaner/v1.2/me_cleaner.py -o util/me_cleaner/me_cleaner.py + if [ ! -e ${ME_CLEANER} ] ; then + echo "Failed to download me_cleaner" + exit 1 + fi +fi + +OUTPUT_PATH=output +INPUT_IMAGE_NAME=$(basename "${INPUT_IMAGE_PATH}") +WORK_IMAGE_NAME=${INPUT_IMAGE_NAME%%.*}_prepared.rom + +input_filesize=$(wc -c <"$INPUT_IMAGE_PATH") +reference_filesize=12582912 +if [ ! "$input_filesize" -eq "$reference_filesize" ] ; then + echo "Error: input file must be 12MB of size" + exit 1 +fi + +rm -rf ${OUTPUT_PATH} +mkdir ${OUTPUT_PATH} +cp "${INPUT_IMAGE_PATH}" "${OUTPUT_PATH}/${WORK_IMAGE_NAME}" + +${IFDTOOL} -x "${OUTPUT_PATH}/${WORK_IMAGE_NAME}" +mv flashregion*bin "${OUTPUT_PATH}/" +cp "${OUTPUT_PATH}/flashregion_3_gbe.bin" "${OUTPUT_PATH}/gbe.bin" +rm ${OUTPUT_PATH}/flashregion*bin + +python ${ME_CLEANER} -r -t -d -S -O "${OUTPUT_PATH}/unneeded_cleaned_image.bin" -D "${OUTPUT_PATH}/ifd_shrinked.bin" -M "${OUTPUT_PATH}/me.bin" "${OUTPUT_PATH}/${WORK_IMAGE_NAME}" +rm "${OUTPUT_PATH}/unneeded_cleaned_image.bin" + +${IFDTOOL} -u "${OUTPUT_PATH}/ifd_shrinked.bin" +mv "${OUTPUT_PATH}/ifd_shrinked.bin.new" "${OUTPUT_PATH}/descriptor.bin" +rm "${OUTPUT_PATH}/ifd_shrinked.bin" + +rm "${OUTPUT_PATH}/${WORK_IMAGE_NAME}" + +echo "done. this is what a layout file should look like:" +echo "0x00000000:0x00000fff ifd" +echo "0x00001000:0x00002fff gbe" +echo "0x00003000:0x0001afff me" +echo "0x0001b000:0x00bfffff bios" + +mv ${OUTPUT_PATH}/* . && rm -rf ${OUTPUT_PATH}