OLD | NEW |
---|---|
(Empty) | |
1 #!/bin/bash -x | |
adlr
2010/04/01 02:14:12
take out -x
| |
2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 # | |
6 # Emit scripts to pack and unpack the partitions from a GPT disk image. | |
7 | |
8 # Load common constants. This should be the first executable line. | |
9 # The path to common.sh should be relative to your script's location. | |
10 . "$(dirname "$0")/common.sh" | |
11 | |
12 set -e | |
13 | |
14 # Usage | |
15 IMAGE=${1:-} | |
16 DIR=${2:-} | |
17 if [[ -z "$IMAGE" || -z "$DIR" ]]; then | |
18 echo "Usage: $0 GPT_DEVICE DIRECTORY" 1>&2 | |
19 exit 1 | |
20 fi | |
21 | |
22 # We need to locate the gpt tool. It should already be installed in the build | |
adlr
2010/04/01 02:14:12
can you just include chromeos-common.sh to get thi
| |
23 # chroot, but some of these functions may be invoked outside the chroot (by | |
24 # image_to_usb or similar), so we need to find it. | |
25 GPT=$(which gpt 2>/dev/null) || /bin/true | |
26 if [ -z "$GPT" ]; then | |
27 if [ -x "${DEFAULT_CHROOT_DIR:-}/usr/bin/gpt" ]; then | |
28 GPT="${DEFAULT_CHROOT_DIR:-}/usr/bin/gpt" | |
29 else | |
30 echo "can't find gpt tool" 1>&2 | |
31 exit 1 | |
32 fi | |
33 fi | |
34 | |
35 PACK="${DIR}/pack_partitions.sh" | |
36 UNPACK="${DIR}/unpack_partitions.sh" | |
37 | |
38 TMP=$(mktemp) | |
39 sudo $GPT -r show -l "$IMAGE" > $TMP | |
40 | |
41 HEADER='#!/bin/sh -eu | |
42 # generated file. do not edit. | |
adlr
2010/04/01 02:14:12
perhaps say, "File generated by emit_gpt_scripts.s
| |
43 TARGET=${1:-} | |
44 if [[ -z "$TARGET" ]]; then | |
45 echo "Usage: $0 DEVICE" 1>&2 | |
46 exit 1 | |
47 fi | |
48 set -x' | |
49 | |
50 echo "$HEADER" > "$PACK" | |
51 echo "$HEADER" > "$UNPACK" | |
52 cat $TMP | sed -e 's/^/# /' >> "$PACK" | |
53 cat $TMP | sed -e 's/^/# /' >> "$UNPACK" | |
54 | |
55 sort -n -k 3 $TMP | \ | |
56 grep 'GPT part -' | \ | |
57 while read start size part x x x label x; do \ | |
58 file="part_$part" | |
59 loc="\"\$TARGET\"" | |
60 echo "sudo dd if=$loc of=$file bs=512 skip=$start count=$size" \ | |
61 >> "$UNPACK" | |
62 echo "sudo dd if=$file of=$loc bs=512 seek=$start count=$size conv=notrunc" \ | |
adlr
2010/04/01 02:14:12
80 cols
| |
63 >> "$PACK" | |
64 done | |
65 | |
66 chmod +x "$PACK" "$UNPACK" | |
67 | |
68 rm $TMP | |
OLD | NEW |