From 12ec907a195a9fc59f00a4fba8ffd791bed4742f Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 6 May 2017 04:07:47 -0400 Subject: 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 Tested-by: Mike Frysinger Reviewed-by: David Riley Reviewed-by: Chris Ching --- scripts/image_signing/sign_official_build.sh | 3 ++- scripts/image_signing/strip_boot_from_image.sh | 22 +++++++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) (limited to 'scripts') 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 -- cgit v1.2.1