| #!/bin/sh |
| # Copyright (c) 2012 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. |
| |
| # This script is automatically generated by @SCRIPT_GENERATOR@. |
| # Do not edit! |
| |
| if ! type numsectors >/dev/null 2>&1; then |
| . "/usr/share/misc/chromeos-common.sh" || exit 1 |
| fi |
| locate_gpt |
| |
| # Usage: create_image <device> <min_disk_size> |
| # If <device> is a block device, wipes out the GPT |
| # If it's not, it creates a new file of the requested size |
| create_image() { |
| local dev="$1" |
| local min_disk_size="$2" |
| |
| if [ -b "${dev}" ]; then |
| # Make sure block size is not greater than 8K. Otherwise the partition |
| # start calculation won't fit. |
| block_size=$(blocksize "${dev}") |
| if [ "${block_size}" -gt 8192 ]; then |
| echo "Destination blocksize too large. Only blocksizes of 8192 bytes and \ |
| smaller are supported." >&2 |
| exit 1 |
| fi |
| |
| # Zap any old partitions (otherwise gpt complains). |
| dd if=/dev/zero of="${dev}" conv=notrunc bs=512 count=64 |
| dd if=/dev/zero of="${dev}" conv=notrunc bs=512 count=64 \ |
| seek=$(( min_disk_size / 512 - 64 )) |
| else |
| if [ ! -e "${dev}" ]; then |
| # Align to 512 bytes |
| min_disk_size=$(( (min_disk_size + 511) & ~511 )) |
| truncate -s "${min_disk_size}" "${dev}" |
| fi |
| fi |
| } |
| |