summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-12-22 06:34:14 +0000
committerLeah Rowe <leah@libreboot.org>2023-12-22 06:34:14 +0000
commit8a87572227f25d5f7bafcfcf01bc69da027b402b (patch)
treea1e007a8403fc0e1cdd4a24379be90e50f7376e3
parent12e644b303334d169b1af4adbf6b56a7a1d8e3b9 (diff)
mrc.sh: general code cleanup
Signed-off-by: Leah Rowe <leah@libreboot.org>
-rwxr-xr-xinclude/mrc.sh28
1 files changed, 8 insertions, 20 deletions
diff --git a/include/mrc.sh b/include/mrc.sh
index 9cb64e69..11b1abb2 100755
--- a/include/mrc.sh
+++ b/include/mrc.sh
@@ -4,7 +4,7 @@
# Modifications in this version are Copyright 2021 and 2023 Leah Rowe.
# Original copyright detailed in repo: https://review.coreboot.org/coreboot/
-eval "$(setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board ROOTFS SHELLBALL)"
+eval "$(setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board SHELLBALL)"
extract_mrc()
{
@@ -12,13 +12,13 @@ extract_mrc()
[ -z "${CONFIG_MRC_FILE}" ] && \
err "extract_mrc $MRC_hash: CONFIG_MRC_FILE not set"
- ROOTFS="root-a.ext2"
SHELLBALL="chromeos-firmwareupdate-${MRC_board}"
(
x_ cd "${appdir}"
- extract_partition
- extract_shellball
+ extract_partition "${MRC_url##*/}"
+ printf "cd /usr/sbin\ndump chromeos-firmwareupdate ${SHELLBALL}\nquit" \
+ | debugfs "root-a.ext2" || err "extract_mrc: can't extract shellball"
extract_archive "${SHELLBALL}" .
) || err "mrc download/extract failure"
@@ -28,26 +28,14 @@ extract_mrc()
extract_partition()
{
- NAME="ROOT-A"
- FILE="${MRC_url##*/}"
- FILE="${FILE%.zip}"
- _bs=1024
-
printf "Extracting ROOT-A partition\n"
ROOTP=$( printf "unit\nB\nprint\nquit\n" | \
- parted "${FILE}" 2>/dev/null | grep "${NAME}" )
+ parted "${1%.zip}" 2>/dev/null | grep "ROOT-A" )
START=$(( $( echo ${ROOTP} | cut -f2 -d\ | tr -d "B" ) ))
SIZE=$(( $( echo ${ROOTP} | cut -f4 -d\ | tr -d "B" ) ))
- dd if="${FILE}" of="${ROOTFS}" bs=${_bs} \
- skip=$(( ${START} / ${_bs} )) count=$(( ${SIZE} / ${_bs} )) || \
- err "extract_partition, dd ${FILE}, ${ROOTFS}"
-}
-
-extract_shellball()
-{
- printf "Extracting chromeos-firmwareupdate\n"
- printf "cd /usr/sbin\ndump chromeos-firmwareupdate ${SHELLBALL}\nquit" \
- | debugfs "${ROOTFS}" || err "extract_shellball: debugfs"
+ dd if="${1%.zip}" of="root-a.ext2" bs=1024 \
+ skip=$(( ${START} / 1024 )) count=$(( ${SIZE} / 1024 )) || \
+ err "extract_partition, dd ${1%.zip}, root-a.ext2"
}