summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@chromium.org>2017-05-06 04:07:47 -0400
committerchrome-bot <chrome-bot@chromium.org>2018-07-27 12:12:53 -0700
commit12ec907a195a9fc59f00a4fba8ffd791bed4742f (patch)
tree40ef5fbf34b5f38e819dc1587a4ff75216746b9e
parent20be1cd50b8ff2a49c069c6884cebe07835d36ae (diff)
downloadvboot-12ec907a195a9fc59f00a4fba8ffd791bed4742f.tar.gz
image_signing: strip_boot: support device node inputs
To speed things up, support stripping /boot from a rootfs block device. This way we can mount an image via loopback and pass that in directly. BRANCH=None BUG=chromium:714598 TEST=strip_boot_from_image.sh on image files works, and on loopback partitions Change-Id: Ie74d3f239ac29533f4325d0c1f75e3cce5fab7a5 Reviewed-on: https://chromium-review.googlesource.com/1152075 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: David Riley <davidriley@chromium.org> Reviewed-by: Chris Ching <chingcodes@chromium.org>
-rwxr-xr-xscripts/image_signing/sign_official_build.sh3
-rwxr-xr-xscripts/image_signing/strip_boot_from_image.sh22
2 files changed, 15 insertions, 10 deletions
diff --git a/scripts/image_signing/sign_official_build.sh b/scripts/image_signing/sign_official_build.sh
index 813a0210..8e9537d5 100755
--- a/scripts/image_signing/sign_official_build.sh
+++ b/scripts/image_signing/sign_official_build.sh
@@ -1023,6 +1023,7 @@ sign_image_file() {
local loopdev=$(loopback_partscan "${output}")
local loop_kern="${loopdev}p${dm_partno}"
+ local loop_rootfs="${loopdev}p3"
resign_firmware_payload "${loopdev}"
resign_android_image_if_exists "${loopdev}"
@@ -1039,7 +1040,7 @@ sign_image_file() {
if [[ "${image_type}" != "factory_install" &&
" ${kerna_config} " != *" cros_legacy "* &&
" ${kerna_config} " != *" cros_efi "* ]]; then
- "${SCRIPT_DIR}/strip_boot_from_image.sh" --image "${output}"
+ "${SCRIPT_DIR}/strip_boot_from_image.sh" --image "${loop_rootfs}"
fi
update_rootfs_hash "${loopdev}" "${loop_kern}" \
"${kernA_keyblock}" "${kernA_privkey}" \
diff --git a/scripts/image_signing/strip_boot_from_image.sh b/scripts/image_signing/strip_boot_from_image.sh
index 2ff85e0a..1427d464 100755
--- a/scripts/image_signing/strip_boot_from_image.sh
+++ b/scripts/image_signing/strip_boot_from_image.sh
@@ -13,7 +13,7 @@
load_shflags
DEFINE_string image "chromiumos_image.bin" \
- "Input file name of Chrome OS image to strip /boot from."
+ "Input file name of Chrome OS image to strip /boot from, or path to rootfs."
# Parse command line.
FLAGS "$@" || exit 1
@@ -22,10 +22,6 @@ eval set -- "${FLAGS_ARGV}"
# Abort on error.
set -e
-if [ -z "${FLAGS_image}" ] || [ ! -s "${FLAGS_image}" ] ; then
- die "Error: need a valid file by --image"
-fi
-
# Swiped/modifed from $SRC/src/scripts/base_library/base_image_util.sh.
zero_free_space() {
local rootfs="$1"
@@ -38,9 +34,15 @@ zero_free_space() {
strip_boot() {
local image=$1
- # Mount image so we can modify it.
local rootfs_dir=$(make_temp_dir)
- mount_image_partition ${image} 3 ${rootfs_dir}
+ if [[ -b "${image}" ]]; then
+ enable_rw_mount "${image}"
+ sudo mount "${image}" "${rootfs_dir}"
+ tag_as_needs_to_be_resigned "${rootfs_dir}"
+ else
+ # Mount image so we can modify it.
+ mount_image_partition ${image} 3 ${rootfs_dir}
+ fi
sudo rm -rf "${rootfs_dir}/boot" &&
info "/boot directory was removed."
@@ -52,9 +54,11 @@ strip_boot() {
zero_free_space "${rootfs_dir}"
}
-
IMAGE=$(readlink -f "${FLAGS_image}")
-if [[ -z "${IMAGE}" || ! -f "${IMAGE}" ]]; then
+if [[ ! -f "${IMAGE}" && ! -b "${IMAGE}" ]]; then
+ IMAGE=
+fi
+if [[ -z "${IMAGE}" ]]; then
die "Missing required argument: --from (image to update)"
fi