Index: bin/cros_image_to_usb.sh |
diff --git a/bin/cros_image_to_usb.sh b/bin/cros_image_to_usb.sh |
deleted file mode 100755 |
index e5ef7338136e014232476095a68798ea03cbffd0..0000000000000000000000000000000000000000 |
--- a/bin/cros_image_to_usb.sh |
+++ /dev/null |
@@ -1,236 +0,0 @@ |
-#!/bin/bash |
- |
-# Copyright (c) 2009 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. |
- |
-# Script to convert the output of build_image.sh to a usb image. |
- |
-# Load common constants. This should be the first executable line. |
-# The path to common.sh should be relative to your script's location. |
-. "/usr/lib/crosutils/common.sh" |
- |
-# Load functions and constants for chromeos-install |
-. "/usr/lib/installer/chromeos-common.sh" |
- |
-get_default_board |
- |
-# Flags |
-DEFINE_string board "${DEFAULT_BOARD}" "Board for which the image was built" |
-DEFINE_string from "" \ |
- "Directory containing chromiumos_image.bin" |
-DEFINE_string to "/dev/sdX" "${DEFAULT_TO_HELP}" |
-DEFINE_boolean yes ${FLAGS_FALSE} "Answer yes to all prompts" "y" |
-DEFINE_boolean force_copy ${FLAGS_FALSE} "Always rebuild test image" |
-DEFINE_boolean force_non_usb ${FLAGS_FALSE} \ |
- "Write out image even if target (--to) doesn't look like a USB disk" |
-DEFINE_boolean factory_install ${FLAGS_FALSE} \ |
- "Whether to generate a factory install shim." |
-DEFINE_boolean factory ${FLAGS_FALSE} \ |
- "Whether to generate a factory runin image. Implies aututest and test" |
-DEFINE_boolean copy_kernel ${FLAGS_FALSE} \ |
- "Copy the kernel to the fourth partition." |
-DEFINE_boolean test_image "${FLAGS_FALSE}" \ |
- "Copies normal image to chromiumos_test_image.bin, modifies it for test." |
-DEFINE_string image_name "chromiumos_image.bin" \ |
- "Base name of the image" i |
-DEFINE_string build_root "/build" \ |
- "The root location for board sysroots." |
- |
-# Parse command line |
-FLAGS "$@" || exit 1 |
-eval set -- "${FLAGS_ARGV}" |
- |
-if [ ${FLAGS_factory} -eq ${FLAGS_TRUE} ] ; then |
- if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ] ; then |
- echo "Factory test image is incompatible with factory install shim." |
- exit 1 |
- fi |
-fi |
- |
-# Require autotest for manucaturing image. |
-if [ ${FLAGS_factory} -eq ${FLAGS_TRUE} ] ; then |
- echo "Factory image requires --test_image, setting." |
- FLAGS_test_image=${FLAGS_TRUE} |
-fi |
- |
-# Require test for for factory install shim. |
-if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ] ; then |
- echo "Factory install shim requires --test_image, setting." |
- FLAGS_test_image=${FLAGS_TRUE} |
-fi |
- |
- |
-# Die on any errors. |
-set -e |
- |
-# No board, no default and no image set then we can't find the image |
-if [ -z ${FLAGS_from} ] && [ -z ${FLAGS_board} ] ; then |
- setup_board_warning |
- exit 1 |
-fi |
- |
-# We have a board name but no image set. Use image at default location |
-if [ -z "${FLAGS_from}" ]; then |
- IMAGES_DIR="${DEFAULT_BUILD_ROOT}/images/${FLAGS_board}" |
- FLAGS_from="${IMAGES_DIR}/$(ls -t ${IMAGES_DIR} 2>&-| head -1)" |
-fi |
- |
-if [ ! -d "${FLAGS_from}" ] ; then |
- echo "Cannot find image directory ${FLAGS_from}" |
- exit 1 |
-fi |
- |
-if [ "${FLAGS_to}" == "/dev/sdX" ]; then |
- echo "You must specify a file or device to write to using --to." |
- disks=$(list_usb_disks) |
- if [ -n "$disks" ]; then |
- echo "Available USB disks:" |
- for disk in $disks; do |
- echo " /dev/$disk:" |
- echo " Manufacturer: $(get_disk_info $disk manufacturer)" |
- echo " Product: $(get_disk_info $disk product)" |
- echo " Size: $[$(cat /sys/block/$disk/size) * 512] bytes" |
- done |
- fi |
- exit 1 |
-fi |
- |
-# Convert args to paths. Need eval to un-quote the string so that shell |
-# chars like ~ are processed; just doing FOO=`readlink -f ${FOO}` won't work. |
-FLAGS_from=`eval readlink -f ${FLAGS_from}` |
-FLAGS_to=`eval readlink -f ${FLAGS_to}` |
- |
-# One last check to make sure user is not shooting themselves in the foot |
-if [ -b "${FLAGS_to}" ]; then |
- if list_usb_disks | grep -q '^'${FLAGS_to##*/}'$'; then |
- disk_manufacturer=$(get_disk_info ${FLAGS_to##*/} manufacturer) |
- disk_product=$(get_disk_info ${FLAGS_to##*/} product) |
- elif [ ${FLAGS_force_non_usb} -ne ${FLAGS_TRUE} ]; then |
- # Safeguard against writing to a real non-USB disk |
- echo "Error: Device ${FLAGS_to} does not appear to be a USB disk!" |
- echo " To override this safeguard, use the --force_non_usb flag" |
- exit 1 |
- fi |
-fi |
- |
-# Use this image as the source image to copy |
-SRC_IMAGE="${FLAGS_from}/${FLAGS_image_name}" |
- |
-STATEFUL_DIR="${FLAGS_from}/stateful_partition" |
-mkdir -p "${STATEFUL_DIR}" |
- |
-function do_cleanup { |
- echo "Cleaning loopback devices: ${STATEFUL_LOOP_DEV}" |
- if [ "${STATEFUL_LOOP_DEV}" != "" ]; then |
- sudo umount "${STATEFUL_DIR}" |
- sudo losetup -d "${STATEFUL_LOOP_DEV}" |
- rmdir "${STATEFUL_DIR}" |
- echo "Cleaned" |
- fi |
-} |
- |
- |
-# If we're asked to modify the image for test, then let's make a copy and |
-# modify that instead. |
-if [ ${FLAGS_test_image} -eq ${FLAGS_TRUE} ] ; then |
- if [ ! -f "${FLAGS_from}/chromiumos_test_image.bin" ] || \ |
- [ ${FLAGS_force_copy} -eq ${FLAGS_TRUE} ] ; then |
- # Copy it. |
- echo "Creating test image from original..." |
- cp -f "${SRC_IMAGE}" "${FLAGS_from}/chromiumos_test_image.bin" |
- |
- # Check for manufacturing image. |
- if [ ${FLAGS_factory} -eq ${FLAGS_TRUE} ] ; then |
- EXTRA_ARGS="--factory" |
- fi |
- |
- # Check for instqall shim. |
- if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ] ; then |
- EXTRA_ARGS="--factory_install" |
- fi |
- |
- # Modify it. Pass --yes so that cros_mod_image_for_test.sh won't ask us if |
- # we really want to modify the image; the user gave their assent already |
- # with --test-image and the original image is going to be preserved. |
- "/usr/bin/cros_mod_image_for_test.sh" --image \ |
- "${FLAGS_from}/chromiumos_test_image.bin" --board=${FLAGS_board} \ |
- ${EXTRA_ARGS} --yes |
- echo "Done with cros_mod_image_for_test." |
- else |
- echo "Using cached test image." |
- fi |
- SRC_IMAGE="${FLAGS_from}/chromiumos_test_image.bin" |
- echo "Source test image is: ${SRC_IMAGE}" |
-fi |
- |
- |
-# Let's do it. |
-if [ -b "${FLAGS_to}" ] |
-then |
- # Output to a block device (i.e., a real USB key), so need sudo dd |
- echo "Copying USB image ${SRC_IMAGE} to device ${FLAGS_to}..." |
- |
- # Warn if it looks like they supplied a partition as the destination. |
- if echo "${FLAGS_to}" | grep -q '[0-9]$'; then |
- drive=$(echo "${FLAGS_to}" | sed -re 's/[0-9]+$//') |
- if [ -b "${drive}" ]; then |
- echo |
- echo "NOTE: It looks like you may have supplied a partition as the " |
- echo "destination. This script needs to write to the drive's device " |
- echo "node instead (i.e. ${drive} rather than ${FLAGS_to})." |
- echo |
- fi |
- fi |
- |
- # Make sure this is really what the user wants, before nuking the device |
- if [ ${FLAGS_yes} -ne ${FLAGS_TRUE} ] |
- then |
- sudo fdisk -l "${FLAGS_to}" 2>/dev/null | grep Disk | head -1 |
- [ -n "$disk_manufacturer" ] && echo "Manufacturer: $disk_manufacturer" |
- [ -n "$disk_product" ] && echo "Product: $disk_product" |
- echo "This will erase all data on this device:" |
- read -p "Are you sure (y/N)? " SURE |
- SURE="${SURE:0:1}" # Get just the first character |
- if [ "${SURE}" != "y" ] |
- then |
- echo "Ok, better safe than sorry." |
- exit 1 |
- fi |
- fi |
- |
- echo "Attempting to unmount any mounts on the USB device..." |
- for i in $(mount | grep ^"${FLAGS_to}" | awk '{print $1}') |
- do |
- if sudo umount "$i" 2>&1 >/dev/null | grep "not found"; then |
- echo |
- echo "The device you have specified is already mounted at some point " |
- echo "that is not visible from inside the chroot. Please unmount the " |
- echo "device manually from outside the chroot and try again." |
- echo |
- exit 1 |
- fi |
- done |
- sleep 3 |
- |
- echo "Copying ${SRC_IMAGE} to ${FLAGS_to}..." |
- sudo dd if="${SRC_IMAGE}" of="${FLAGS_to}" bs=4M |
- sync |
- |
- echo "Done." |
-else |
- # Output to a file, so just make a copy. |
- echo "Copying ${SRC_IMAGE} to ${FLAGS_to}..." |
- cp -f "${SRC_IMAGE}" "${FLAGS_to}" |
- |
- echo "Done. To copy to a USB drive, outside the chroot, do something like:" |
- echo " sudo dd if=${FLAGS_to} of=/dev/sdX bs=4M" |
- echo "where /dev/sdX is the entire drive." |
- if [ ${INSIDE_CHROOT} -eq 1 ] |
- then |
- example=$(basename "${FLAGS_to}") |
- echo "NOTE: Since you are currently inside the chroot, and you'll need to" |
- echo "run dd outside the chroot, the path to the USB image will be" |
- echo "different (ex: ~/chromeos/trunk/src/build/images/SOME_DIR/$example)." |
- fi |
-fi |