blobutil: support extracting ME from full ROMs
In cases where the vendor update file contains a full ROM image encompassing IFD+GbE+ME+BIOS, blobutil was saving the *entire* ROM containing those, as me.bin. For example, if it's an 8MB ROM, blobutil would create a me.bin file that is actually the whole ROM containing: * Vendor IFD region * Vendor GbE(if it has one) * Vendor ME region * Vendor BIOS region This fix tries with -M and -O first. In this combination, me_cleaner shall extract me.bin (neutered) and save it. If that fails, then the normal method with just -O is tried, which by this logic would always be a lone ME image if it succeeds. I tested downloading ME images on existing boards with this, and it didn't break them, and this fixes the bug. This is done for HP 8200 SFF which Riku_V is adding to lbmk. I'm on IRC with Riku_V as I write this commit message! Super hot hotfix patch.fsdg20230625
parent
9df1a1774f
commit
668de6d81f
|
@ -186,6 +186,9 @@ Bruteforce_extract_me() {
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
sdir="$(mktemp -d)"
|
||||||
|
mkdir -p "${sdir}" || return 1
|
||||||
|
|
||||||
(
|
(
|
||||||
printf "Entering %s\n" "${cdir}"
|
printf "Entering %s\n" "${cdir}"
|
||||||
cd "${cdir}" || exit 1
|
cd "${cdir}" || exit 1
|
||||||
|
@ -197,6 +200,8 @@ Bruteforce_extract_me() {
|
||||||
# symlinks are a security risk, in this context
|
# symlinks are a security risk, in this context
|
||||||
continue
|
continue
|
||||||
elif [ -f "${i}" ]; then
|
elif [ -f "${i}" ]; then
|
||||||
|
"${mecleaner}" -r -t -O "${sdir}/vendorfile" -M "${_me_destination}" "${i}" \
|
||||||
|
&& break # (we found me.bin)
|
||||||
"${mecleaner}" -r -t -O "${_me_destination}" "${i}" \
|
"${mecleaner}" -r -t -O "${_me_destination}" "${i}" \
|
||||||
&& break # (we found me.bin)
|
&& break # (we found me.bin)
|
||||||
"${me7updateparser}" -O ${_me_destination} "${i}" \
|
"${me7updateparser}" -O ${_me_destination} "${i}" \
|
||||||
|
@ -215,6 +220,9 @@ Bruteforce_extract_me() {
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
)
|
)
|
||||||
|
|
||||||
|
rm -Rf "${sdir}"
|
||||||
|
|
||||||
if [ ! -f "${_me_destination}" ]; then
|
if [ ! -f "${_me_destination}" ]; then
|
||||||
printf "me.bin not found in vendor update for board: %s\n" ${board}
|
printf "me.bin not found in vendor update for board: %s\n" ${board}
|
||||||
return 1
|
return 1
|
||||||
|
|
Loading…
Reference in New Issue