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

Unified Diff: src/scripts/mount_gpt_image.sh

Issue 1648018: New helper script to mount (and umount) gpt image into image_dir/rootfs and mount /var, /usr/local (Closed)
Patch Set: nit Created 10 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/scripts/prep_usb.sh » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/scripts/mount_gpt_image.sh
diff --git a/src/scripts/mount_gpt_image.sh b/src/scripts/mount_gpt_image.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7d59ef4496a01b3e4f54361bf2a17a6d370174f0
--- /dev/null
+++ b/src/scripts/mount_gpt_image.sh
@@ -0,0 +1,100 @@
+#!/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.
+
+# Helper script that mounts chromium os image from a device or directory
+# and creates mount points for /var and /usr/local (if in dev_mode).
+
+. "$(dirname "$0")/common.sh"
+
+get_default_board
+
+# Flags.
+DEFINE_string board "$DEFAULT_BOARD" \
+ "The board for which the image was built." b
+DEFINE_boolean unmount $FLAGS_FALSE \
+ "Unmount previously mounted dir." u
+DEFINE_string from "/dev/sdc" \
+ "Directory containing image or device with image on it" f
+DEFINE_boolean test $FLAGS_FALSE "Use chromiumos_test_image.bin" t
+DEFINE_string "rootfs_mountpt" "/tmp/m" "Mount point for rootfs" "r"
+DEFINE_string "stateful_mountpt" "/tmp/s" \
+ "Mount point for stateful partition" "s"
+DEFINE_boolean most_recent ${FLAGS_FALSE} "Use the most recent image dir" m
+
+# Parse flags
+FLAGS "$@" || exit 1
+eval set -- "${FLAGS_ARGV}"
+
+# Die on error
+set -e
+
+# Common umounts for either a device or directory
+function unmount_common() {
+ echo "Unmounting image from ${FLAGS_stateful_mountpt}" \
+ "and ${FLAGS_rootfs_mountpt}"
+ # Don't die on error to force cleanup
+ set +e
+ if [ -e "${FLAGS_rootfs_mountpt}/root/.dev_mode" ] ; then
+ sudo umount "${FLAGS_rootfs_mountpt}/usr/local"
+ fi
+ sudo umount "${FLAGS_rootfs_mountpt}/var"
+ sudo umount -d "${FLAGS_stateful_mountpt}"
+ sudo umount -d "${FLAGS_rootfs_mountpt}"
+ set -e
+}
+
+# Sets up the rootfs and stateful partitions specified by
+# ${FLAGS_from}${prefix}[31] to the given mount points and sets up var and
+# usr/local
+# ${1} - prefix name for the partition
+# ${2} - extra mount options for the partitions
+function mount_common() {
+ mkdir -p "${FLAGS_rootfs_mountpt}"
+ mkdir -p "${FLAGS_stateful_mountpt}"
+ sudo mount ${2} "${FLAGS_from}${1}3" "${FLAGS_rootfs_mountpt}"
+ sudo mount ${2} "${FLAGS_from}${1}1" "${FLAGS_stateful_mountpt}"
+ sudo mount --bind "${FLAGS_stateful_mountpt}/var" \
+ "${FLAGS_rootfs_mountpt}/var"
+ if [ -e "${FLAGS_rootfs_mountpt}/root/.dev_mode" ] ; then
+ sudo mount --bind "${FLAGS_stateful_mountpt}/dev_image" \
+ "${FLAGS_rootfs_mountpt}/usr/local"
+ fi
+ echo "Root FS specified by "${FLAGS_from}${1}3" mounted at"\
+ "${FLAGS_rootfs_mountpt} successfully."
+}
+
+# Find the last image built on the board
+if [ ${FLAGS_most_recent} -eq ${FLAGS_TRUE} ] ; then
+ IMAGES_DIR="${DEFAULT_BUILD_ROOT}/images/${FLAGS_board}"
+ FLAGS_from="${IMAGES_DIR}/$(ls -t ${IMAGES_DIR} 2>&-| head -1)"
+fi
+
+# Turn into absolute path
+FLAGS_from=`eval readlink -f ${FLAGS_from}`
+
+# Set the file name of the image if ${FLAGS_from} is not a device and cd
+if [ -d "${FLAGS_from}" ] ; then
+ cd "${FLAGS_from}"
+ IMAGE_NAME=chromiumos_image.bin
+ [ ${FLAGS_test} -eq ${FLAGS_TRUE} ] && IMAGE_NAME=chromiumos_test_image.bin
+fi
+
+if [ ${FLAGS_unmount} -eq ${FLAGS_TRUE} ] ; then
+ unmount_common
+ if [ -d "${FLAGS_from}" ] ; then
+ echo "Re-packing partitions onto ${FLAGS_from}/${IMAGE_NAME}"
+ ./pack_partitions.sh ${IMAGE_NAME} 2> /dev/null
+ sudo rm part_*
+ fi
+else
+ if [ -b ${FLAGS_from} ] ; then
+ mount_common "" ""
+ else
+ echo "Unpacking partitions from ${FLAGS_from}/${IMAGE_NAME}"
+ ./unpack_partitions.sh ${IMAGE_NAME} 2> /dev/null
+ mount_common "/part_" "-o loop"
+ fi
+fi
« no previous file with comments | « no previous file | src/scripts/prep_usb.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698