Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: scripts/image_signing/convert_recovery_to_full_ssd.sh

Issue 6909005: Add script to convert a recovery image to a factory-usable SSD image (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/vboot_reference.git@master
Patch Set: Fix ws Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/bin/bash
2
3 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
6
7 # Script to convert a recovery image into an SSD image usable by factory.
8
9 # TODO(gauravsh): crosbug.com/14790 (Merge this with
10 # convert_recovery_to_ssd.sh)
11
12 # Load common constants and variables.
13 . "$(dirname "$0")/common_minimal.sh"
14
15 usage() {
16 cat <<EOF
17 Usage: $PROG <signed_recovery_image> <original_image_zip> <output_ssd_image>
18
19 Converts <signed_recovery_image> into a full SSD image usable by factory. Uses
20 stateful partition from SSD image <original_image_zip>.
21 EOF
22 }
23
24 if [ $# -ne 3 ]; then
25 usage
26 exit 1
27 fi
28
29 type -P cgpt &>/dev/null ||
30 { echo "cgpt tool must be in the path"; exit 1; }
31
32 # Abort on errors.
33 set -e
34
35 RECOVERY_IMAGE=$1
36 IMAGE_ZIP=$2
37 SSD_IMAGE=$3
38
39 work_dir=$(make_temp_dir)
40
41 echo "Extracting original SSD image."
42 unzip -o $IMAGE_ZIP chromiumos_base_image.bin -d ${work_dir}
43
44 mv ${work_dir}/chromiumos_base_image.bin ${SSD_IMAGE}
45
46 kerna_offset=$(partoffset ${RECOVERY_IMAGE} 2)
47 kernb_offset=$(partoffset ${RECOVERY_IMAGE} 4)
48 # Kernel partition sizes should be the same.
49 kern_size=$(partsize ${RECOVERY_IMAGE} 2)
50
51 rootfs=$(make_temp_file)
52 echo "Replacing RootFS on the SSD with that of the RECOVERY image"
53 extract_image_partition ${RECOVERY_IMAGE} 3 ${rootfs}
54 replace_image_partition ${SSD_IMAGE} 3 ${rootfs}
55
56 kerna=$(make_temp_file)
57 echo "Replacing KernelA on the SSD with that of the RECOVERY image"
58 extract_image_partition ${RECOVERY_IMAGE} 4 ${kerna}
59 replace_image_partition ${SSD_IMAGE} 2 ${kerna}
60
61 # Overwrite the kernel vblock on the created SSD image.
62 stateful_dir=$(make_temp_dir)
63 tmp_vblock=$(make_temp_file)
64 mount_image_partition_ro ${RECOVERY_IMAGE} 1 ${stateful_dir}
65 sudo cp ${stateful_dir}/vmlinuz_hd.vblock ${tmp_vblock}
66 echo "Overwriting kernel vblock with SSD kernel vblock"
67 sudo dd if=${tmp_vblock} of=${SSD_IMAGE} seek=${kerna_offset} bs=512 \
68 conv=notrunc
69 sudo umount -d ${stateful_dir}
70
71 # Zero out Kernel B partition.
72 echo "Zeroing out Kernel partition B"
73 sudo dd if=/dev/zero of=${SSD_IMAGE} seek=${kernb_offset} bs=512 \
74 count=${kern_size} conv=notrunc
75 echo "${RECOVERY_IMAGE} was converted to a factory SSD image: ${SSD_IMAGE}"
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698