summaryrefslogtreecommitdiff
path: root/include/vendor.sh
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2024-09-24 16:47:21 +0100
committerLeah Rowe <leah@libreboot.org>2024-09-24 16:53:48 +0100
commite7c0109f5d97eb8eeaa2e2404be6bea2c56f1e0d (patch)
tree8ed34b18a54222e4c781ba7e3e1d36e3fdbc5361 /include/vendor.sh
parent0266a4891328c22050e09f41d79fac5ef161efca (diff)
Add deguard logic for Dell OptiPlex 3050 Micro
Copy the downloaded deguard source code into appdir, and patch it to run as part of lbmk, instead of standalone. The archived one in src/ is not directly used; instead, the hotpatched version is used. This is because the standalone version already has download logic for the .zip file, but we already cache that file in cache/ and use that. Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'include/vendor.sh')
-rw-r--r--include/vendor.sh33
1 files changed, 32 insertions, 1 deletions
diff --git a/include/vendor.sh b/include/vendor.sh
index 03c7ad7d..c5b6560d 100644
--- a/include/vendor.sh
+++ b/include/vendor.sh
@@ -23,7 +23,7 @@ eval `setvars "" EC_url_bkup EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \
E6400_VGA_romname SCH5545EC_DL_url_bkup SCH5545EC_DL_hash _dest tree \
mecleaner kbc1126_ec_dump MRC_refcode_cbtree new_mac _dl SCH5545EC_DL_url \
archive EC_url boarddir rom cbdir DL_url nukemode cbfstoolref vrelease \
- verify _7ztest $cv`
+ verify _7ztest ME_bootguard $cv`
vendor_download()
{
@@ -107,6 +107,14 @@ extract_intel_me()
e "$mecleaner" f not && $err "$cbdir: me_cleaner missing"
_me="$PWD/$_dest"; cdir="$PWD/$appdir"
+ if [ "$ME_bootguard" = "me11disreguard" ]; then
+ # run mkukri's util to extract me.bin and disable bootguard
+ # for Dell OptiPlex 3050 Micro, using the deguard util.
+ extract_deguard_me "$cdir" "$_me"
+ return 0
+ fi
+ # All other ME setups are extracted with brute force and me_cleaner:
+
[ $# -gt 0 ] && _me="${1}" && cdir="$2"
e "$_me" f && return 0
@@ -141,6 +149,29 @@ extract_intel_me()
rm -Rf "$sdir" || $err "extract_intel_me: !rm -Rf $sdir"
}
+extract_deguard_me()
+{
+ x_ ./mk -f deguard
+ cp -R src/deguard "$1/disreguard" || \
+ $err "Cannot make temporary deguard clone in $1/disreguard"
+ if [ ! -e "$1/disreguard/.git" ]; then
+ git -C "$1/disreguard" init || $err "!init $1/disreguard"
+ git -C "$1/disreguard" add -A . || $err "!add $1/disreguard"
+ git -C "$1/disreguard" commit -m "tmp" || \
+ $err "!commit $1/disreguard"
+ fi
+ git -C "$1/disreguard" am config/data/deguard/appdir.patch || \
+ $err "Cannot temporarily patch deguard clone in $1/disreguard"
+ (
+ cd "$1/disreguard" || $err "Cannot cd to '$1/disreguard'"
+ x_ ./RUNME.sh
+ )
+ "$mecleaner" --whitelist MFS --truncate "$1/disreguard/me.bin" || \
+ $err "extract_intel_me: Can't truncate disreguarded ME"
+ cp "$cdir/disreguard/me.bin" "$2" || \
+ $err "extract_intel_me: Can't move disreguarded me.bin"
+}
+
extract_archive()
{
innoextract "$1" -d "$2" || python "$pfs_extract" "$1" -e || 7z x \