#!/bin/bash # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # # Emit scripts to pack and unpack the partitions from a GPT disk image. SCRIPT_ROOT=$(readlink -f $(dirname "$0")/..) . "${SCRIPT_ROOT}/common.sh" || exit 1 # We're invoked only by build_image, which runs in the chroot assert_inside_chroot INSTALLER_ROOT=/usr/lib/installer . "${INSTALLER_ROOT}/chromeos-common.sh" || exit 1 locate_gpt set -e # Usage IMAGE=${1:-} DIR=${2:-} if [[ -z "$IMAGE" || -z "$DIR" ]]; then echo "Usage: $0 GPT_DEVICE DIRECTORY" 1>&2 exit 1 fi PACK="${DIR}/pack_partitions.sh" UNPACK="${DIR}/unpack_partitions.sh" TMP=$(mktemp) $GPT show "$IMAGE" > $TMP HEADER='#!/bin/bash -eu # File generated by emit_gpt_scripts.sh. Do not edit. TARGET=${1:-} if [[ -z "$TARGET" ]]; then echo "Usage: $0 DEVICE" 1>&2 exit 1 fi set -x' echo "$HEADER" > "$PACK" echo "$HEADER" > "$UNPACK" cat $TMP | sed -e 's/^/# /' >> "$PACK" cat $TMP | sed -e 's/^/# /' >> "$UNPACK" $GPT show -q "$IMAGE" | \ while read start size part x; do \ file="part_$part" loc="\"\$TARGET\"" echo "dd if=$loc of=$file bs=512 skip=$start count=$size" \ >> "$UNPACK" echo \ "dd if=$file of=$loc bs=512 seek=$start count=$size conv=notrunc" \ >> "$PACK" done chmod +x "$PACK" "$UNPACK" rm $TMP