#!/bin/bash # Copyright (c) 2010 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. # Load common constants. This should be the first executable line. # The path to common.sh should be relative to your script's location. . "$(dirname "$0")/common.sh" . "$(dirname "$0")/chromeos-common.sh" 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" locate_gpt 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